From 4d7d2e76daa9e94a522736176476c22b66f64b37 Mon Sep 17 00:00:00 2001 From: philip Date: Wed, 22 May 2019 10:39:16 +0800 Subject: [PATCH 1/2] commit for removing extra files --- backend-sync.sh | 8 +- bizui/.webpackrc.js | 2 + bizui/package-lock.json | 30429 ---------------- bizui/package.json.back | 105 - bizui/src/axios/config.js | 4 +- bizui/src/axios/tools.js | 19 +- .../AccountingDocument.app.js | 57 +- .../AccountingDocument.associateform.js | 6 +- .../AccountingDocument.associateform.less | 86 - .../AccountingDocument.base.js | 160 +- .../AccountingDocument.createform.js | 6 +- .../AccountingDocument.dashboard.js | 9 +- .../AccountingDocument.model.js | 10 +- .../AccountingDocument.permission.js | 86 + .../AccountingDocument.permission.less | 3 + .../AccountingDocument.preference.js | 8 +- .../AccountingDocument.profile.js | 93 + .../AccountingDocument.profile.less | 3 + .../AccountingDocument.search.js | 14 +- .../AccountingDocument.searchform.js | 38 +- .../AccountingDocument.table.js | 53 +- .../AccountingDocument.updateform.js | 6 +- .../AccountingDocumentAuditing.app.js | 57 +- ...ccountingDocumentAuditing.associateform.js | 8 +- ...ountingDocumentAuditing.associateform.less | 86 - .../AccountingDocumentAuditing.base.js | 130 +- .../AccountingDocumentAuditing.createform.js | 8 +- .../AccountingDocumentAuditing.dashboard.js | 9 +- .../AccountingDocumentAuditing.model.js | 6 +- .../AccountingDocumentAuditing.permission.js | 86 + ...AccountingDocumentAuditing.permission.less | 3 + .../AccountingDocumentAuditing.preference.js | 8 +- .../AccountingDocumentAuditing.profile.js | 93 + .../AccountingDocumentAuditing.profile.less | 3 + .../AccountingDocumentAuditing.search.js | 14 +- .../AccountingDocumentAuditing.searchform.js | 34 +- .../AccountingDocumentAuditing.table.js | 53 +- .../AccountingDocumentAuditing.updateform.js | 8 +- .../AccountingDocumentConfirmation.app.js | 57 +- ...ntingDocumentConfirmation.associateform.js | 8 +- ...ingDocumentConfirmation.associateform.less | 86 - .../AccountingDocumentConfirmation.base.js | 130 +- ...countingDocumentConfirmation.createform.js | 8 +- ...ccountingDocumentConfirmation.dashboard.js | 9 +- .../AccountingDocumentConfirmation.model.js | 6 +- ...countingDocumentConfirmation.permission.js | 86 + ...untingDocumentConfirmation.permission.less | 3 + ...countingDocumentConfirmation.preference.js | 8 +- .../AccountingDocumentConfirmation.profile.js | 93 + ...ccountingDocumentConfirmation.profile.less | 3 + .../AccountingDocumentConfirmation.search.js | 14 +- ...countingDocumentConfirmation.searchform.js | 34 +- .../AccountingDocumentConfirmation.table.js | 53 +- ...countingDocumentConfirmation.updateform.js | 8 +- .../AccountingDocumentCreation.app.js | 57 +- ...ccountingDocumentCreation.associateform.js | 8 +- ...ountingDocumentCreation.associateform.less | 86 - .../AccountingDocumentCreation.base.js | 130 +- .../AccountingDocumentCreation.createform.js | 8 +- .../AccountingDocumentCreation.dashboard.js | 9 +- .../AccountingDocumentCreation.model.js | 6 +- .../AccountingDocumentCreation.permission.js | 86 + ...AccountingDocumentCreation.permission.less | 3 + .../AccountingDocumentCreation.preference.js | 8 +- .../AccountingDocumentCreation.profile.js | 93 + .../AccountingDocumentCreation.profile.less | 3 + .../AccountingDocumentCreation.search.js | 14 +- .../AccountingDocumentCreation.searchform.js | 34 +- .../AccountingDocumentCreation.table.js | 53 +- .../AccountingDocumentCreation.updateform.js | 8 +- .../AccountingDocumentLine.app.js | 57 +- .../AccountingDocumentLine.associateform.js | 10 +- .../AccountingDocumentLine.associateform.less | 86 - .../AccountingDocumentLine.base.js | 151 +- .../AccountingDocumentLine.createform.js | 10 +- .../AccountingDocumentLine.dashboard.js | 9 +- .../AccountingDocumentLine.model.js | 2 +- .../AccountingDocumentLine.permission.js | 87 + .../AccountingDocumentLine.permission.less | 3 + .../AccountingDocumentLine.preference.js | 8 +- .../AccountingDocumentLine.profile.js | 94 + .../AccountingDocumentLine.profile.less | 3 + .../AccountingDocumentLine.search.js | 14 +- .../AccountingDocumentLine.searchform.js | 40 +- .../AccountingDocumentLine.table.js | 53 +- .../AccountingDocumentLine.updateform.js | 10 +- .../AccountingDocumentPosting.app.js | 57 +- ...AccountingDocumentPosting.associateform.js | 8 +- ...countingDocumentPosting.associateform.less | 86 - .../AccountingDocumentPosting.base.js | 130 +- .../AccountingDocumentPosting.createform.js | 8 +- .../AccountingDocumentPosting.dashboard.js | 9 +- .../AccountingDocumentPosting.model.js | 6 +- .../AccountingDocumentPosting.permission.js | 86 + .../AccountingDocumentPosting.permission.less | 3 + .../AccountingDocumentPosting.preference.js | 8 +- .../AccountingDocumentPosting.profile.js | 93 + .../AccountingDocumentPosting.profile.less | 3 + .../AccountingDocumentPosting.search.js | 14 +- .../AccountingDocumentPosting.searchform.js | 34 +- .../AccountingDocumentPosting.table.js | 53 +- .../AccountingDocumentPosting.updateform.js | 8 +- .../AccountingDocumentType.app.js | 57 +- .../AccountingDocumentType.associateform.js | 4 +- .../AccountingDocumentType.associateform.less | 86 - .../AccountingDocumentType.base.js | 135 +- .../AccountingDocumentType.createform.js | 4 +- .../AccountingDocumentType.dashboard.js | 9 +- .../AccountingDocumentType.model.js | 6 +- .../AccountingDocumentType.permission.js | 85 + .../AccountingDocumentType.permission.less | 3 + .../AccountingDocumentType.preference.js | 8 +- .../AccountingDocumentType.profile.js | 92 + .../AccountingDocumentType.profile.less | 3 + .../AccountingDocumentType.search.js | 14 +- .../AccountingDocumentType.searchform.js | 36 +- .../AccountingDocumentType.table.js | 53 +- .../AccountingDocumentType.updateform.js | 6 +- .../accountingperiod/AccountingPeriod.app.js | 57 +- .../AccountingPeriod.associateform.js | 10 +- .../AccountingPeriod.associateform.less | 86 - .../accountingperiod/AccountingPeriod.base.js | 140 +- .../AccountingPeriod.createform.js | 10 +- .../AccountingPeriod.dashboard.js | 9 +- .../AccountingPeriod.model.js | 6 +- .../AccountingPeriod.permission.js | 86 + .../AccountingPeriod.permission.less | 3 + .../AccountingPeriod.preference.js | 8 +- .../AccountingPeriod.profile.js | 93 + .../AccountingPeriod.profile.less | 3 + .../AccountingPeriod.search.js | 14 +- .../AccountingPeriod.searchform.js | 34 +- .../AccountingPeriod.table.js | 53 +- .../AccountingPeriod.updateform.js | 8 +- .../AccountingSubject.app.js | 57 +- .../AccountingSubject.associateform.js | 8 +- .../AccountingSubject.associateform.less | 86 - .../AccountingSubject.base.js | 145 +- .../AccountingSubject.createform.js | 8 +- .../AccountingSubject.dashboard.js | 9 +- .../AccountingSubject.model.js | 6 +- .../AccountingSubject.permission.js | 87 + .../AccountingSubject.permission.less | 3 + .../AccountingSubject.preference.js | 8 +- .../AccountingSubject.profile.js | 94 + .../AccountingSubject.profile.less | 3 + .../AccountingSubject.search.js | 14 +- .../AccountingSubject.searchform.js | 38 +- .../AccountingSubject.table.js | 53 +- .../AccountingSubject.updateform.js | 10 +- .../accountset/AccountSet.app.js | 57 +- .../accountset/AccountSet.associateform.js | 18 +- .../accountset/AccountSet.associateform.less | 86 - .../accountset/AccountSet.base.js | 174 +- .../accountset/AccountSet.createform.js | 18 +- .../accountset/AccountSet.dashboard.js | 9 +- .../accountset/AccountSet.model.js | 14 +- .../accountset/AccountSet.permission.js | 92 + .../accountset/AccountSet.permission.less | 3 + .../accountset/AccountSet.preference.js | 8 +- .../accountset/AccountSet.profile.js | 99 + .../accountset/AccountSet.profile.less | 3 + .../accountset/AccountSet.search.js | 14 +- .../accountset/AccountSet.searchform.js | 50 +- .../accountset/AccountSet.table.js | 53 +- .../accountset/AccountSet.updateform.js | 18 +- .../src/bizcomponents/catalog/Catalog.app.js | 57 +- .../catalog/Catalog.associateform.js | 2 +- .../catalog/Catalog.associateform.less | 86 - .../src/bizcomponents/catalog/Catalog.base.js | 124 +- .../catalog/Catalog.createform.js | 2 +- .../catalog/Catalog.dashboard.js | 9 +- .../bizcomponents/catalog/Catalog.model.js | 6 +- .../catalog/Catalog.permission.js | 84 + .../catalog/Catalog.permission.less | 3 + .../catalog/Catalog.preference.js | 8 +- .../bizcomponents/catalog/Catalog.profile.js | 91 + .../catalog/Catalog.profile.less | 3 + .../bizcomponents/catalog/Catalog.search.js | 14 +- .../catalog/Catalog.searchform.js | 34 +- .../bizcomponents/catalog/Catalog.table.js | 53 +- .../catalog/Catalog.updateform.js | 4 +- .../bizcomponents/cityevent/CityEvent.app.js | 57 +- .../cityevent/CityEvent.associateform.js | 6 +- .../cityevent/CityEvent.associateform.less | 86 - .../bizcomponents/cityevent/CityEvent.base.js | 145 +- .../cityevent/CityEvent.createform.js | 6 +- .../cityevent/CityEvent.dashboard.js | 9 +- .../cityevent/CityEvent.model.js | 6 +- .../cityevent/CityEvent.permission.js | 87 + .../cityevent/CityEvent.permission.less | 3 + .../cityevent/CityEvent.preference.js | 8 +- .../cityevent/CityEvent.profile.js | 94 + .../cityevent/CityEvent.profile.less | 3 + .../cityevent/CityEvent.search.js | 14 +- .../cityevent/CityEvent.searchform.js | 38 +- .../cityevent/CityEvent.table.js | 53 +- .../cityevent/CityEvent.updateform.js | 8 +- .../citypartner/CityPartner.app.js | 57 +- .../citypartner/CityPartner.associateform.js | 6 +- .../CityPartner.associateform.less | 86 - .../citypartner/CityPartner.base.js | 147 +- .../citypartner/CityPartner.createform.js | 6 +- .../citypartner/CityPartner.dashboard.js | 9 +- .../citypartner/CityPartner.model.js | 10 +- .../citypartner/CityPartner.permission.js | 87 + .../citypartner/CityPartner.permission.less | 3 + .../citypartner/CityPartner.preference.js | 8 +- .../citypartner/CityPartner.profile.js | 94 + .../citypartner/CityPartner.profile.less | 3 + .../citypartner/CityPartner.search.js | 14 +- .../citypartner/CityPartner.searchform.js | 38 +- .../citypartner/CityPartner.table.js | 53 +- .../citypartner/CityPartner.updateform.js | 8 +- .../companytraining/CompanyTraining.app.js | 57 +- .../CompanyTraining.associateform.js | 8 +- .../CompanyTraining.associateform.less | 86 - .../companytraining/CompanyTraining.base.js | 155 +- .../CompanyTraining.createform.js | 8 +- .../CompanyTraining.dashboard.js | 9 +- .../companytraining/CompanyTraining.model.js | 6 +- .../CompanyTraining.permission.js | 87 + .../CompanyTraining.permission.less | 3 + .../CompanyTraining.preference.js | 8 +- .../CompanyTraining.profile.js | 94 + .../CompanyTraining.profile.less | 3 + .../companytraining/CompanyTraining.search.js | 14 +- .../CompanyTraining.searchform.js | 38 +- .../companytraining/CompanyTraining.table.js | 53 +- .../CompanyTraining.updateform.js | 8 +- .../consumerorder/ConsumerOrder.app.js | 57 +- .../ConsumerOrder.associateform.js | 2 +- .../ConsumerOrder.associateform.less | 86 - .../consumerorder/ConsumerOrder.base.js | 168 +- .../consumerorder/ConsumerOrder.createform.js | 2 +- .../consumerorder/ConsumerOrder.dashboard.js | 9 +- .../consumerorder/ConsumerOrder.model.js | 22 +- .../consumerorder/ConsumerOrder.permission.js | 86 + .../ConsumerOrder.permission.less | 3 + .../consumerorder/ConsumerOrder.preference.js | 8 +- .../consumerorder/ConsumerOrder.profile.js | 93 + .../consumerorder/ConsumerOrder.profile.less | 3 + .../consumerorder/ConsumerOrder.search.js | 14 +- .../consumerorder/ConsumerOrder.searchform.js | 38 +- .../consumerorder/ConsumerOrder.table.js | 53 +- .../consumerorder/ConsumerOrder.updateform.js | 4 +- .../ConsumerOrderApproval.app.js | 57 +- .../ConsumerOrderApproval.associateform.js | 6 +- .../ConsumerOrderApproval.associateform.less | 86 - .../ConsumerOrderApproval.base.js | 123 +- .../ConsumerOrderApproval.createform.js | 6 +- .../ConsumerOrderApproval.dashboard.js | 9 +- .../ConsumerOrderApproval.model.js | 2 +- .../ConsumerOrderApproval.permission.js | 85 + .../ConsumerOrderApproval.permission.less | 3 + .../ConsumerOrderApproval.preference.js | 8 +- .../ConsumerOrderApproval.profile.js | 92 + .../ConsumerOrderApproval.profile.less | 3 + .../ConsumerOrderApproval.search.js | 14 +- .../ConsumerOrderApproval.searchform.js | 32 +- .../ConsumerOrderApproval.table.js | 53 +- .../ConsumerOrderApproval.updateform.js | 6 +- .../ConsumerOrderConfirmation.app.js | 57 +- ...ConsumerOrderConfirmation.associateform.js | 6 +- ...nsumerOrderConfirmation.associateform.less | 86 - .../ConsumerOrderConfirmation.base.js | 123 +- .../ConsumerOrderConfirmation.createform.js | 6 +- .../ConsumerOrderConfirmation.dashboard.js | 9 +- .../ConsumerOrderConfirmation.model.js | 2 +- .../ConsumerOrderConfirmation.permission.js | 85 + .../ConsumerOrderConfirmation.permission.less | 3 + .../ConsumerOrderConfirmation.preference.js | 8 +- .../ConsumerOrderConfirmation.profile.js | 92 + .../ConsumerOrderConfirmation.profile.less | 3 + .../ConsumerOrderConfirmation.search.js | 14 +- .../ConsumerOrderConfirmation.searchform.js | 32 +- .../ConsumerOrderConfirmation.table.js | 53 +- .../ConsumerOrderConfirmation.updateform.js | 6 +- .../ConsumerOrderDelivery.app.js | 57 +- .../ConsumerOrderDelivery.associateform.js | 6 +- .../ConsumerOrderDelivery.associateform.less | 86 - .../ConsumerOrderDelivery.base.js | 123 +- .../ConsumerOrderDelivery.createform.js | 6 +- .../ConsumerOrderDelivery.dashboard.js | 9 +- .../ConsumerOrderDelivery.model.js | 2 +- .../ConsumerOrderDelivery.permission.js | 85 + .../ConsumerOrderDelivery.permission.less | 3 + .../ConsumerOrderDelivery.preference.js | 8 +- .../ConsumerOrderDelivery.profile.js | 92 + .../ConsumerOrderDelivery.profile.less | 3 + .../ConsumerOrderDelivery.search.js | 14 +- .../ConsumerOrderDelivery.searchform.js | 32 +- .../ConsumerOrderDelivery.table.js | 53 +- .../ConsumerOrderDelivery.updateform.js | 6 +- .../ConsumerOrderLineItem.app.js | 57 +- .../ConsumerOrderLineItem.associateform.js | 16 +- .../ConsumerOrderLineItem.associateform.less | 86 - .../ConsumerOrderLineItem.base.js | 149 +- .../ConsumerOrderLineItem.createform.js | 16 +- .../ConsumerOrderLineItem.dashboard.js | 9 +- .../ConsumerOrderLineItem.model.js | 2 +- .../ConsumerOrderLineItem.permission.js | 89 + .../ConsumerOrderLineItem.permission.less | 3 + .../ConsumerOrderLineItem.preference.js | 8 +- .../ConsumerOrderLineItem.profile.js | 96 + .../ConsumerOrderLineItem.profile.less | 3 + .../ConsumerOrderLineItem.search.js | 14 +- .../ConsumerOrderLineItem.searchform.js | 36 +- .../ConsumerOrderLineItem.table.js | 53 +- .../ConsumerOrderLineItem.updateform.js | 12 +- .../ConsumerOrderPaymentGroup.app.js | 57 +- ...ConsumerOrderPaymentGroup.associateform.js | 4 +- ...nsumerOrderPaymentGroup.associateform.less | 86 - .../ConsumerOrderPaymentGroup.base.js | 133 +- .../ConsumerOrderPaymentGroup.createform.js | 4 +- .../ConsumerOrderPaymentGroup.dashboard.js | 9 +- .../ConsumerOrderPaymentGroup.model.js | 2 +- .../ConsumerOrderPaymentGroup.permission.js | 85 + .../ConsumerOrderPaymentGroup.permission.less | 3 + .../ConsumerOrderPaymentGroup.preference.js | 8 +- .../ConsumerOrderPaymentGroup.profile.js | 92 + .../ConsumerOrderPaymentGroup.profile.less | 3 + .../ConsumerOrderPaymentGroup.search.js | 14 +- .../ConsumerOrderPaymentGroup.searchform.js | 36 +- .../ConsumerOrderPaymentGroup.table.js | 53 +- .../ConsumerOrderPaymentGroup.updateform.js | 6 +- .../ConsumerOrderPriceAdjustment.app.js | 57 +- ...sumerOrderPriceAdjustment.associateform.js | 8 +- ...merOrderPriceAdjustment.associateform.less | 86 - .../ConsumerOrderPriceAdjustment.base.js | 138 +- ...ConsumerOrderPriceAdjustment.createform.js | 8 +- .../ConsumerOrderPriceAdjustment.dashboard.js | 9 +- .../ConsumerOrderPriceAdjustment.model.js | 2 +- ...ConsumerOrderPriceAdjustment.permission.js | 86 + ...nsumerOrderPriceAdjustment.permission.less | 3 + ...ConsumerOrderPriceAdjustment.preference.js | 8 +- .../ConsumerOrderPriceAdjustment.profile.js | 93 + .../ConsumerOrderPriceAdjustment.profile.less | 3 + .../ConsumerOrderPriceAdjustment.search.js | 14 +- ...ConsumerOrderPriceAdjustment.searchform.js | 36 +- .../ConsumerOrderPriceAdjustment.table.js | 53 +- ...ConsumerOrderPriceAdjustment.updateform.js | 8 +- .../ConsumerOrderProcessing.app.js | 57 +- .../ConsumerOrderProcessing.associateform.js | 6 +- ...ConsumerOrderProcessing.associateform.less | 86 - .../ConsumerOrderProcessing.base.js | 123 +- .../ConsumerOrderProcessing.createform.js | 6 +- .../ConsumerOrderProcessing.dashboard.js | 9 +- .../ConsumerOrderProcessing.model.js | 2 +- .../ConsumerOrderProcessing.permission.js | 85 + .../ConsumerOrderProcessing.permission.less | 3 + .../ConsumerOrderProcessing.preference.js | 8 +- .../ConsumerOrderProcessing.profile.js | 92 + .../ConsumerOrderProcessing.profile.less | 3 + .../ConsumerOrderProcessing.search.js | 14 +- .../ConsumerOrderProcessing.searchform.js | 32 +- .../ConsumerOrderProcessing.table.js | 53 +- .../ConsumerOrderProcessing.updateform.js | 6 +- .../ConsumerOrderShipment.app.js | 57 +- .../ConsumerOrderShipment.associateform.js | 6 +- .../ConsumerOrderShipment.associateform.less | 86 - .../ConsumerOrderShipment.base.js | 123 +- .../ConsumerOrderShipment.createform.js | 6 +- .../ConsumerOrderShipment.dashboard.js | 9 +- .../ConsumerOrderShipment.model.js | 2 +- .../ConsumerOrderShipment.permission.js | 85 + .../ConsumerOrderShipment.permission.less | 3 + .../ConsumerOrderShipment.preference.js | 8 +- .../ConsumerOrderShipment.profile.js | 92 + .../ConsumerOrderShipment.profile.less | 3 + .../ConsumerOrderShipment.search.js | 14 +- .../ConsumerOrderShipment.searchform.js | 32 +- .../ConsumerOrderShipment.table.js | 53 +- .../ConsumerOrderShipment.updateform.js | 6 +- .../ConsumerOrderShippingGroup.app.js | 57 +- ...onsumerOrderShippingGroup.associateform.js | 6 +- ...sumerOrderShippingGroup.associateform.less | 86 - .../ConsumerOrderShippingGroup.base.js | 133 +- .../ConsumerOrderShippingGroup.createform.js | 6 +- .../ConsumerOrderShippingGroup.dashboard.js | 9 +- .../ConsumerOrderShippingGroup.model.js | 2 +- .../ConsumerOrderShippingGroup.permission.js | 85 + ...ConsumerOrderShippingGroup.permission.less | 3 + .../ConsumerOrderShippingGroup.preference.js | 8 +- .../ConsumerOrderShippingGroup.profile.js | 92 + .../ConsumerOrderShippingGroup.profile.less | 3 + .../ConsumerOrderShippingGroup.search.js | 14 +- .../ConsumerOrderShippingGroup.searchform.js | 34 +- .../ConsumerOrderShippingGroup.table.js | 53 +- .../ConsumerOrderShippingGroup.updateform.js | 6 +- .../damagespace/DamageSpace.app.js | 57 +- .../damagespace/DamageSpace.associateform.js | 14 +- .../DamageSpace.associateform.less | 86 - .../damagespace/DamageSpace.base.js | 151 +- .../damagespace/DamageSpace.createform.js | 14 +- .../damagespace/DamageSpace.dashboard.js | 9 +- .../damagespace/DamageSpace.model.js | 6 +- .../damagespace/DamageSpace.permission.js | 89 + .../damagespace/DamageSpace.permission.less | 3 + .../damagespace/DamageSpace.preference.js | 8 +- .../damagespace/DamageSpace.profile.js | 96 + .../damagespace/DamageSpace.profile.less | 3 + .../damagespace/DamageSpace.search.js | 14 +- .../damagespace/DamageSpace.searchform.js | 38 +- .../damagespace/DamageSpace.table.js | 53 +- .../damagespace/DamageSpace.updateform.js | 12 +- .../bizcomponents/employee/Employee.app.js | 57 +- .../employee/Employee.associateform.js | 16 +- .../employee/Employee.associateform.less | 86 - .../bizcomponents/employee/Employee.base.js | 231 +- .../employee/Employee.createform.js | 16 +- .../employee/Employee.dashboard.js | 9 +- .../bizcomponents/employee/Employee.model.js | 50 +- .../employee/Employee.permission.js | 93 + .../employee/Employee.permission.less | 3 + .../employee/Employee.preference.js | 8 +- .../employee/Employee.profile.js | 100 + .../employee/Employee.profile.less | 3 + .../bizcomponents/employee/Employee.search.js | 14 +- .../employee/Employee.searchform.js | 58 +- .../bizcomponents/employee/Employee.table.js | 53 +- .../employee/Employee.updateform.js | 18 +- .../EmployeeAttendance.app.js | 57 +- .../EmployeeAttendance.associateform.js | 12 +- .../EmployeeAttendance.associateform.less | 86 - .../EmployeeAttendance.base.js | 143 +- .../EmployeeAttendance.createform.js | 14 +- .../EmployeeAttendance.dashboard.js | 9 +- .../EmployeeAttendance.model.js | 2 +- .../EmployeeAttendance.permission.js | 87 + .../EmployeeAttendance.permission.less | 3 + .../EmployeeAttendance.preference.js | 8 +- .../EmployeeAttendance.profile.js | 94 + .../EmployeeAttendance.profile.less | 3 + .../EmployeeAttendance.search.js | 14 +- .../EmployeeAttendance.searchform.js | 34 +- .../EmployeeAttendance.table.js | 53 +- .../EmployeeAttendance.updateform.js | 10 +- .../employeeaward/EmployeeAward.app.js | 57 +- .../EmployeeAward.associateform.js | 8 +- .../EmployeeAward.associateform.less | 86 - .../employeeaward/EmployeeAward.base.js | 138 +- .../employeeaward/EmployeeAward.createform.js | 8 +- .../employeeaward/EmployeeAward.dashboard.js | 9 +- .../employeeaward/EmployeeAward.model.js | 2 +- .../employeeaward/EmployeeAward.permission.js | 86 + .../EmployeeAward.permission.less | 3 + .../employeeaward/EmployeeAward.preference.js | 8 +- .../employeeaward/EmployeeAward.profile.js | 93 + .../employeeaward/EmployeeAward.profile.less | 3 + .../employeeaward/EmployeeAward.search.js | 14 +- .../employeeaward/EmployeeAward.searchform.js | 36 +- .../employeeaward/EmployeeAward.table.js | 53 +- .../employeeaward/EmployeeAward.updateform.js | 8 +- .../employeeboarding/EmployeeBoarding.app.js | 57 +- .../EmployeeBoarding.associateform.js | 8 +- .../EmployeeBoarding.associateform.less | 86 - .../employeeboarding/EmployeeBoarding.base.js | 130 +- .../EmployeeBoarding.createform.js | 8 +- .../EmployeeBoarding.dashboard.js | 9 +- .../EmployeeBoarding.model.js | 6 +- .../EmployeeBoarding.permission.js | 86 + .../EmployeeBoarding.permission.less | 3 + .../EmployeeBoarding.preference.js | 8 +- .../EmployeeBoarding.profile.js | 93 + .../EmployeeBoarding.profile.less | 3 + .../EmployeeBoarding.search.js | 14 +- .../EmployeeBoarding.searchform.js | 34 +- .../EmployeeBoarding.table.js | 53 +- .../EmployeeBoarding.updateform.js | 8 +- .../EmployeeCompanyTraining.app.js | 57 +- ...EmployeeCompanyTraining.associateform.less | 86 - .../EmployeeCompanyTraining.base.js | 142 +- .../EmployeeCompanyTraining.dashboard.js | 9 +- .../EmployeeCompanyTraining.model.js | 2 +- .../EmployeeCompanyTraining.permission.js | 84 + .../EmployeeCompanyTraining.permission.less | 3 + .../EmployeeCompanyTraining.preference.js | 8 +- .../EmployeeCompanyTraining.profile.js | 91 + .../EmployeeCompanyTraining.profile.less | 3 + .../EmployeeCompanyTraining.search.js | 14 +- .../EmployeeCompanyTraining.searchform.js | 36 +- .../EmployeeCompanyTraining.table.js | 53 +- .../EmployeeCompanyTraining.updateform.js | 2 +- .../EmployeeEducation.app.js | 57 +- .../EmployeeEducation.associateform.js | 8 +- .../EmployeeEducation.associateform.less | 86 - .../EmployeeEducation.base.js | 138 +- .../EmployeeEducation.createform.js | 8 +- .../EmployeeEducation.dashboard.js | 9 +- .../EmployeeEducation.model.js | 2 +- .../EmployeeEducation.permission.js | 86 + .../EmployeeEducation.permission.less | 3 + .../EmployeeEducation.preference.js | 8 +- .../EmployeeEducation.profile.js | 93 + .../EmployeeEducation.profile.less | 3 + .../EmployeeEducation.search.js | 14 +- .../EmployeeEducation.searchform.js | 36 +- .../EmployeeEducation.table.js | 53 +- .../EmployeeEducation.updateform.js | 8 +- .../EmployeeInterview.app.js | 57 +- .../EmployeeInterview.associateform.js | 2 +- .../EmployeeInterview.associateform.less | 86 - .../EmployeeInterview.base.js | 138 +- .../EmployeeInterview.createform.js | 2 +- .../EmployeeInterview.dashboard.js | 9 +- .../EmployeeInterview.model.js | 2 +- .../EmployeeInterview.permission.js | 84 + .../EmployeeInterview.permission.less | 3 + .../EmployeeInterview.preference.js | 8 +- .../EmployeeInterview.profile.js | 91 + .../EmployeeInterview.profile.less | 3 + .../EmployeeInterview.search.js | 14 +- .../EmployeeInterview.searchform.js | 36 +- .../EmployeeInterview.table.js | 53 +- .../EmployeeInterview.updateform.js | 4 +- .../employeeleave/EmployeeLeave.app.js | 57 +- .../EmployeeLeave.associateform.js | 6 +- .../EmployeeLeave.associateform.less | 86 - .../employeeleave/EmployeeLeave.base.js | 143 +- .../employeeleave/EmployeeLeave.createform.js | 6 +- .../employeeleave/EmployeeLeave.dashboard.js | 9 +- .../employeeleave/EmployeeLeave.model.js | 2 +- .../employeeleave/EmployeeLeave.permission.js | 85 + .../EmployeeLeave.permission.less | 3 + .../employeeleave/EmployeeLeave.preference.js | 8 +- .../employeeleave/EmployeeLeave.profile.js | 92 + .../employeeleave/EmployeeLeave.profile.less | 3 + .../employeeleave/EmployeeLeave.search.js | 14 +- .../employeeleave/EmployeeLeave.searchform.js | 36 +- .../employeeleave/EmployeeLeave.table.js | 53 +- .../employeeleave/EmployeeLeave.updateform.js | 6 +- .../EmployeePerformance.app.js | 57 +- .../EmployeePerformance.associateform.js | 2 +- .../EmployeePerformance.associateform.less | 86 - .../EmployeePerformance.base.js | 128 +- .../EmployeePerformance.createform.js | 2 +- .../EmployeePerformance.dashboard.js | 9 +- .../EmployeePerformance.model.js | 2 +- .../EmployeePerformance.permission.js | 84 + .../EmployeePerformance.permission.less | 3 + .../EmployeePerformance.preference.js | 8 +- .../EmployeePerformance.profile.js | 91 + .../EmployeePerformance.profile.less | 3 + .../EmployeePerformance.search.js | 14 +- .../EmployeePerformance.searchform.js | 34 +- .../EmployeePerformance.table.js | 53 +- .../EmployeePerformance.updateform.js | 4 +- .../EmployeeQualifier.app.js | 57 +- .../EmployeeQualifier.associateform.js | 10 +- .../EmployeeQualifier.associateform.less | 86 - .../EmployeeQualifier.base.js | 143 +- .../EmployeeQualifier.createform.js | 10 +- .../EmployeeQualifier.dashboard.js | 9 +- .../EmployeeQualifier.model.js | 2 +- .../EmployeeQualifier.permission.js | 87 + .../EmployeeQualifier.permission.less | 3 + .../EmployeeQualifier.preference.js | 8 +- .../EmployeeQualifier.profile.js | 94 + .../EmployeeQualifier.profile.less | 3 + .../EmployeeQualifier.search.js | 14 +- .../EmployeeQualifier.searchform.js | 38 +- .../EmployeeQualifier.table.js | 53 +- .../EmployeeQualifier.updateform.js | 10 +- .../EmployeeSalarySheet.app.js | 57 +- .../EmployeeSalarySheet.associateform.js | 28 +- .../EmployeeSalarySheet.associateform.less | 86 - .../EmployeeSalarySheet.base.js | 171 +- .../EmployeeSalarySheet.createform.js | 28 +- .../EmployeeSalarySheet.dashboard.js | 9 +- .../EmployeeSalarySheet.model.js | 2 +- .../EmployeeSalarySheet.permission.js | 91 + .../EmployeeSalarySheet.permission.less | 3 + .../EmployeeSalarySheet.preference.js | 8 +- .../EmployeeSalarySheet.profile.js | 98 + .../EmployeeSalarySheet.profile.less | 3 + .../EmployeeSalarySheet.search.js | 14 +- .../EmployeeSalarySheet.searchform.js | 36 +- .../EmployeeSalarySheet.table.js | 53 +- .../EmployeeSalarySheet.updateform.js | 16 +- .../employeeskill/EmployeeSkill.app.js | 57 +- .../EmployeeSkill.associateform.js | 2 +- .../EmployeeSkill.associateform.less | 86 - .../employeeskill/EmployeeSkill.base.js | 138 +- .../employeeskill/EmployeeSkill.createform.js | 2 +- .../employeeskill/EmployeeSkill.dashboard.js | 9 +- .../employeeskill/EmployeeSkill.model.js | 2 +- .../employeeskill/EmployeeSkill.permission.js | 84 + .../EmployeeSkill.permission.less | 3 + .../employeeskill/EmployeeSkill.preference.js | 8 +- .../employeeskill/EmployeeSkill.profile.js | 91 + .../employeeskill/EmployeeSkill.profile.less | 3 + .../employeeskill/EmployeeSkill.search.js | 14 +- .../employeeskill/EmployeeSkill.searchform.js | 36 +- .../employeeskill/EmployeeSkill.table.js | 53 +- .../employeeskill/EmployeeSkill.updateform.js | 4 +- .../EmployeeWorkExperience.app.js | 57 +- .../EmployeeWorkExperience.associateform.js | 12 +- .../EmployeeWorkExperience.associateform.less | 86 - .../EmployeeWorkExperience.base.js | 143 +- .../EmployeeWorkExperience.createform.js | 12 +- .../EmployeeWorkExperience.dashboard.js | 9 +- .../EmployeeWorkExperience.model.js | 2 +- .../EmployeeWorkExperience.permission.js | 87 + .../EmployeeWorkExperience.permission.less | 3 + .../EmployeeWorkExperience.preference.js | 8 +- .../EmployeeWorkExperience.profile.js | 94 + .../EmployeeWorkExperience.profile.less | 3 + .../EmployeeWorkExperience.search.js | 14 +- .../EmployeeWorkExperience.searchform.js | 36 +- .../EmployeeWorkExperience.table.js | 53 +- .../EmployeeWorkExperience.updateform.js | 10 +- .../eventattendance/EventAttendance.app.js | 57 +- .../EventAttendance.associateform.js | 4 +- .../EventAttendance.associateform.less | 86 - .../eventattendance/EventAttendance.base.js | 143 +- .../EventAttendance.createform.js | 4 +- .../EventAttendance.dashboard.js | 9 +- .../eventattendance/EventAttendance.model.js | 2 +- .../EventAttendance.permission.js | 85 + .../EventAttendance.permission.less | 3 + .../EventAttendance.preference.js | 8 +- .../EventAttendance.profile.js | 92 + .../EventAttendance.profile.less | 3 + .../eventattendance/EventAttendance.search.js | 14 +- .../EventAttendance.searchform.js | 38 +- .../eventattendance/EventAttendance.table.js | 53 +- .../EventAttendance.updateform.js | 6 +- bizui/src/bizcomponents/goods/Goods.app.js | 57 +- .../goods/Goods.associateform.js | 14 +- .../goods/Goods.associateform.less | 86 - bizui/src/bizcomponents/goods/Goods.base.js | 217 +- .../bizcomponents/goods/Goods.createform.js | 14 +- .../bizcomponents/goods/Goods.dashboard.js | 9 +- bizui/src/bizcomponents/goods/Goods.model.js | 6 +- .../bizcomponents/goods/Goods.permission.js | 89 + .../bizcomponents/goods/Goods.permission.less | 3 + .../bizcomponents/goods/Goods.preference.js | 8 +- .../src/bizcomponents/goods/Goods.profile.js | 96 + .../bizcomponents/goods/Goods.profile.less | 3 + bizui/src/bizcomponents/goods/Goods.search.js | 14 +- .../bizcomponents/goods/Goods.searchform.js | 56 +- bizui/src/bizcomponents/goods/Goods.table.js | 53 +- .../bizcomponents/goods/Goods.updateform.js | 12 +- .../goodsallocation/GoodsAllocation.app.js | 57 +- .../GoodsAllocation.associateform.js | 10 +- .../GoodsAllocation.associateform.less | 86 - .../goodsallocation/GoodsAllocation.base.js | 140 +- .../GoodsAllocation.createform.js | 10 +- .../GoodsAllocation.dashboard.js | 9 +- .../goodsallocation/GoodsAllocation.model.js | 6 +- .../GoodsAllocation.permission.js | 86 + .../GoodsAllocation.permission.less | 3 + .../GoodsAllocation.preference.js | 8 +- .../GoodsAllocation.profile.js | 93 + .../GoodsAllocation.profile.less | 3 + .../goodsallocation/GoodsAllocation.search.js | 14 +- .../GoodsAllocation.searchform.js | 34 +- .../goodsallocation/GoodsAllocation.table.js | 53 +- .../GoodsAllocation.updateform.js | 8 +- .../goodsmovement/GoodsMovement.app.js | 57 +- .../GoodsMovement.associateform.js | 20 +- .../GoodsMovement.associateform.less | 86 - .../goodsmovement/GoodsMovement.base.js | 154 +- .../goodsmovement/GoodsMovement.createform.js | 20 +- .../goodsmovement/GoodsMovement.dashboard.js | 9 +- .../goodsmovement/GoodsMovement.model.js | 2 +- .../goodsmovement/GoodsMovement.permission.js | 90 + .../GoodsMovement.permission.less | 3 + .../goodsmovement/GoodsMovement.preference.js | 8 +- .../goodsmovement/GoodsMovement.profile.js | 97 + .../goodsmovement/GoodsMovement.profile.less | 3 + .../goodsmovement/GoodsMovement.search.js | 14 +- .../goodsmovement/GoodsMovement.searchform.js | 42 +- .../goodsmovement/GoodsMovement.table.js | 53 +- .../goodsmovement/GoodsMovement.updateform.js | 16 +- .../goodspackaging/GoodsPackaging.app.js | 57 +- .../GoodsPackaging.associateform.js | 10 +- .../GoodsPackaging.associateform.less | 86 - .../goodspackaging/GoodsPackaging.base.js | 135 +- .../GoodsPackaging.createform.js | 10 +- .../GoodsPackaging.dashboard.js | 9 +- .../goodspackaging/GoodsPackaging.model.js | 6 +- .../GoodsPackaging.permission.js | 87 + .../GoodsPackaging.permission.less | 3 + .../GoodsPackaging.preference.js | 8 +- .../goodspackaging/GoodsPackaging.profile.js | 94 + .../GoodsPackaging.profile.less | 3 + .../goodspackaging/GoodsPackaging.search.js | 14 +- .../GoodsPackaging.searchform.js | 36 +- .../goodspackaging/GoodsPackaging.table.js | 53 +- .../GoodsPackaging.updateform.js | 10 +- .../goodsshelf/GoodsShelf.app.js | 57 +- .../goodsshelf/GoodsShelf.associateform.js | 2 +- .../goodsshelf/GoodsShelf.associateform.less | 86 - .../goodsshelf/GoodsShelf.base.js | 157 +- .../goodsshelf/GoodsShelf.createform.js | 2 +- .../goodsshelf/GoodsShelf.dashboard.js | 9 +- .../goodsshelf/GoodsShelf.model.js | 10 +- .../goodsshelf/GoodsShelf.permission.js | 85 + .../goodsshelf/GoodsShelf.permission.less | 3 + .../goodsshelf/GoodsShelf.preference.js | 8 +- .../goodsshelf/GoodsShelf.profile.js | 92 + .../goodsshelf/GoodsShelf.profile.less | 3 + .../goodsshelf/GoodsShelf.search.js | 14 +- .../goodsshelf/GoodsShelf.searchform.js | 38 +- .../goodsshelf/GoodsShelf.table.js | 53 +- .../goodsshelf/GoodsShelf.updateform.js | 4 +- .../GoodsShelfStockCount.app.js | 57 +- .../GoodsShelfStockCount.associateform.js | 8 +- .../GoodsShelfStockCount.associateform.less | 86 - .../GoodsShelfStockCount.base.js | 140 +- .../GoodsShelfStockCount.createform.js | 8 +- .../GoodsShelfStockCount.dashboard.js | 9 +- .../GoodsShelfStockCount.model.js | 6 +- .../GoodsShelfStockCount.permission.js | 86 + .../GoodsShelfStockCount.permission.less | 3 + .../GoodsShelfStockCount.preference.js | 8 +- .../GoodsShelfStockCount.profile.js | 93 + .../GoodsShelfStockCount.profile.less | 3 + .../GoodsShelfStockCount.search.js | 14 +- .../GoodsShelfStockCount.searchform.js | 36 +- .../GoodsShelfStockCount.table.js | 53 +- .../GoodsShelfStockCount.updateform.js | 8 +- .../goodssupplier/GoodsSupplier.app.js | 57 +- .../GoodsSupplier.associateform.js | 8 +- .../GoodsSupplier.associateform.less | 86 - .../goodssupplier/GoodsSupplier.base.js | 146 +- .../goodssupplier/GoodsSupplier.createform.js | 8 +- .../goodssupplier/GoodsSupplier.dashboard.js | 9 +- .../goodssupplier/GoodsSupplier.model.js | 14 +- .../goodssupplier/GoodsSupplier.permission.js | 88 + .../GoodsSupplier.permission.less | 3 + .../goodssupplier/GoodsSupplier.preference.js | 8 +- .../goodssupplier/GoodsSupplier.profile.js | 95 + .../goodssupplier/GoodsSupplier.profile.less | 3 + .../goodssupplier/GoodsSupplier.search.js | 14 +- .../goodssupplier/GoodsSupplier.searchform.js | 40 +- .../goodssupplier/GoodsSupplier.table.js | 53 +- .../goodssupplier/GoodsSupplier.updateform.js | 10 +- .../hrinterview/HrInterview.app.js | 57 +- .../hrinterview/HrInterview.associateform.js | 8 +- .../HrInterview.associateform.less | 86 - .../hrinterview/HrInterview.base.js | 130 +- .../hrinterview/HrInterview.createform.js | 8 +- .../hrinterview/HrInterview.dashboard.js | 9 +- .../hrinterview/HrInterview.model.js | 6 +- .../hrinterview/HrInterview.permission.js | 86 + .../hrinterview/HrInterview.permission.less | 3 + .../hrinterview/HrInterview.preference.js | 8 +- .../hrinterview/HrInterview.profile.js | 93 + .../hrinterview/HrInterview.profile.less | 3 + .../hrinterview/HrInterview.search.js | 14 +- .../hrinterview/HrInterview.searchform.js | 34 +- .../hrinterview/HrInterview.table.js | 53 +- .../hrinterview/HrInterview.updateform.js | 8 +- bizui/src/bizcomponents/index.js | 580 + .../instructor/Instructor.app.js | 57 +- .../instructor/Instructor.associateform.js | 12 +- .../instructor/Instructor.associateform.less | 86 - .../instructor/Instructor.base.js | 148 +- .../instructor/Instructor.createform.js | 12 +- .../instructor/Instructor.dashboard.js | 9 +- .../instructor/Instructor.model.js | 6 +- .../instructor/Instructor.permission.js | 90 + .../instructor/Instructor.permission.less | 3 + .../instructor/Instructor.preference.js | 8 +- .../instructor/Instructor.profile.js | 97 + .../instructor/Instructor.profile.less | 3 + .../instructor/Instructor.search.js | 14 +- .../instructor/Instructor.searchform.js | 44 +- .../instructor/Instructor.table.js | 53 +- .../instructor/Instructor.updateform.js | 14 +- .../interviewtype/InterviewType.app.js | 57 +- .../InterviewType.associateform.js | 6 +- .../InterviewType.associateform.less | 86 - .../interviewtype/InterviewType.base.js | 134 +- .../interviewtype/InterviewType.createform.js | 6 +- .../interviewtype/InterviewType.dashboard.js | 9 +- .../interviewtype/InterviewType.model.js | 6 +- .../interviewtype/InterviewType.permission.js | 86 + .../InterviewType.permission.less | 3 + .../interviewtype/InterviewType.preference.js | 8 +- .../interviewtype/InterviewType.profile.js | 93 + .../interviewtype/InterviewType.profile.less | 3 + .../interviewtype/InterviewType.search.js | 14 +- .../interviewtype/InterviewType.searchform.js | 38 +- .../interviewtype/InterviewType.table.js | 53 +- .../interviewtype/InterviewType.updateform.js | 8 +- .../jobapplication/JobApplication.app.js | 57 +- .../JobApplication.associateform.js | 8 +- .../JobApplication.associateform.less | 86 - .../jobapplication/JobApplication.base.js | 130 +- .../JobApplication.createform.js | 8 +- .../JobApplication.dashboard.js | 9 +- .../jobapplication/JobApplication.model.js | 6 +- .../JobApplication.permission.js | 86 + .../JobApplication.permission.less | 3 + .../JobApplication.preference.js | 8 +- .../jobapplication/JobApplication.profile.js | 93 + .../JobApplication.profile.less | 3 + .../jobapplication/JobApplication.search.js | 14 +- .../JobApplication.searchform.js | 34 +- .../jobapplication/JobApplication.table.js | 53 +- .../JobApplication.updateform.js | 8 +- .../bizcomponents/leavetype/LeaveType.app.js | 57 +- .../leavetype/LeaveType.associateform.js | 6 +- .../leavetype/LeaveType.associateform.less | 86 - .../bizcomponents/leavetype/LeaveType.base.js | 134 +- .../leavetype/LeaveType.createform.js | 6 +- .../leavetype/LeaveType.dashboard.js | 9 +- .../leavetype/LeaveType.model.js | 6 +- .../leavetype/LeaveType.permission.js | 86 + .../leavetype/LeaveType.permission.less | 3 + .../leavetype/LeaveType.preference.js | 8 +- .../leavetype/LeaveType.profile.js | 93 + .../leavetype/LeaveType.profile.less | 3 + .../leavetype/LeaveType.search.js | 14 +- .../leavetype/LeaveType.searchform.js | 38 +- .../leavetype/LeaveType.table.js | 53 +- .../leavetype/LeaveType.updateform.js | 8 +- .../levelonecategory/LevelOneCategory.app.js | 57 +- .../LevelOneCategory.associateform.js | 2 +- .../LevelOneCategory.associateform.less | 86 - .../levelonecategory/LevelOneCategory.base.js | 130 +- .../LevelOneCategory.createform.js | 2 +- .../LevelOneCategory.dashboard.js | 9 +- .../LevelOneCategory.model.js | 6 +- .../LevelOneCategory.permission.js | 84 + .../LevelOneCategory.permission.less | 3 + .../LevelOneCategory.preference.js | 8 +- .../LevelOneCategory.profile.js | 91 + .../LevelOneCategory.profile.less | 3 + .../LevelOneCategory.search.js | 14 +- .../LevelOneCategory.searchform.js | 34 +- .../LevelOneCategory.table.js | 53 +- .../LevelOneCategory.updateform.js | 4 +- .../LevelOneDepartment.app.js | 57 +- .../LevelOneDepartment.associateform.js | 10 +- .../LevelOneDepartment.associateform.less | 86 - .../LevelOneDepartment.base.js | 139 +- .../LevelOneDepartment.createform.js | 10 +- .../LevelOneDepartment.dashboard.js | 9 +- .../LevelOneDepartment.model.js | 6 +- .../LevelOneDepartment.permission.js | 87 + .../LevelOneDepartment.permission.less | 3 + .../LevelOneDepartment.preference.js | 8 +- .../LevelOneDepartment.profile.js | 94 + .../LevelOneDepartment.profile.less | 3 + .../LevelOneDepartment.search.js | 14 +- .../LevelOneDepartment.searchform.js | 38 +- .../LevelOneDepartment.table.js | 53 +- .../LevelOneDepartment.updateform.js | 10 +- .../LevelThreeCategory.app.js | 57 +- .../LevelThreeCategory.associateform.js | 2 +- .../LevelThreeCategory.associateform.less | 86 - .../LevelThreeCategory.base.js | 130 +- .../LevelThreeCategory.createform.js | 2 +- .../LevelThreeCategory.dashboard.js | 9 +- .../LevelThreeCategory.model.js | 6 +- .../LevelThreeCategory.permission.js | 84 + .../LevelThreeCategory.permission.less | 3 + .../LevelThreeCategory.preference.js | 8 +- .../LevelThreeCategory.profile.js | 91 + .../LevelThreeCategory.profile.less | 3 + .../LevelThreeCategory.search.js | 14 +- .../LevelThreeCategory.searchform.js | 34 +- .../LevelThreeCategory.table.js | 53 +- .../LevelThreeCategory.updateform.js | 4 +- .../LevelThreeDepartment.app.js | 57 +- .../LevelThreeDepartment.associateform.js | 8 +- .../LevelThreeDepartment.associateform.less | 86 - .../LevelThreeDepartment.base.js | 140 +- .../LevelThreeDepartment.createform.js | 8 +- .../LevelThreeDepartment.dashboard.js | 9 +- .../LevelThreeDepartment.model.js | 6 +- .../LevelThreeDepartment.permission.js | 86 + .../LevelThreeDepartment.permission.less | 3 + .../LevelThreeDepartment.preference.js | 8 +- .../LevelThreeDepartment.profile.js | 93 + .../LevelThreeDepartment.profile.less | 3 + .../LevelThreeDepartment.search.js | 14 +- .../LevelThreeDepartment.searchform.js | 36 +- .../LevelThreeDepartment.table.js | 53 +- .../LevelThreeDepartment.updateform.js | 8 +- .../leveltwocategory/LevelTwoCategory.app.js | 57 +- .../LevelTwoCategory.associateform.js | 2 +- .../LevelTwoCategory.associateform.less | 86 - .../leveltwocategory/LevelTwoCategory.base.js | 130 +- .../LevelTwoCategory.createform.js | 2 +- .../LevelTwoCategory.dashboard.js | 9 +- .../LevelTwoCategory.model.js | 6 +- .../LevelTwoCategory.permission.js | 84 + .../LevelTwoCategory.permission.less | 3 + .../LevelTwoCategory.preference.js | 8 +- .../LevelTwoCategory.profile.js | 91 + .../LevelTwoCategory.profile.less | 3 + .../LevelTwoCategory.search.js | 14 +- .../LevelTwoCategory.searchform.js | 34 +- .../LevelTwoCategory.table.js | 53 +- .../LevelTwoCategory.updateform.js | 4 +- .../LevelTwoDepartment.app.js | 57 +- .../LevelTwoDepartment.associateform.js | 8 +- .../LevelTwoDepartment.associateform.less | 86 - .../LevelTwoDepartment.base.js | 140 +- .../LevelTwoDepartment.createform.js | 8 +- .../LevelTwoDepartment.dashboard.js | 9 +- .../LevelTwoDepartment.model.js | 6 +- .../LevelTwoDepartment.permission.js | 86 + .../LevelTwoDepartment.permission.less | 3 + .../LevelTwoDepartment.preference.js | 8 +- .../LevelTwoDepartment.profile.js | 93 + .../LevelTwoDepartment.profile.less | 3 + .../LevelTwoDepartment.search.js | 14 +- .../LevelTwoDepartment.searchform.js | 36 +- .../LevelTwoDepartment.table.js | 53 +- .../LevelTwoDepartment.updateform.js | 8 +- .../listaccess/ListAccess.app.js | 57 +- .../listaccess/ListAccess.associateform.js | 4 +- .../listaccess/ListAccess.associateform.less | 86 - .../listaccess/ListAccess.base.js | 147 +- .../listaccess/ListAccess.createform.js | 4 +- .../listaccess/ListAccess.dashboard.js | 9 +- .../listaccess/ListAccess.model.js | 2 +- .../listaccess/ListAccess.permission.js | 85 + .../listaccess/ListAccess.permission.less | 3 + .../listaccess/ListAccess.preference.js | 8 +- .../listaccess/ListAccess.profile.js | 92 + .../listaccess/ListAccess.profile.less | 3 + .../listaccess/ListAccess.search.js | 14 +- .../listaccess/ListAccess.searchform.js | 36 +- .../listaccess/ListAccess.table.js | 53 +- .../listaccess/ListAccess.updateform.js | 6 +- .../loginhistory/LoginHistory.app.js | 57 +- .../LoginHistory.associateform.js | 4 +- .../LoginHistory.associateform.less | 86 - .../loginhistory/LoginHistory.base.js | 138 +- .../loginhistory/LoginHistory.createform.js | 4 +- .../loginhistory/LoginHistory.dashboard.js | 9 +- .../loginhistory/LoginHistory.model.js | 2 +- .../loginhistory/LoginHistory.permission.js | 86 + .../loginhistory/LoginHistory.permission.less | 10 + .../loginhistory/LoginHistory.preference.js | 8 +- .../loginhistory/LoginHistory.profile.js | 93 + .../loginhistory/LoginHistory.profile.less | 10 + .../loginhistory/LoginHistory.search.js | 14 +- .../loginhistory/LoginHistory.searchform.js | 36 +- .../loginhistory/LoginHistory.table.js | 53 +- .../loginhistory/LoginHistory.updateform.js | 6 +- .../MemberRewardPoint.app.js | 57 +- .../MemberRewardPoint.associateform.js | 6 +- .../MemberRewardPoint.associateform.less | 86 - .../MemberRewardPoint.base.js | 133 +- .../MemberRewardPoint.createform.js | 6 +- .../MemberRewardPoint.dashboard.js | 9 +- .../MemberRewardPoint.model.js | 2 +- .../MemberRewardPoint.permission.js | 85 + .../MemberRewardPoint.permission.less | 3 + .../MemberRewardPoint.preference.js | 8 +- .../MemberRewardPoint.profile.js | 92 + .../MemberRewardPoint.profile.less | 3 + .../MemberRewardPoint.search.js | 14 +- .../MemberRewardPoint.searchform.js | 34 +- .../MemberRewardPoint.table.js | 53 +- .../MemberRewardPoint.updateform.js | 6 +- .../MemberRewardPointRedemption.app.js | 57 +- ...mberRewardPointRedemption.associateform.js | 6 +- ...erRewardPointRedemption.associateform.less | 86 - .../MemberRewardPointRedemption.base.js | 133 +- .../MemberRewardPointRedemption.createform.js | 6 +- .../MemberRewardPointRedemption.dashboard.js | 9 +- .../MemberRewardPointRedemption.model.js | 2 +- .../MemberRewardPointRedemption.permission.js | 85 + ...emberRewardPointRedemption.permission.less | 3 + .../MemberRewardPointRedemption.preference.js | 8 +- .../MemberRewardPointRedemption.profile.js | 92 + .../MemberRewardPointRedemption.profile.less | 3 + .../MemberRewardPointRedemption.search.js | 14 +- .../MemberRewardPointRedemption.searchform.js | 34 +- .../MemberRewardPointRedemption.table.js | 53 +- .../MemberRewardPointRedemption.updateform.js | 6 +- .../memberwishlist/MemberWishlist.app.js | 57 +- .../MemberWishlist.associateform.js | 2 +- .../MemberWishlist.associateform.less | 86 - .../memberwishlist/MemberWishlist.base.js | 130 +- .../MemberWishlist.createform.js | 2 +- .../MemberWishlist.dashboard.js | 9 +- .../memberwishlist/MemberWishlist.model.js | 6 +- .../MemberWishlist.permission.js | 84 + .../MemberWishlist.permission.less | 3 + .../MemberWishlist.preference.js | 8 +- .../memberwishlist/MemberWishlist.profile.js | 91 + .../MemberWishlist.profile.less | 3 + .../memberwishlist/MemberWishlist.search.js | 14 +- .../MemberWishlist.searchform.js | 34 +- .../memberwishlist/MemberWishlist.table.js | 53 +- .../MemberWishlist.updateform.js | 4 +- .../MemberWishlistProduct.app.js | 57 +- .../MemberWishlistProduct.associateform.js | 2 +- .../MemberWishlistProduct.associateform.less | 86 - .../MemberWishlistProduct.base.js | 128 +- .../MemberWishlistProduct.createform.js | 2 +- .../MemberWishlistProduct.dashboard.js | 9 +- .../MemberWishlistProduct.model.js | 2 +- .../MemberWishlistProduct.permission.js | 84 + .../MemberWishlistProduct.permission.less | 3 + .../MemberWishlistProduct.preference.js | 8 +- .../MemberWishlistProduct.profile.js | 91 + .../MemberWishlistProduct.profile.less | 3 + .../MemberWishlistProduct.search.js | 14 +- .../MemberWishlistProduct.searchform.js | 34 +- .../MemberWishlistProduct.table.js | 53 +- .../MemberWishlistProduct.updateform.js | 4 +- .../objectaccess/ObjectAccess.app.js | 57 +- .../ObjectAccess.associateform.js | 22 +- .../ObjectAccess.associateform.less | 86 - .../objectaccess/ObjectAccess.base.js | 164 +- .../objectaccess/ObjectAccess.createform.js | 22 +- .../objectaccess/ObjectAccess.dashboard.js | 9 +- .../objectaccess/ObjectAccess.model.js | 2 +- .../objectaccess/ObjectAccess.permission.js | 94 + .../objectaccess/ObjectAccess.permission.less | 3 + .../objectaccess/ObjectAccess.preference.js | 8 +- .../objectaccess/ObjectAccess.profile.js | 101 + .../objectaccess/ObjectAccess.profile.less | 3 + .../objectaccess/ObjectAccess.search.js | 14 +- .../objectaccess/ObjectAccess.searchform.js | 54 +- .../objectaccess/ObjectAccess.table.js | 53 +- .../objectaccess/ObjectAccess.updateform.js | 24 +- .../occupationtype/OccupationType.app.js | 57 +- .../OccupationType.associateform.js | 6 +- .../OccupationType.associateform.less | 86 - .../occupationtype/OccupationType.base.js | 134 +- .../OccupationType.createform.js | 6 +- .../OccupationType.dashboard.js | 9 +- .../occupationtype/OccupationType.model.js | 6 +- .../OccupationType.permission.js | 86 + .../OccupationType.permission.less | 3 + .../OccupationType.preference.js | 8 +- .../occupationtype/OccupationType.profile.js | 93 + .../OccupationType.profile.less | 3 + .../occupationtype/OccupationType.search.js | 14 +- .../OccupationType.searchform.js | 38 +- .../occupationtype/OccupationType.table.js | 53 +- .../OccupationType.updateform.js | 8 +- .../offeracceptance/OfferAcceptance.app.js | 57 +- .../OfferAcceptance.associateform.js | 8 +- .../OfferAcceptance.associateform.less | 86 - .../offeracceptance/OfferAcceptance.base.js | 130 +- .../OfferAcceptance.createform.js | 8 +- .../OfferAcceptance.dashboard.js | 9 +- .../offeracceptance/OfferAcceptance.model.js | 6 +- .../OfferAcceptance.permission.js | 86 + .../OfferAcceptance.permission.less | 3 + .../OfferAcceptance.preference.js | 8 +- .../OfferAcceptance.profile.js | 93 + .../OfferAcceptance.profile.less | 3 + .../offeracceptance/OfferAcceptance.search.js | 14 +- .../OfferAcceptance.searchform.js | 34 +- .../offeracceptance/OfferAcceptance.table.js | 53 +- .../OfferAcceptance.updateform.js | 8 +- .../offerapproval/OfferApproval.app.js | 57 +- .../OfferApproval.associateform.js | 8 +- .../OfferApproval.associateform.less | 86 - .../offerapproval/OfferApproval.base.js | 130 +- .../offerapproval/OfferApproval.createform.js | 8 +- .../offerapproval/OfferApproval.dashboard.js | 9 +- .../offerapproval/OfferApproval.model.js | 6 +- .../offerapproval/OfferApproval.permission.js | 86 + .../OfferApproval.permission.less | 3 + .../offerapproval/OfferApproval.preference.js | 8 +- .../offerapproval/OfferApproval.profile.js | 93 + .../offerapproval/OfferApproval.profile.less | 3 + .../offerapproval/OfferApproval.search.js | 14 +- .../offerapproval/OfferApproval.searchform.js | 34 +- .../offerapproval/OfferApproval.table.js | 53 +- .../offerapproval/OfferApproval.updateform.js | 8 +- .../originalvoucher/OriginalVoucher.app.js | 57 +- .../OriginalVoucher.associateform.js | 8 +- .../OriginalVoucher.associateform.less | 86 - .../originalvoucher/OriginalVoucher.base.js | 154 +- .../OriginalVoucher.createform.js | 8 +- .../OriginalVoucher.dashboard.js | 9 +- .../originalvoucher/OriginalVoucher.model.js | 2 +- .../OriginalVoucher.permission.js | 88 + .../OriginalVoucher.permission.less | 3 + .../OriginalVoucher.preference.js | 8 +- .../OriginalVoucher.profile.js | 95 + .../OriginalVoucher.profile.less | 3 + .../originalvoucher/OriginalVoucher.search.js | 14 +- .../OriginalVoucher.searchform.js | 42 +- .../originalvoucher/OriginalVoucher.table.js | 53 +- .../OriginalVoucher.updateform.js | 10 +- .../OriginalVoucherAuditing.app.js | 57 +- .../OriginalVoucherAuditing.associateform.js | 8 +- ...OriginalVoucherAuditing.associateform.less | 86 - .../OriginalVoucherAuditing.base.js | 130 +- .../OriginalVoucherAuditing.createform.js | 8 +- .../OriginalVoucherAuditing.dashboard.js | 9 +- .../OriginalVoucherAuditing.model.js | 6 +- .../OriginalVoucherAuditing.permission.js | 86 + .../OriginalVoucherAuditing.permission.less | 3 + .../OriginalVoucherAuditing.preference.js | 8 +- .../OriginalVoucherAuditing.profile.js | 93 + .../OriginalVoucherAuditing.profile.less | 3 + .../OriginalVoucherAuditing.search.js | 14 +- .../OriginalVoucherAuditing.searchform.js | 34 +- .../OriginalVoucherAuditing.table.js | 53 +- .../OriginalVoucherAuditing.updateform.js | 8 +- .../OriginalVoucherConfirmation.app.js | 57 +- ...iginalVoucherConfirmation.associateform.js | 8 +- ...inalVoucherConfirmation.associateform.less | 86 - .../OriginalVoucherConfirmation.base.js | 130 +- .../OriginalVoucherConfirmation.createform.js | 8 +- .../OriginalVoucherConfirmation.dashboard.js | 9 +- .../OriginalVoucherConfirmation.model.js | 6 +- .../OriginalVoucherConfirmation.permission.js | 86 + ...riginalVoucherConfirmation.permission.less | 3 + .../OriginalVoucherConfirmation.preference.js | 8 +- .../OriginalVoucherConfirmation.profile.js | 93 + .../OriginalVoucherConfirmation.profile.less | 3 + .../OriginalVoucherConfirmation.search.js | 14 +- .../OriginalVoucherConfirmation.searchform.js | 34 +- .../OriginalVoucherConfirmation.table.js | 53 +- .../OriginalVoucherConfirmation.updateform.js | 8 +- .../OriginalVoucherCreation.app.js | 57 +- .../OriginalVoucherCreation.associateform.js | 8 +- ...OriginalVoucherCreation.associateform.less | 86 - .../OriginalVoucherCreation.base.js | 130 +- .../OriginalVoucherCreation.createform.js | 8 +- .../OriginalVoucherCreation.dashboard.js | 9 +- .../OriginalVoucherCreation.model.js | 6 +- .../OriginalVoucherCreation.permission.js | 86 + .../OriginalVoucherCreation.permission.less | 3 + .../OriginalVoucherCreation.preference.js | 8 +- .../OriginalVoucherCreation.profile.js | 93 + .../OriginalVoucherCreation.profile.less | 3 + .../OriginalVoucherCreation.search.js | 14 +- .../OriginalVoucherCreation.searchform.js | 34 +- .../OriginalVoucherCreation.table.js | 53 +- .../OriginalVoucherCreation.updateform.js | 8 +- .../bizcomponents/payingoff/PayingOff.app.js | 57 +- .../payingoff/PayingOff.associateform.js | 10 +- .../payingoff/PayingOff.associateform.less | 86 - .../bizcomponents/payingoff/PayingOff.base.js | 140 +- .../payingoff/PayingOff.createform.js | 10 +- .../payingoff/PayingOff.dashboard.js | 9 +- .../payingoff/PayingOff.model.js | 6 +- .../payingoff/PayingOff.permission.js | 86 + .../payingoff/PayingOff.permission.less | 3 + .../payingoff/PayingOff.preference.js | 8 +- .../payingoff/PayingOff.profile.js | 93 + .../payingoff/PayingOff.profile.less | 3 + .../payingoff/PayingOff.search.js | 14 +- .../payingoff/PayingOff.searchform.js | 34 +- .../payingoff/PayingOff.table.js | 53 +- .../payingoff/PayingOff.updateform.js | 8 +- .../PotentialCustomer.app.js | 57 +- .../PotentialCustomer.associateform.js | 6 +- .../PotentialCustomer.associateform.less | 86 - .../PotentialCustomer.base.js | 157 +- .../PotentialCustomer.createform.js | 6 +- .../PotentialCustomer.dashboard.js | 9 +- .../PotentialCustomer.model.js | 14 +- .../PotentialCustomer.permission.js | 87 + .../PotentialCustomer.permission.less | 3 + .../PotentialCustomer.preference.js | 8 +- .../PotentialCustomer.profile.js | 94 + .../PotentialCustomer.profile.less | 3 + .../PotentialCustomer.search.js | 14 +- .../PotentialCustomer.searchform.js | 40 +- .../PotentialCustomer.table.js | 53 +- .../PotentialCustomer.updateform.js | 8 +- .../PotentialCustomerContact.app.js | 57 +- .../PotentialCustomerContact.associateform.js | 10 +- ...otentialCustomerContact.associateform.less | 86 - .../PotentialCustomerContact.base.js | 162 +- .../PotentialCustomerContact.createform.js | 10 +- .../PotentialCustomerContact.dashboard.js | 9 +- .../PotentialCustomerContact.model.js | 2 +- .../PotentialCustomerContact.permission.js | 88 + .../PotentialCustomerContact.permission.less | 3 + .../PotentialCustomerContact.preference.js | 8 +- .../PotentialCustomerContact.profile.js | 95 + .../PotentialCustomerContact.profile.less | 3 + .../PotentialCustomerContact.search.js | 14 +- .../PotentialCustomerContact.searchform.js | 42 +- .../PotentialCustomerContact.table.js | 53 +- .../PotentialCustomerContact.updateform.js | 10 +- .../PotentialCustomerContactPerson.app.js | 57 +- ...tialCustomerContactPerson.associateform.js | 6 +- ...alCustomerContactPerson.associateform.less | 86 - .../PotentialCustomerContactPerson.base.js | 140 +- ...tentialCustomerContactPerson.createform.js | 6 +- ...otentialCustomerContactPerson.dashboard.js | 9 +- .../PotentialCustomerContactPerson.model.js | 6 +- ...tentialCustomerContactPerson.permission.js | 86 + ...ntialCustomerContactPerson.permission.less | 3 + ...tentialCustomerContactPerson.preference.js | 8 +- .../PotentialCustomerContactPerson.profile.js | 93 + ...otentialCustomerContactPerson.profile.less | 3 + .../PotentialCustomerContactPerson.search.js | 14 +- ...tentialCustomerContactPerson.searchform.js | 38 +- .../PotentialCustomerContactPerson.table.js | 53 +- ...tentialCustomerContactPerson.updateform.js | 8 +- .../src/bizcomponents/product/Product.app.js | 57 +- .../product/Product.associateform.js | 8 +- .../product/Product.associateform.less | 86 - .../src/bizcomponents/product/Product.base.js | 150 +- .../product/Product.createform.js | 8 +- .../product/Product.dashboard.js | 9 +- .../bizcomponents/product/Product.model.js | 6 +- .../product/Product.permission.js | 88 + .../product/Product.permission.less | 3 + .../product/Product.preference.js | 8 +- .../bizcomponents/product/Product.profile.js | 95 + .../product/Product.profile.less | 3 + .../bizcomponents/product/Product.search.js | 14 +- .../product/Product.searchform.js | 40 +- .../bizcomponents/product/Product.table.js | 53 +- .../product/Product.updateform.js | 10 +- .../ProductSupplyDuration.app.js | 57 +- .../ProductSupplyDuration.associateform.js | 8 +- .../ProductSupplyDuration.associateform.less | 86 - .../ProductSupplyDuration.base.js | 138 +- .../ProductSupplyDuration.createform.js | 8 +- .../ProductSupplyDuration.dashboard.js | 9 +- .../ProductSupplyDuration.model.js | 2 +- .../ProductSupplyDuration.permission.js | 86 + .../ProductSupplyDuration.permission.less | 3 + .../ProductSupplyDuration.preference.js | 8 +- .../ProductSupplyDuration.profile.js | 93 + .../ProductSupplyDuration.profile.less | 3 + .../ProductSupplyDuration.search.js | 14 +- .../ProductSupplyDuration.searchform.js | 34 +- .../ProductSupplyDuration.table.js | 53 +- .../ProductSupplyDuration.updateform.js | 8 +- .../ProfessionInterview.app.js | 57 +- .../ProfessionInterview.associateform.js | 8 +- .../ProfessionInterview.associateform.less | 86 - .../ProfessionInterview.base.js | 130 +- .../ProfessionInterview.createform.js | 8 +- .../ProfessionInterview.dashboard.js | 9 +- .../ProfessionInterview.model.js | 6 +- .../ProfessionInterview.permission.js | 86 + .../ProfessionInterview.permission.less | 3 + .../ProfessionInterview.preference.js | 8 +- .../ProfessionInterview.profile.js | 93 + .../ProfessionInterview.profile.less | 3 + .../ProfessionInterview.search.js | 14 +- .../ProfessionInterview.searchform.js | 34 +- .../ProfessionInterview.table.js | 53 +- .../ProfessionInterview.updateform.js | 8 +- .../ProvinceCenterDepartment.app.js | 57 +- .../ProvinceCenterDepartment.associateform.js | 8 +- ...rovinceCenterDepartment.associateform.less | 86 - .../ProvinceCenterDepartment.base.js | 140 +- .../ProvinceCenterDepartment.createform.js | 8 +- .../ProvinceCenterDepartment.dashboard.js | 9 +- .../ProvinceCenterDepartment.model.js | 6 +- .../ProvinceCenterDepartment.permission.js | 86 + .../ProvinceCenterDepartment.permission.less | 3 + .../ProvinceCenterDepartment.preference.js | 8 +- .../ProvinceCenterDepartment.profile.js | 93 + .../ProvinceCenterDepartment.profile.less | 3 + .../ProvinceCenterDepartment.search.js | 14 +- .../ProvinceCenterDepartment.searchform.js | 36 +- .../ProvinceCenterDepartment.table.js | 53 +- .../ProvinceCenterDepartment.updateform.js | 8 +- .../ProvinceCenterEmployee.app.js | 57 +- .../ProvinceCenterEmployee.associateform.js | 10 +- .../ProvinceCenterEmployee.associateform.less | 86 - .../ProvinceCenterEmployee.base.js | 151 +- .../ProvinceCenterEmployee.createform.js | 10 +- .../ProvinceCenterEmployee.dashboard.js | 9 +- .../ProvinceCenterEmployee.model.js | 2 +- .../ProvinceCenterEmployee.permission.js | 87 + .../ProvinceCenterEmployee.permission.less | 3 + .../ProvinceCenterEmployee.preference.js | 8 +- .../ProvinceCenterEmployee.profile.js | 94 + .../ProvinceCenterEmployee.profile.less | 3 + .../ProvinceCenterEmployee.search.js | 14 +- .../ProvinceCenterEmployee.searchform.js | 40 +- .../ProvinceCenterEmployee.table.js | 53 +- .../ProvinceCenterEmployee.updateform.js | 10 +- .../publicholiday/PublicHoliday.app.js | 57 +- .../PublicHoliday.associateform.js | 6 +- .../PublicHoliday.associateform.less | 86 - .../publicholiday/PublicHoliday.base.js | 132 +- .../publicholiday/PublicHoliday.createform.js | 6 +- .../publicholiday/PublicHoliday.dashboard.js | 9 +- .../publicholiday/PublicHoliday.model.js | 2 +- .../publicholiday/PublicHoliday.permission.js | 86 + .../PublicHoliday.permission.less | 3 + .../publicholiday/PublicHoliday.preference.js | 8 +- .../publicholiday/PublicHoliday.profile.js | 93 + .../publicholiday/PublicHoliday.profile.less | 3 + .../publicholiday/PublicHoliday.search.js | 14 +- .../publicholiday/PublicHoliday.searchform.js | 38 +- .../publicholiday/PublicHoliday.table.js | 53 +- .../publicholiday/PublicHoliday.updateform.js | 8 +- .../receivingspace/ReceivingSpace.app.js | 57 +- .../ReceivingSpace.associateform.js | 16 +- .../ReceivingSpace.associateform.less | 86 - .../receivingspace/ReceivingSpace.base.js | 154 +- .../ReceivingSpace.createform.js | 16 +- .../ReceivingSpace.dashboard.js | 9 +- .../receivingspace/ReceivingSpace.model.js | 6 +- .../ReceivingSpace.permission.js | 90 + .../ReceivingSpace.permission.less | 3 + .../ReceivingSpace.preference.js | 8 +- .../receivingspace/ReceivingSpace.profile.js | 97 + .../ReceivingSpace.profile.less | 3 + .../receivingspace/ReceivingSpace.search.js | 14 +- .../ReceivingSpace.searchform.js | 40 +- .../receivingspace/ReceivingSpace.table.js | 53 +- .../ReceivingSpace.updateform.js | 14 +- .../ResponsibilityType.app.js | 57 +- .../ResponsibilityType.associateform.js | 6 +- .../ResponsibilityType.associateform.less | 86 - .../ResponsibilityType.base.js | 134 +- .../ResponsibilityType.createform.js | 6 +- .../ResponsibilityType.dashboard.js | 9 +- .../ResponsibilityType.model.js | 6 +- .../ResponsibilityType.permission.js | 86 + .../ResponsibilityType.permission.less | 3 + .../ResponsibilityType.preference.js | 8 +- .../ResponsibilityType.profile.js | 93 + .../ResponsibilityType.profile.less | 3 + .../ResponsibilityType.search.js | 14 +- .../ResponsibilityType.searchform.js | 38 +- .../ResponsibilityType.table.js | 53 +- .../ResponsibilityType.updateform.js | 8 +- .../retailstore/RetailStore.app.js | 57 +- .../retailstore/RetailStore.associateform.js | 20 +- .../RetailStore.associateform.less | 86 - .../retailstore/RetailStore.base.js | 182 +- .../retailstore/RetailStore.createform.js | 20 +- .../retailstore/RetailStore.dashboard.js | 9 +- .../retailstore/RetailStore.model.js | 22 +- .../retailstore/RetailStore.permission.js | 92 + .../retailstore/RetailStore.permission.less | 3 + .../retailstore/RetailStore.preference.js | 8 +- .../retailstore/RetailStore.profile.js | 99 + .../retailstore/RetailStore.profile.less | 3 + .../retailstore/RetailStore.search.js | 14 +- .../retailstore/RetailStore.searchform.js | 44 +- .../retailstore/RetailStore.table.js | 53 +- .../retailstore/RetailStore.updateform.js | 16 +- .../RetailStoreCityServiceCenter.app.js | 57 +- ...ailStoreCityServiceCenter.associateform.js | 6 +- ...lStoreCityServiceCenter.associateform.less | 86 - .../RetailStoreCityServiceCenter.base.js | 146 +- ...RetailStoreCityServiceCenter.createform.js | 6 +- .../RetailStoreCityServiceCenter.dashboard.js | 9 +- .../RetailStoreCityServiceCenter.model.js | 18 +- ...RetailStoreCityServiceCenter.permission.js | 86 + ...tailStoreCityServiceCenter.permission.less | 3 + ...RetailStoreCityServiceCenter.preference.js | 8 +- .../RetailStoreCityServiceCenter.profile.js | 93 + .../RetailStoreCityServiceCenter.profile.less | 3 + .../RetailStoreCityServiceCenter.search.js | 14 +- ...RetailStoreCityServiceCenter.searchform.js | 34 +- .../RetailStoreCityServiceCenter.table.js | 53 +- ...RetailStoreCityServiceCenter.updateform.js | 6 +- .../RetailStoreClosing.app.js | 57 +- .../RetailStoreClosing.associateform.js | 2 +- .../RetailStoreClosing.associateform.less | 86 - .../RetailStoreClosing.base.js | 120 +- .../RetailStoreClosing.createform.js | 2 +- .../RetailStoreClosing.dashboard.js | 9 +- .../RetailStoreClosing.model.js | 6 +- .../RetailStoreClosing.permission.js | 84 + .../RetailStoreClosing.permission.less | 3 + .../RetailStoreClosing.preference.js | 8 +- .../RetailStoreClosing.profile.js | 91 + .../RetailStoreClosing.profile.less | 3 + .../RetailStoreClosing.search.js | 14 +- .../RetailStoreClosing.searchform.js | 32 +- .../RetailStoreClosing.table.js | 53 +- .../RetailStoreClosing.updateform.js | 4 +- .../RetailStoreCountryCenter.app.js | 57 +- .../RetailStoreCountryCenter.associateform.js | 18 +- ...etailStoreCountryCenter.associateform.less | 86 - .../RetailStoreCountryCenter.base.js | 175 +- .../RetailStoreCountryCenter.createform.js | 18 +- .../RetailStoreCountryCenter.dashboard.js | 9 +- .../RetailStoreCountryCenter.model.js | 98 +- .../RetailStoreCountryCenter.permission.js | 101 + .../RetailStoreCountryCenter.permission.less | 3 + .../RetailStoreCountryCenter.preference.js | 28 +- .../RetailStoreCountryCenter.profile.js | 108 + .../RetailStoreCountryCenter.profile.less | 3 + .../RetailStoreCountryCenter.search.js | 14 +- .../RetailStoreCountryCenter.searchform.js | 44 +- .../RetailStoreCountryCenter.table.js | 53 +- .../RetailStoreCountryCenter.updateform.js | 18 +- .../RetailStoreCreation.app.js | 57 +- .../RetailStoreCreation.associateform.js | 2 +- .../RetailStoreCreation.associateform.less | 86 - .../RetailStoreCreation.base.js | 120 +- .../RetailStoreCreation.createform.js | 2 +- .../RetailStoreCreation.dashboard.js | 9 +- .../RetailStoreCreation.model.js | 6 +- .../RetailStoreCreation.permission.js | 84 + .../RetailStoreCreation.permission.less | 3 + .../RetailStoreCreation.preference.js | 8 +- .../RetailStoreCreation.profile.js | 91 + .../RetailStoreCreation.profile.less | 3 + .../RetailStoreCreation.search.js | 14 +- .../RetailStoreCreation.searchform.js | 32 +- .../RetailStoreCreation.table.js | 53 +- .../RetailStoreCreation.updateform.js | 4 +- .../RetailStoreDecoration.app.js | 57 +- .../RetailStoreDecoration.associateform.js | 2 +- .../RetailStoreDecoration.associateform.less | 86 - .../RetailStoreDecoration.base.js | 120 +- .../RetailStoreDecoration.createform.js | 2 +- .../RetailStoreDecoration.dashboard.js | 9 +- .../RetailStoreDecoration.model.js | 6 +- .../RetailStoreDecoration.permission.js | 84 + .../RetailStoreDecoration.permission.less | 3 + .../RetailStoreDecoration.preference.js | 8 +- .../RetailStoreDecoration.profile.js | 91 + .../RetailStoreDecoration.profile.less | 3 + .../RetailStoreDecoration.search.js | 14 +- .../RetailStoreDecoration.searchform.js | 32 +- .../RetailStoreDecoration.table.js | 53 +- .../RetailStoreDecoration.updateform.js | 4 +- .../RetailStoreFranchising.app.js | 57 +- .../RetailStoreFranchising.associateform.js | 2 +- .../RetailStoreFranchising.associateform.less | 86 - .../RetailStoreFranchising.base.js | 120 +- .../RetailStoreFranchising.createform.js | 2 +- .../RetailStoreFranchising.dashboard.js | 9 +- .../RetailStoreFranchising.model.js | 6 +- .../RetailStoreFranchising.permission.js | 84 + .../RetailStoreFranchising.permission.less | 3 + .../RetailStoreFranchising.preference.js | 8 +- .../RetailStoreFranchising.profile.js | 91 + .../RetailStoreFranchising.profile.less | 3 + .../RetailStoreFranchising.search.js | 14 +- .../RetailStoreFranchising.searchform.js | 32 +- .../RetailStoreFranchising.table.js | 53 +- .../RetailStoreFranchising.updateform.js | 4 +- .../RetailStoreInvestmentInvitation.app.js | 57 +- ...StoreInvestmentInvitation.associateform.js | 2 +- ...oreInvestmentInvitation.associateform.less | 86 - .../RetailStoreInvestmentInvitation.base.js | 120 +- ...ailStoreInvestmentInvitation.createform.js | 2 +- ...tailStoreInvestmentInvitation.dashboard.js | 9 +- .../RetailStoreInvestmentInvitation.model.js | 6 +- ...ailStoreInvestmentInvitation.permission.js | 84 + ...lStoreInvestmentInvitation.permission.less | 3 + ...ailStoreInvestmentInvitation.preference.js | 8 +- ...RetailStoreInvestmentInvitation.profile.js | 91 + ...tailStoreInvestmentInvitation.profile.less | 3 + .../RetailStoreInvestmentInvitation.search.js | 14 +- ...ailStoreInvestmentInvitation.searchform.js | 32 +- .../RetailStoreInvestmentInvitation.table.js | 53 +- ...ailStoreInvestmentInvitation.updateform.js | 4 +- .../RetailStoreMember.app.js | 57 +- .../RetailStoreMember.associateform.js | 4 +- .../RetailStoreMember.associateform.less | 86 - .../RetailStoreMember.base.js | 141 +- .../RetailStoreMember.createform.js | 4 +- .../RetailStoreMember.dashboard.js | 9 +- .../RetailStoreMember.model.js | 30 +- .../RetailStoreMember.permission.js | 85 + .../RetailStoreMember.permission.less | 3 + .../RetailStoreMember.preference.js | 8 +- .../RetailStoreMember.profile.js | 92 + .../RetailStoreMember.profile.less | 3 + .../RetailStoreMember.search.js | 14 +- .../RetailStoreMember.searchform.js | 36 +- .../RetailStoreMember.table.js | 53 +- .../RetailStoreMember.updateform.js | 6 +- .../RetailStoreMemberAddress.app.js | 57 +- .../RetailStoreMemberAddress.associateform.js | 6 +- ...etailStoreMemberAddress.associateform.less | 86 - .../RetailStoreMemberAddress.base.js | 138 +- .../RetailStoreMemberAddress.createform.js | 6 +- .../RetailStoreMemberAddress.dashboard.js | 9 +- .../RetailStoreMemberAddress.model.js | 2 +- .../RetailStoreMemberAddress.permission.js | 86 + .../RetailStoreMemberAddress.permission.less | 3 + .../RetailStoreMemberAddress.preference.js | 8 +- .../RetailStoreMemberAddress.profile.js | 93 + .../RetailStoreMemberAddress.profile.less | 3 + .../RetailStoreMemberAddress.search.js | 14 +- .../RetailStoreMemberAddress.searchform.js | 38 +- .../RetailStoreMemberAddress.table.js | 53 +- .../RetailStoreMemberAddress.updateform.js | 8 +- .../RetailStoreMemberCoupon.app.js | 57 +- .../RetailStoreMemberCoupon.associateform.js | 4 +- ...RetailStoreMemberCoupon.associateform.less | 86 - .../RetailStoreMemberCoupon.base.js | 138 +- .../RetailStoreMemberCoupon.createform.js | 4 +- .../RetailStoreMemberCoupon.dashboard.js | 9 +- .../RetailStoreMemberCoupon.model.js | 2 +- .../RetailStoreMemberCoupon.permission.js | 86 + .../RetailStoreMemberCoupon.permission.less | 3 + .../RetailStoreMemberCoupon.preference.js | 8 +- .../RetailStoreMemberCoupon.profile.js | 93 + .../RetailStoreMemberCoupon.profile.less | 3 + .../RetailStoreMemberCoupon.search.js | 14 +- .../RetailStoreMemberCoupon.searchform.js | 36 +- .../RetailStoreMemberCoupon.table.js | 53 +- .../RetailStoreMemberCoupon.updateform.js | 6 +- .../RetailStoreMemberGiftCard.app.js | 57 +- ...RetailStoreMemberGiftCard.associateform.js | 8 +- ...tailStoreMemberGiftCard.associateform.less | 86 - .../RetailStoreMemberGiftCard.base.js | 140 +- .../RetailStoreMemberGiftCard.createform.js | 8 +- .../RetailStoreMemberGiftCard.dashboard.js | 9 +- .../RetailStoreMemberGiftCard.model.js | 6 +- .../RetailStoreMemberGiftCard.permission.js | 86 + .../RetailStoreMemberGiftCard.permission.less | 3 + .../RetailStoreMemberGiftCard.preference.js | 8 +- .../RetailStoreMemberGiftCard.profile.js | 93 + .../RetailStoreMemberGiftCard.profile.less | 3 + .../RetailStoreMemberGiftCard.search.js | 14 +- .../RetailStoreMemberGiftCard.searchform.js | 36 +- .../RetailStoreMemberGiftCard.table.js | 53 +- .../RetailStoreMemberGiftCard.updateform.js | 8 +- ...ailStoreMemberGiftCardConsumeRecord.app.js | 57 +- ...mberGiftCardConsumeRecord.associateform.js | 10 +- ...erGiftCardConsumeRecord.associateform.less | 86 - ...ilStoreMemberGiftCardConsumeRecord.base.js | 148 +- ...eMemberGiftCardConsumeRecord.createform.js | 10 +- ...reMemberGiftCardConsumeRecord.dashboard.js | 9 +- ...lStoreMemberGiftCardConsumeRecord.model.js | 2 +- ...eMemberGiftCardConsumeRecord.permission.js | 86 + ...emberGiftCardConsumeRecord.permission.less | 3 + ...eMemberGiftCardConsumeRecord.preference.js | 8 +- ...toreMemberGiftCardConsumeRecord.profile.js | 93 + ...reMemberGiftCardConsumeRecord.profile.less | 3 + ...StoreMemberGiftCardConsumeRecord.search.js | 14 +- ...eMemberGiftCardConsumeRecord.searchform.js | 36 +- ...lStoreMemberGiftCardConsumeRecord.table.js | 53 +- ...eMemberGiftCardConsumeRecord.updateform.js | 8 +- .../RetailStoreOpening.app.js | 57 +- .../RetailStoreOpening.associateform.js | 2 +- .../RetailStoreOpening.associateform.less | 86 - .../RetailStoreOpening.base.js | 120 +- .../RetailStoreOpening.createform.js | 2 +- .../RetailStoreOpening.dashboard.js | 9 +- .../RetailStoreOpening.model.js | 6 +- .../RetailStoreOpening.permission.js | 84 + .../RetailStoreOpening.permission.less | 3 + .../RetailStoreOpening.preference.js | 8 +- .../RetailStoreOpening.profile.js | 91 + .../RetailStoreOpening.profile.less | 3 + .../RetailStoreOpening.search.js | 14 +- .../RetailStoreOpening.searchform.js | 32 +- .../RetailStoreOpening.table.js | 53 +- .../RetailStoreOpening.updateform.js | 4 +- .../retailstoreorder/RetailStoreOrder.app.js | 57 +- .../RetailStoreOrder.associateform.js | 6 +- .../RetailStoreOrder.associateform.less | 86 - .../retailstoreorder/RetailStoreOrder.base.js | 165 +- .../RetailStoreOrder.createform.js | 6 +- .../RetailStoreOrder.dashboard.js | 9 +- .../RetailStoreOrder.model.js | 18 +- .../RetailStoreOrder.permission.js | 87 + .../RetailStoreOrder.permission.less | 3 + .../RetailStoreOrder.preference.js | 8 +- .../RetailStoreOrder.profile.js | 94 + .../RetailStoreOrder.profile.less | 3 + .../RetailStoreOrder.search.js | 14 +- .../RetailStoreOrder.searchform.js | 38 +- .../RetailStoreOrder.table.js | 53 +- .../RetailStoreOrder.updateform.js | 6 +- .../RetailStoreOrderApproval.app.js | 57 +- .../RetailStoreOrderApproval.associateform.js | 6 +- ...etailStoreOrderApproval.associateform.less | 86 - .../RetailStoreOrderApproval.base.js | 125 +- .../RetailStoreOrderApproval.createform.js | 6 +- .../RetailStoreOrderApproval.dashboard.js | 9 +- .../RetailStoreOrderApproval.model.js | 6 +- .../RetailStoreOrderApproval.permission.js | 85 + .../RetailStoreOrderApproval.permission.less | 3 + .../RetailStoreOrderApproval.preference.js | 8 +- .../RetailStoreOrderApproval.profile.js | 92 + .../RetailStoreOrderApproval.profile.less | 3 + .../RetailStoreOrderApproval.search.js | 14 +- .../RetailStoreOrderApproval.searchform.js | 32 +- .../RetailStoreOrderApproval.table.js | 53 +- .../RetailStoreOrderApproval.updateform.js | 6 +- .../RetailStoreOrderConfirmation.app.js | 57 +- ...ailStoreOrderConfirmation.associateform.js | 6 +- ...lStoreOrderConfirmation.associateform.less | 86 - .../RetailStoreOrderConfirmation.base.js | 125 +- ...RetailStoreOrderConfirmation.createform.js | 6 +- .../RetailStoreOrderConfirmation.dashboard.js | 9 +- .../RetailStoreOrderConfirmation.model.js | 6 +- ...RetailStoreOrderConfirmation.permission.js | 85 + ...tailStoreOrderConfirmation.permission.less | 3 + ...RetailStoreOrderConfirmation.preference.js | 8 +- .../RetailStoreOrderConfirmation.profile.js | 92 + .../RetailStoreOrderConfirmation.profile.less | 3 + .../RetailStoreOrderConfirmation.search.js | 14 +- ...RetailStoreOrderConfirmation.searchform.js | 32 +- .../RetailStoreOrderConfirmation.table.js | 53 +- ...RetailStoreOrderConfirmation.updateform.js | 6 +- .../RetailStoreOrderDelivery.app.js | 57 +- .../RetailStoreOrderDelivery.associateform.js | 6 +- ...etailStoreOrderDelivery.associateform.less | 86 - .../RetailStoreOrderDelivery.base.js | 125 +- .../RetailStoreOrderDelivery.createform.js | 6 +- .../RetailStoreOrderDelivery.dashboard.js | 9 +- .../RetailStoreOrderDelivery.model.js | 6 +- .../RetailStoreOrderDelivery.permission.js | 85 + .../RetailStoreOrderDelivery.permission.less | 3 + .../RetailStoreOrderDelivery.preference.js | 8 +- .../RetailStoreOrderDelivery.profile.js | 92 + .../RetailStoreOrderDelivery.profile.less | 3 + .../RetailStoreOrderDelivery.search.js | 14 +- .../RetailStoreOrderDelivery.searchform.js | 32 +- .../RetailStoreOrderDelivery.table.js | 53 +- .../RetailStoreOrderDelivery.updateform.js | 6 +- .../RetailStoreOrderLineItem.app.js | 57 +- .../RetailStoreOrderLineItem.associateform.js | 14 +- ...etailStoreOrderLineItem.associateform.less | 86 - .../RetailStoreOrderLineItem.base.js | 146 +- .../RetailStoreOrderLineItem.createform.js | 14 +- .../RetailStoreOrderLineItem.dashboard.js | 9 +- .../RetailStoreOrderLineItem.model.js | 2 +- .../RetailStoreOrderLineItem.permission.js | 88 + .../RetailStoreOrderLineItem.permission.less | 3 + .../RetailStoreOrderLineItem.preference.js | 8 +- .../RetailStoreOrderLineItem.profile.js | 95 + .../RetailStoreOrderLineItem.profile.less | 3 + .../RetailStoreOrderLineItem.search.js | 14 +- .../RetailStoreOrderLineItem.searchform.js | 38 +- .../RetailStoreOrderLineItem.table.js | 53 +- .../RetailStoreOrderLineItem.updateform.js | 12 +- .../RetailStoreOrderPaymentGroup.app.js | 57 +- ...ailStoreOrderPaymentGroup.associateform.js | 4 +- ...lStoreOrderPaymentGroup.associateform.less | 86 - .../RetailStoreOrderPaymentGroup.base.js | 133 +- ...RetailStoreOrderPaymentGroup.createform.js | 4 +- .../RetailStoreOrderPaymentGroup.dashboard.js | 9 +- .../RetailStoreOrderPaymentGroup.model.js | 2 +- ...RetailStoreOrderPaymentGroup.permission.js | 85 + ...tailStoreOrderPaymentGroup.permission.less | 3 + ...RetailStoreOrderPaymentGroup.preference.js | 8 +- .../RetailStoreOrderPaymentGroup.profile.js | 92 + .../RetailStoreOrderPaymentGroup.profile.less | 3 + .../RetailStoreOrderPaymentGroup.search.js | 14 +- ...RetailStoreOrderPaymentGroup.searchform.js | 36 +- .../RetailStoreOrderPaymentGroup.table.js | 53 +- ...RetailStoreOrderPaymentGroup.updateform.js | 6 +- .../RetailStoreOrderPicking.app.js | 57 +- .../RetailStoreOrderPicking.associateform.js | 6 +- ...RetailStoreOrderPicking.associateform.less | 86 - .../RetailStoreOrderPicking.base.js | 125 +- .../RetailStoreOrderPicking.createform.js | 6 +- .../RetailStoreOrderPicking.dashboard.js | 9 +- .../RetailStoreOrderPicking.model.js | 6 +- .../RetailStoreOrderPicking.permission.js | 85 + .../RetailStoreOrderPicking.permission.less | 3 + .../RetailStoreOrderPicking.preference.js | 8 +- .../RetailStoreOrderPicking.profile.js | 92 + .../RetailStoreOrderPicking.profile.less | 3 + .../RetailStoreOrderPicking.search.js | 14 +- .../RetailStoreOrderPicking.searchform.js | 32 +- .../RetailStoreOrderPicking.table.js | 53 +- .../RetailStoreOrderPicking.updateform.js | 6 +- .../RetailStoreOrderProcessing.app.js | 57 +- ...etailStoreOrderProcessing.associateform.js | 6 +- ...ailStoreOrderProcessing.associateform.less | 86 - .../RetailStoreOrderProcessing.base.js | 125 +- .../RetailStoreOrderProcessing.createform.js | 6 +- .../RetailStoreOrderProcessing.dashboard.js | 9 +- .../RetailStoreOrderProcessing.model.js | 6 +- .../RetailStoreOrderProcessing.permission.js | 85 + ...RetailStoreOrderProcessing.permission.less | 3 + .../RetailStoreOrderProcessing.preference.js | 8 +- .../RetailStoreOrderProcessing.profile.js | 92 + .../RetailStoreOrderProcessing.profile.less | 3 + .../RetailStoreOrderProcessing.search.js | 14 +- .../RetailStoreOrderProcessing.searchform.js | 32 +- .../RetailStoreOrderProcessing.table.js | 53 +- .../RetailStoreOrderProcessing.updateform.js | 6 +- .../RetailStoreOrderShipment.app.js | 57 +- .../RetailStoreOrderShipment.associateform.js | 6 +- ...etailStoreOrderShipment.associateform.less | 86 - .../RetailStoreOrderShipment.base.js | 125 +- .../RetailStoreOrderShipment.createform.js | 6 +- .../RetailStoreOrderShipment.dashboard.js | 9 +- .../RetailStoreOrderShipment.model.js | 6 +- .../RetailStoreOrderShipment.permission.js | 85 + .../RetailStoreOrderShipment.permission.less | 3 + .../RetailStoreOrderShipment.preference.js | 8 +- .../RetailStoreOrderShipment.profile.js | 92 + .../RetailStoreOrderShipment.profile.less | 3 + .../RetailStoreOrderShipment.search.js | 14 +- .../RetailStoreOrderShipment.searchform.js | 32 +- .../RetailStoreOrderShipment.table.js | 53 +- .../RetailStoreOrderShipment.updateform.js | 6 +- .../RetailStoreOrderShippingGroup.app.js | 57 +- ...ilStoreOrderShippingGroup.associateform.js | 6 +- ...StoreOrderShippingGroup.associateform.less | 86 - .../RetailStoreOrderShippingGroup.base.js | 133 +- ...etailStoreOrderShippingGroup.createform.js | 6 +- ...RetailStoreOrderShippingGroup.dashboard.js | 9 +- .../RetailStoreOrderShippingGroup.model.js | 2 +- ...etailStoreOrderShippingGroup.permission.js | 85 + ...ailStoreOrderShippingGroup.permission.less | 3 + ...etailStoreOrderShippingGroup.preference.js | 8 +- .../RetailStoreOrderShippingGroup.profile.js | 92 + ...RetailStoreOrderShippingGroup.profile.less | 3 + .../RetailStoreOrderShippingGroup.search.js | 14 +- ...etailStoreOrderShippingGroup.searchform.js | 34 +- .../RetailStoreOrderShippingGroup.table.js | 53 +- ...etailStoreOrderShippingGroup.updateform.js | 6 +- .../RetailStoreProvinceCenter.app.js | 57 +- ...RetailStoreProvinceCenter.associateform.js | 6 +- ...tailStoreProvinceCenter.associateform.less | 86 - .../RetailStoreProvinceCenter.base.js | 136 +- .../RetailStoreProvinceCenter.createform.js | 6 +- .../RetailStoreProvinceCenter.dashboard.js | 9 +- .../RetailStoreProvinceCenter.model.js | 14 +- .../RetailStoreProvinceCenter.permission.js | 87 + .../RetailStoreProvinceCenter.permission.less | 3 + .../RetailStoreProvinceCenter.preference.js | 10 +- .../RetailStoreProvinceCenter.profile.js | 94 + .../RetailStoreProvinceCenter.profile.less | 3 + .../RetailStoreProvinceCenter.search.js | 14 +- .../RetailStoreProvinceCenter.searchform.js | 34 +- .../RetailStoreProvinceCenter.table.js | 53 +- .../RetailStoreProvinceCenter.updateform.js | 6 +- .../salarygrade/SalaryGrade.app.js | 57 +- .../salarygrade/SalaryGrade.associateform.js | 6 +- .../SalaryGrade.associateform.less | 86 - .../salarygrade/SalaryGrade.base.js | 136 +- .../salarygrade/SalaryGrade.createform.js | 6 +- .../salarygrade/SalaryGrade.dashboard.js | 9 +- .../salarygrade/SalaryGrade.model.js | 10 +- .../salarygrade/SalaryGrade.permission.js | 86 + .../salarygrade/SalaryGrade.permission.less | 3 + .../salarygrade/SalaryGrade.preference.js | 8 +- .../salarygrade/SalaryGrade.profile.js | 93 + .../salarygrade/SalaryGrade.profile.less | 3 + .../salarygrade/SalaryGrade.search.js | 14 +- .../salarygrade/SalaryGrade.searchform.js | 38 +- .../salarygrade/SalaryGrade.table.js | 53 +- .../salarygrade/SalaryGrade.updateform.js | 8 +- .../src/bizcomponents/scoring/Scoring.app.js | 57 +- .../scoring/Scoring.associateform.js | 8 +- .../scoring/Scoring.associateform.less | 86 - .../src/bizcomponents/scoring/Scoring.base.js | 130 +- .../scoring/Scoring.createform.js | 8 +- .../scoring/Scoring.dashboard.js | 9 +- .../bizcomponents/scoring/Scoring.model.js | 6 +- .../scoring/Scoring.permission.js | 86 + .../scoring/Scoring.permission.less | 3 + .../scoring/Scoring.preference.js | 8 +- .../bizcomponents/scoring/Scoring.profile.js | 93 + .../scoring/Scoring.profile.less | 3 + .../bizcomponents/scoring/Scoring.search.js | 14 +- .../scoring/Scoring.searchform.js | 34 +- .../bizcomponents/scoring/Scoring.table.js | 53 +- .../scoring/Scoring.updateform.js | 8 +- .../src/bizcomponents/secuser/SecUser.app.js | 57 +- .../secuser/SecUser.associateform.js | 18 +- .../secuser/SecUser.associateform.less | 86 - .../src/bizcomponents/secuser/SecUser.base.js | 155 +- .../secuser/SecUser.createform.js | 18 +- .../secuser/SecUser.dashboard.js | 9 +- .../bizcomponents/secuser/SecUser.model.js | 10 +- .../secuser/SecUser.permission.js | 91 + .../secuser/SecUser.permission.less | 3 + .../secuser/SecUser.preference.js | 8 +- .../bizcomponents/secuser/SecUser.profile.js | 98 + .../secuser/SecUser.profile.less | 3 + .../bizcomponents/secuser/SecUser.search.js | 14 +- .../secuser/SecUser.searchform.js | 42 +- .../bizcomponents/secuser/SecUser.table.js | 53 +- .../secuser/SecUser.updateform.js | 16 +- .../secuserblocking/SecUserBlocking.app.js | 57 +- .../SecUserBlocking.associateform.js | 4 +- .../SecUserBlocking.associateform.less | 86 - .../secuserblocking/SecUserBlocking.base.js | 130 +- .../SecUserBlocking.createform.js | 4 +- .../SecUserBlocking.dashboard.js | 9 +- .../secuserblocking/SecUserBlocking.model.js | 6 +- .../SecUserBlocking.permission.js | 86 + .../SecUserBlocking.permission.less | 3 + .../SecUserBlocking.preference.js | 8 +- .../SecUserBlocking.profile.js | 93 + .../SecUserBlocking.profile.less | 3 + .../secuserblocking/SecUserBlocking.search.js | 14 +- .../SecUserBlocking.searchform.js | 34 +- .../secuserblocking/SecUserBlocking.table.js | 53 +- .../SecUserBlocking.updateform.js | 6 +- .../shippingspace/ShippingSpace.app.js | 57 +- .../ShippingSpace.associateform.js | 16 +- .../ShippingSpace.associateform.less | 86 - .../shippingspace/ShippingSpace.base.js | 154 +- .../shippingspace/ShippingSpace.createform.js | 16 +- .../shippingspace/ShippingSpace.dashboard.js | 9 +- .../shippingspace/ShippingSpace.model.js | 6 +- .../shippingspace/ShippingSpace.permission.js | 90 + .../ShippingSpace.permission.less | 3 + .../shippingspace/ShippingSpace.preference.js | 8 +- .../shippingspace/ShippingSpace.profile.js | 97 + .../shippingspace/ShippingSpace.profile.less | 3 + .../shippingspace/ShippingSpace.search.js | 14 +- .../shippingspace/ShippingSpace.searchform.js | 40 +- .../shippingspace/ShippingSpace.table.js | 53 +- .../shippingspace/ShippingSpace.updateform.js | 14 +- .../bizcomponents/skilltype/SkillType.app.js | 57 +- .../skilltype/SkillType.associateform.js | 4 +- .../skilltype/SkillType.associateform.less | 86 - .../bizcomponents/skilltype/SkillType.base.js | 129 +- .../skilltype/SkillType.createform.js | 4 +- .../skilltype/SkillType.dashboard.js | 9 +- .../skilltype/SkillType.model.js | 6 +- .../skilltype/SkillType.permission.js | 85 + .../skilltype/SkillType.permission.less | 3 + .../skilltype/SkillType.preference.js | 8 +- .../skilltype/SkillType.profile.js | 92 + .../skilltype/SkillType.profile.less | 3 + .../skilltype/SkillType.search.js | 14 +- .../skilltype/SkillType.searchform.js | 36 +- .../skilltype/SkillType.table.js | 53 +- .../skilltype/SkillType.updateform.js | 6 +- bizui/src/bizcomponents/sku/Sku.app.js | 57 +- .../bizcomponents/sku/Sku.associateform.js | 14 +- .../bizcomponents/sku/Sku.associateform.less | 86 - bizui/src/bizcomponents/sku/Sku.base.js | 153 +- bizui/src/bizcomponents/sku/Sku.createform.js | 14 +- bizui/src/bizcomponents/sku/Sku.dashboard.js | 9 +- bizui/src/bizcomponents/sku/Sku.model.js | 6 +- bizui/src/bizcomponents/sku/Sku.permission.js | 89 + .../src/bizcomponents/sku/Sku.permission.less | 3 + bizui/src/bizcomponents/sku/Sku.preference.js | 8 +- bizui/src/bizcomponents/sku/Sku.profile.js | 96 + bizui/src/bizcomponents/sku/Sku.profile.less | 3 + bizui/src/bizcomponents/sku/Sku.search.js | 14 +- bizui/src/bizcomponents/sku/Sku.searchform.js | 42 +- bizui/src/bizcomponents/sku/Sku.table.js | 53 +- bizui/src/bizcomponents/sku/Sku.updateform.js | 14 +- .../smartpallet/SmartPallet.app.js | 57 +- .../smartpallet/SmartPallet.associateform.js | 14 +- .../SmartPallet.associateform.less | 86 - .../smartpallet/SmartPallet.base.js | 151 +- .../smartpallet/SmartPallet.createform.js | 14 +- .../smartpallet/SmartPallet.dashboard.js | 9 +- .../smartpallet/SmartPallet.model.js | 6 +- .../smartpallet/SmartPallet.permission.js | 89 + .../smartpallet/SmartPallet.permission.less | 3 + .../smartpallet/SmartPallet.preference.js | 8 +- .../smartpallet/SmartPallet.profile.js | 96 + .../smartpallet/SmartPallet.profile.less | 3 + .../smartpallet/SmartPallet.search.js | 14 +- .../smartpallet/SmartPallet.searchform.js | 38 +- .../smartpallet/SmartPallet.table.js | 53 +- .../smartpallet/SmartPallet.updateform.js | 12 +- .../StockCountIssueTrack.app.js | 57 +- .../StockCountIssueTrack.associateform.js | 8 +- .../StockCountIssueTrack.associateform.less | 86 - .../StockCountIssueTrack.base.js | 138 +- .../StockCountIssueTrack.createform.js | 8 +- .../StockCountIssueTrack.dashboard.js | 9 +- .../StockCountIssueTrack.model.js | 2 +- .../StockCountIssueTrack.permission.js | 86 + .../StockCountIssueTrack.permission.less | 3 + .../StockCountIssueTrack.preference.js | 8 +- .../StockCountIssueTrack.profile.js | 93 + .../StockCountIssueTrack.profile.less | 3 + .../StockCountIssueTrack.search.js | 14 +- .../StockCountIssueTrack.searchform.js | 36 +- .../StockCountIssueTrack.table.js | 53 +- .../StockCountIssueTrack.updateform.js | 8 +- .../storagespace/StorageSpace.app.js | 57 +- .../StorageSpace.associateform.js | 14 +- .../StorageSpace.associateform.less | 86 - .../storagespace/StorageSpace.base.js | 151 +- .../storagespace/StorageSpace.createform.js | 14 +- .../storagespace/StorageSpace.dashboard.js | 9 +- .../storagespace/StorageSpace.model.js | 6 +- .../storagespace/StorageSpace.permission.js | 89 + .../storagespace/StorageSpace.permission.less | 3 + .../storagespace/StorageSpace.preference.js | 8 +- .../storagespace/StorageSpace.profile.js | 96 + .../storagespace/StorageSpace.profile.less | 3 + .../storagespace/StorageSpace.search.js | 14 +- .../storagespace/StorageSpace.searchform.js | 38 +- .../storagespace/StorageSpace.table.js | 53 +- .../storagespace/StorageSpace.updateform.js | 12 +- .../supplierproduct/SupplierProduct.app.js | 57 +- .../SupplierProduct.associateform.js | 6 +- .../SupplierProduct.associateform.less | 86 - .../supplierproduct/SupplierProduct.base.js | 140 +- .../SupplierProduct.createform.js | 6 +- .../SupplierProduct.dashboard.js | 9 +- .../supplierproduct/SupplierProduct.model.js | 6 +- .../SupplierProduct.permission.js | 86 + .../SupplierProduct.permission.less | 3 + .../SupplierProduct.preference.js | 8 +- .../SupplierProduct.profile.js | 93 + .../SupplierProduct.profile.less | 3 + .../supplierproduct/SupplierProduct.search.js | 14 +- .../SupplierProduct.searchform.js | 38 +- .../supplierproduct/SupplierProduct.table.js | 53 +- .../SupplierProduct.updateform.js | 8 +- .../supplierspace/SupplierSpace.app.js | 57 +- .../SupplierSpace.associateform.js | 14 +- .../SupplierSpace.associateform.less | 86 - .../supplierspace/SupplierSpace.base.js | 151 +- .../supplierspace/SupplierSpace.createform.js | 14 +- .../supplierspace/SupplierSpace.dashboard.js | 9 +- .../supplierspace/SupplierSpace.model.js | 6 +- .../supplierspace/SupplierSpace.permission.js | 89 + .../SupplierSpace.permission.less | 3 + .../supplierspace/SupplierSpace.preference.js | 8 +- .../supplierspace/SupplierSpace.profile.js | 96 + .../supplierspace/SupplierSpace.profile.less | 3 + .../supplierspace/SupplierSpace.search.js | 14 +- .../supplierspace/SupplierSpace.searchform.js | 38 +- .../supplierspace/SupplierSpace.table.js | 53 +- .../supplierspace/SupplierSpace.updateform.js | 12 +- .../supplyorder/SupplyOrder.app.js | 57 +- .../supplyorder/SupplyOrder.associateform.js | 6 +- .../SupplyOrder.associateform.less | 86 - .../supplyorder/SupplyOrder.base.js | 165 +- .../supplyorder/SupplyOrder.createform.js | 6 +- .../supplyorder/SupplyOrder.dashboard.js | 9 +- .../supplyorder/SupplyOrder.model.js | 18 +- .../supplyorder/SupplyOrder.permission.js | 87 + .../supplyorder/SupplyOrder.permission.less | 3 + .../supplyorder/SupplyOrder.preference.js | 8 +- .../supplyorder/SupplyOrder.profile.js | 94 + .../supplyorder/SupplyOrder.profile.less | 3 + .../supplyorder/SupplyOrder.search.js | 14 +- .../supplyorder/SupplyOrder.searchform.js | 38 +- .../supplyorder/SupplyOrder.table.js | 53 +- .../supplyorder/SupplyOrder.updateform.js | 6 +- .../SupplyOrderApproval.app.js | 57 +- .../SupplyOrderApproval.associateform.js | 6 +- .../SupplyOrderApproval.associateform.less | 86 - .../SupplyOrderApproval.base.js | 127 +- .../SupplyOrderApproval.createform.js | 6 +- .../SupplyOrderApproval.dashboard.js | 9 +- .../SupplyOrderApproval.model.js | 10 +- .../SupplyOrderApproval.permission.js | 85 + .../SupplyOrderApproval.permission.less | 3 + .../SupplyOrderApproval.preference.js | 8 +- .../SupplyOrderApproval.profile.js | 92 + .../SupplyOrderApproval.profile.less | 3 + .../SupplyOrderApproval.search.js | 14 +- .../SupplyOrderApproval.searchform.js | 32 +- .../SupplyOrderApproval.table.js | 53 +- .../SupplyOrderApproval.updateform.js | 6 +- .../SupplyOrderConfirmation.app.js | 57 +- .../SupplyOrderConfirmation.associateform.js | 6 +- ...SupplyOrderConfirmation.associateform.less | 86 - .../SupplyOrderConfirmation.base.js | 127 +- .../SupplyOrderConfirmation.createform.js | 6 +- .../SupplyOrderConfirmation.dashboard.js | 9 +- .../SupplyOrderConfirmation.model.js | 10 +- .../SupplyOrderConfirmation.permission.js | 85 + .../SupplyOrderConfirmation.permission.less | 3 + .../SupplyOrderConfirmation.preference.js | 8 +- .../SupplyOrderConfirmation.profile.js | 92 + .../SupplyOrderConfirmation.profile.less | 3 + .../SupplyOrderConfirmation.search.js | 14 +- .../SupplyOrderConfirmation.searchform.js | 32 +- .../SupplyOrderConfirmation.table.js | 53 +- .../SupplyOrderConfirmation.updateform.js | 6 +- .../SupplyOrderDelivery.app.js | 57 +- .../SupplyOrderDelivery.associateform.js | 6 +- .../SupplyOrderDelivery.associateform.less | 86 - .../SupplyOrderDelivery.base.js | 127 +- .../SupplyOrderDelivery.createform.js | 6 +- .../SupplyOrderDelivery.dashboard.js | 9 +- .../SupplyOrderDelivery.model.js | 10 +- .../SupplyOrderDelivery.permission.js | 85 + .../SupplyOrderDelivery.permission.less | 3 + .../SupplyOrderDelivery.preference.js | 8 +- .../SupplyOrderDelivery.profile.js | 92 + .../SupplyOrderDelivery.profile.less | 3 + .../SupplyOrderDelivery.search.js | 14 +- .../SupplyOrderDelivery.searchform.js | 32 +- .../SupplyOrderDelivery.table.js | 53 +- .../SupplyOrderDelivery.updateform.js | 6 +- .../SupplyOrderLineItem.app.js | 57 +- .../SupplyOrderLineItem.associateform.js | 14 +- .../SupplyOrderLineItem.associateform.less | 86 - .../SupplyOrderLineItem.base.js | 146 +- .../SupplyOrderLineItem.createform.js | 14 +- .../SupplyOrderLineItem.dashboard.js | 9 +- .../SupplyOrderLineItem.model.js | 2 +- .../SupplyOrderLineItem.permission.js | 88 + .../SupplyOrderLineItem.permission.less | 3 + .../SupplyOrderLineItem.preference.js | 8 +- .../SupplyOrderLineItem.profile.js | 95 + .../SupplyOrderLineItem.profile.less | 3 + .../SupplyOrderLineItem.search.js | 14 +- .../SupplyOrderLineItem.searchform.js | 38 +- .../SupplyOrderLineItem.table.js | 53 +- .../SupplyOrderLineItem.updateform.js | 12 +- .../SupplyOrderPaymentGroup.app.js | 57 +- .../SupplyOrderPaymentGroup.associateform.js | 4 +- ...SupplyOrderPaymentGroup.associateform.less | 86 - .../SupplyOrderPaymentGroup.base.js | 133 +- .../SupplyOrderPaymentGroup.createform.js | 4 +- .../SupplyOrderPaymentGroup.dashboard.js | 9 +- .../SupplyOrderPaymentGroup.model.js | 2 +- .../SupplyOrderPaymentGroup.permission.js | 85 + .../SupplyOrderPaymentGroup.permission.less | 3 + .../SupplyOrderPaymentGroup.preference.js | 8 +- .../SupplyOrderPaymentGroup.profile.js | 92 + .../SupplyOrderPaymentGroup.profile.less | 3 + .../SupplyOrderPaymentGroup.search.js | 14 +- .../SupplyOrderPaymentGroup.searchform.js | 36 +- .../SupplyOrderPaymentGroup.table.js | 53 +- .../SupplyOrderPaymentGroup.updateform.js | 6 +- .../SupplyOrderPicking.app.js | 57 +- .../SupplyOrderPicking.associateform.js | 6 +- .../SupplyOrderPicking.associateform.less | 86 - .../SupplyOrderPicking.base.js | 125 +- .../SupplyOrderPicking.createform.js | 6 +- .../SupplyOrderPicking.dashboard.js | 9 +- .../SupplyOrderPicking.model.js | 6 +- .../SupplyOrderPicking.permission.js | 85 + .../SupplyOrderPicking.permission.less | 3 + .../SupplyOrderPicking.preference.js | 8 +- .../SupplyOrderPicking.profile.js | 92 + .../SupplyOrderPicking.profile.less | 3 + .../SupplyOrderPicking.search.js | 14 +- .../SupplyOrderPicking.searchform.js | 32 +- .../SupplyOrderPicking.table.js | 53 +- .../SupplyOrderPicking.updateform.js | 6 +- .../SupplyOrderProcessing.app.js | 57 +- .../SupplyOrderProcessing.associateform.js | 6 +- .../SupplyOrderProcessing.associateform.less | 86 - .../SupplyOrderProcessing.base.js | 127 +- .../SupplyOrderProcessing.createform.js | 6 +- .../SupplyOrderProcessing.dashboard.js | 9 +- .../SupplyOrderProcessing.model.js | 10 +- .../SupplyOrderProcessing.permission.js | 85 + .../SupplyOrderProcessing.permission.less | 3 + .../SupplyOrderProcessing.preference.js | 8 +- .../SupplyOrderProcessing.profile.js | 92 + .../SupplyOrderProcessing.profile.less | 3 + .../SupplyOrderProcessing.search.js | 14 +- .../SupplyOrderProcessing.searchform.js | 32 +- .../SupplyOrderProcessing.table.js | 53 +- .../SupplyOrderProcessing.updateform.js | 6 +- .../SupplyOrderShipment.app.js | 57 +- .../SupplyOrderShipment.associateform.js | 6 +- .../SupplyOrderShipment.associateform.less | 86 - .../SupplyOrderShipment.base.js | 127 +- .../SupplyOrderShipment.createform.js | 6 +- .../SupplyOrderShipment.dashboard.js | 9 +- .../SupplyOrderShipment.model.js | 10 +- .../SupplyOrderShipment.permission.js | 85 + .../SupplyOrderShipment.permission.less | 3 + .../SupplyOrderShipment.preference.js | 8 +- .../SupplyOrderShipment.profile.js | 92 + .../SupplyOrderShipment.profile.less | 3 + .../SupplyOrderShipment.search.js | 14 +- .../SupplyOrderShipment.searchform.js | 32 +- .../SupplyOrderShipment.table.js | 53 +- .../SupplyOrderShipment.updateform.js | 6 +- .../SupplyOrderShippingGroup.app.js | 57 +- .../SupplyOrderShippingGroup.associateform.js | 6 +- ...upplyOrderShippingGroup.associateform.less | 86 - .../SupplyOrderShippingGroup.base.js | 133 +- .../SupplyOrderShippingGroup.createform.js | 6 +- .../SupplyOrderShippingGroup.dashboard.js | 9 +- .../SupplyOrderShippingGroup.model.js | 2 +- .../SupplyOrderShippingGroup.permission.js | 85 + .../SupplyOrderShippingGroup.permission.less | 3 + .../SupplyOrderShippingGroup.preference.js | 8 +- .../SupplyOrderShippingGroup.profile.js | 92 + .../SupplyOrderShippingGroup.profile.less | 3 + .../SupplyOrderShippingGroup.search.js | 14 +- .../SupplyOrderShippingGroup.searchform.js | 34 +- .../SupplyOrderShippingGroup.table.js | 53 +- .../SupplyOrderShippingGroup.updateform.js | 6 +- .../termination/Termination.app.js | 57 +- .../termination/Termination.associateform.js | 2 +- .../Termination.associateform.less | 86 - .../termination/Termination.base.js | 140 +- .../termination/Termination.createform.js | 2 +- .../termination/Termination.dashboard.js | 9 +- .../termination/Termination.model.js | 6 +- .../termination/Termination.permission.js | 84 + .../termination/Termination.permission.less | 3 + .../termination/Termination.preference.js | 8 +- .../termination/Termination.profile.js | 91 + .../termination/Termination.profile.less | 3 + .../termination/Termination.search.js | 14 +- .../termination/Termination.searchform.js | 36 +- .../termination/Termination.table.js | 53 +- .../termination/Termination.updateform.js | 4 +- .../TerminationReason.app.js | 57 +- .../TerminationReason.associateform.js | 4 +- .../TerminationReason.associateform.less | 86 - .../TerminationReason.base.js | 129 +- .../TerminationReason.createform.js | 4 +- .../TerminationReason.dashboard.js | 9 +- .../TerminationReason.model.js | 6 +- .../TerminationReason.permission.js | 85 + .../TerminationReason.permission.less | 3 + .../TerminationReason.preference.js | 8 +- .../TerminationReason.profile.js | 92 + .../TerminationReason.profile.less | 3 + .../TerminationReason.search.js | 14 +- .../TerminationReason.searchform.js | 36 +- .../TerminationReason.table.js | 53 +- .../TerminationReason.updateform.js | 6 +- .../terminationtype/TerminationType.app.js | 57 +- .../TerminationType.associateform.js | 6 +- .../TerminationType.associateform.less | 86 - .../terminationtype/TerminationType.base.js | 134 +- .../TerminationType.createform.js | 6 +- .../TerminationType.dashboard.js | 9 +- .../terminationtype/TerminationType.model.js | 6 +- .../TerminationType.permission.js | 86 + .../TerminationType.permission.less | 3 + .../TerminationType.preference.js | 8 +- .../TerminationType.profile.js | 93 + .../TerminationType.profile.less | 3 + .../terminationtype/TerminationType.search.js | 14 +- .../TerminationType.searchform.js | 38 +- .../terminationtype/TerminationType.table.js | 53 +- .../TerminationType.updateform.js | 8 +- .../TrainingCourseType.app.js | 57 +- .../TrainingCourseType.associateform.js | 6 +- .../TrainingCourseType.associateform.less | 86 - .../TrainingCourseType.base.js | 134 +- .../TrainingCourseType.createform.js | 6 +- .../TrainingCourseType.dashboard.js | 9 +- .../TrainingCourseType.model.js | 6 +- .../TrainingCourseType.permission.js | 86 + .../TrainingCourseType.permission.less | 3 + .../TrainingCourseType.preference.js | 8 +- .../TrainingCourseType.profile.js | 93 + .../TrainingCourseType.profile.less | 3 + .../TrainingCourseType.search.js | 14 +- .../TrainingCourseType.searchform.js | 38 +- .../TrainingCourseType.table.js | 53 +- .../TrainingCourseType.updateform.js | 8 +- .../transportfleet/TransportFleet.app.js | 57 +- .../TransportFleet.associateform.js | 4 +- .../TransportFleet.associateform.less | 86 - .../transportfleet/TransportFleet.base.js | 138 +- .../TransportFleet.createform.js | 4 +- .../TransportFleet.dashboard.js | 9 +- .../transportfleet/TransportFleet.model.js | 14 +- .../TransportFleet.permission.js | 86 + .../TransportFleet.permission.less | 3 + .../TransportFleet.preference.js | 8 +- .../transportfleet/TransportFleet.profile.js | 93 + .../TransportFleet.profile.less | 3 + .../transportfleet/TransportFleet.search.js | 14 +- .../TransportFleet.searchform.js | 36 +- .../transportfleet/TransportFleet.table.js | 53 +- .../TransportFleet.updateform.js | 6 +- .../transporttask/TransportTask.app.js | 57 +- .../TransportTask.associateform.js | 16 +- .../TransportTask.associateform.less | 86 - .../transporttask/TransportTask.base.js | 174 +- .../transporttask/TransportTask.createform.js | 16 +- .../transporttask/TransportTask.dashboard.js | 9 +- .../transporttask/TransportTask.model.js | 10 +- .../transporttask/TransportTask.permission.js | 88 + .../TransportTask.permission.less | 3 + .../transporttask/TransportTask.preference.js | 8 +- .../transporttask/TransportTask.profile.js | 95 + .../transporttask/TransportTask.profile.less | 3 + .../transporttask/TransportTask.search.js | 14 +- .../transporttask/TransportTask.searchform.js | 42 +- .../transporttask/TransportTask.table.js | 53 +- .../transporttask/TransportTask.updateform.js | 12 +- .../TransportTaskTrack.app.js | 57 +- .../TransportTaskTrack.associateform.js | 12 +- .../TransportTaskTrack.associateform.less | 86 - .../TransportTaskTrack.base.js | 138 +- .../TransportTaskTrack.createform.js | 12 +- .../TransportTaskTrack.dashboard.js | 9 +- .../TransportTaskTrack.model.js | 2 +- .../TransportTaskTrack.permission.js | 86 + .../TransportTaskTrack.permission.less | 3 + .../TransportTaskTrack.preference.js | 8 +- .../TransportTaskTrack.profile.js | 93 + .../TransportTaskTrack.profile.less | 3 + .../TransportTaskTrack.search.js | 14 +- .../TransportTaskTrack.searchform.js | 32 +- .../TransportTaskTrack.table.js | 53 +- .../TransportTaskTrack.updateform.js | 8 +- .../transporttruck/TransportTruck.app.js | 57 +- .../TransportTruck.associateform.js | 18 +- .../TransportTruck.associateform.less | 86 - .../transporttruck/TransportTruck.base.js | 157 +- .../TransportTruck.createform.js | 18 +- .../TransportTruck.dashboard.js | 9 +- .../transporttruck/TransportTruck.model.js | 6 +- .../TransportTruck.permission.js | 91 + .../TransportTruck.permission.less | 3 + .../TransportTruck.preference.js | 8 +- .../transporttruck/TransportTruck.profile.js | 98 + .../TransportTruck.profile.less | 3 + .../transporttruck/TransportTruck.search.js | 14 +- .../TransportTruck.searchform.js | 46 +- .../transporttruck/TransportTruck.table.js | 53 +- .../TransportTruck.updateform.js | 18 +- .../truckdriver/TruckDriver.app.js | 57 +- .../truckdriver/TruckDriver.associateform.js | 6 +- .../TruckDriver.associateform.less | 86 - .../truckdriver/TruckDriver.base.js | 140 +- .../truckdriver/TruckDriver.createform.js | 6 +- .../truckdriver/TruckDriver.dashboard.js | 9 +- .../truckdriver/TruckDriver.model.js | 6 +- .../truckdriver/TruckDriver.permission.js | 86 + .../truckdriver/TruckDriver.permission.less | 3 + .../truckdriver/TruckDriver.preference.js | 8 +- .../truckdriver/TruckDriver.profile.js | 93 + .../truckdriver/TruckDriver.profile.less | 3 + .../truckdriver/TruckDriver.search.js | 14 +- .../truckdriver/TruckDriver.searchform.js | 38 +- .../truckdriver/TruckDriver.table.js | 53 +- .../truckdriver/TruckDriver.updateform.js | 8 +- .../src/bizcomponents/userapp/UserApp.app.js | 57 +- .../userapp/UserApp.associateform.js | 12 +- .../userapp/UserApp.associateform.less | 86 - .../src/bizcomponents/userapp/UserApp.base.js | 155 +- .../userapp/UserApp.createform.js | 12 +- .../userapp/UserApp.dashboard.js | 9 +- .../bizcomponents/userapp/UserApp.model.js | 10 +- .../userapp/UserApp.permission.js | 89 + .../userapp/UserApp.permission.less | 3 + .../userapp/UserApp.preference.js | 8 +- .../bizcomponents/userapp/UserApp.profile.js | 96 + .../userapp/UserApp.profile.less | 3 + .../bizcomponents/userapp/UserApp.search.js | 14 +- .../userapp/UserApp.searchform.js | 44 +- .../bizcomponents/userapp/UserApp.table.js | 53 +- .../userapp/UserApp.updateform.js | 14 +- .../userdomain/UserDomain.app.js | 57 +- .../userdomain/UserDomain.associateform.js | 2 +- .../userdomain/UserDomain.associateform.less | 86 - .../userdomain/UserDomain.base.js | 120 +- .../userdomain/UserDomain.createform.js | 2 +- .../userdomain/UserDomain.dashboard.js | 9 +- .../userdomain/UserDomain.model.js | 10 +- .../userdomain/UserDomain.permission.js | 85 + .../userdomain/UserDomain.permission.less | 3 + .../userdomain/UserDomain.preference.js | 10 +- .../userdomain/UserDomain.profile.js | 92 + .../userdomain/UserDomain.profile.less | 3 + .../userdomain/UserDomain.search.js | 14 +- .../userdomain/UserDomain.searchform.js | 32 +- .../userdomain/UserDomain.table.js | 53 +- .../userdomain/UserDomain.updateform.js | 4 +- .../userwhitelist/UserWhiteList.app.js | 57 +- .../UserWhiteList.associateform.js | 4 +- .../UserWhiteList.associateform.less | 86 - .../userwhitelist/UserWhiteList.base.js | 127 +- .../userwhitelist/UserWhiteList.createform.js | 4 +- .../userwhitelist/UserWhiteList.dashboard.js | 9 +- .../userwhitelist/UserWhiteList.model.js | 2 +- .../userwhitelist/UserWhiteList.permission.js | 85 + .../UserWhiteList.permission.less | 3 + .../userwhitelist/UserWhiteList.preference.js | 8 +- .../userwhitelist/UserWhiteList.profile.js | 92 + .../userwhitelist/UserWhiteList.profile.less | 3 + .../userwhitelist/UserWhiteList.search.js | 14 +- .../userwhitelist/UserWhiteList.searchform.js | 36 +- .../userwhitelist/UserWhiteList.table.js | 53 +- .../userwhitelist/UserWhiteList.updateform.js | 6 +- bizui/src/bizcomponents/view/View.app.js | 57 +- .../bizcomponents/view/View.associateform.js | 8 +- .../view/View.associateform.less | 86 - bizui/src/bizcomponents/view/View.base.js | 128 +- .../src/bizcomponents/view/View.createform.js | 8 +- .../src/bizcomponents/view/View.dashboard.js | 9 +- bizui/src/bizcomponents/view/View.model.js | 2 +- .../src/bizcomponents/view/View.permission.js | 86 + .../bizcomponents/view/View.permission.less | 3 + .../src/bizcomponents/view/View.preference.js | 8 +- bizui/src/bizcomponents/view/View.profile.js | 93 + .../src/bizcomponents/view/View.profile.less | 3 + bizui/src/bizcomponents/view/View.search.js | 14 +- .../src/bizcomponents/view/View.searchform.js | 34 +- bizui/src/bizcomponents/view/View.table.js | 53 +- .../src/bizcomponents/view/View.updateform.js | 8 +- .../bizcomponents/warehouse/Warehouse.app.js | 57 +- .../warehouse/Warehouse.associateform.js | 14 +- .../warehouse/Warehouse.associateform.less | 86 - .../bizcomponents/warehouse/Warehouse.base.js | 157 +- .../warehouse/Warehouse.createform.js | 14 +- .../warehouse/Warehouse.dashboard.js | 9 +- .../warehouse/Warehouse.model.js | 30 +- .../warehouse/Warehouse.permission.js | 89 + .../warehouse/Warehouse.permission.less | 3 + .../warehouse/Warehouse.preference.js | 8 +- .../warehouse/Warehouse.profile.js | 96 + .../warehouse/Warehouse.profile.less | 3 + .../warehouse/Warehouse.search.js | 14 +- .../warehouse/Warehouse.searchform.js | 38 +- .../warehouse/Warehouse.table.js | 53 +- .../warehouse/Warehouse.updateform.js | 12 +- .../warehouseasset/WarehouseAsset.app.js | 57 +- .../WarehouseAsset.associateform.js | 4 +- .../WarehouseAsset.associateform.less | 86 - .../warehouseasset/WarehouseAsset.base.js | 138 +- .../WarehouseAsset.createform.js | 4 +- .../WarehouseAsset.dashboard.js | 9 +- .../warehouseasset/WarehouseAsset.model.js | 2 +- .../WarehouseAsset.permission.js | 86 + .../WarehouseAsset.permission.less | 3 + .../WarehouseAsset.preference.js | 8 +- .../warehouseasset/WarehouseAsset.profile.js | 93 + .../WarehouseAsset.profile.less | 3 + .../warehouseasset/WarehouseAsset.search.js | 14 +- .../WarehouseAsset.searchform.js | 36 +- .../warehouseasset/WarehouseAsset.table.js | 53 +- .../WarehouseAsset.updateform.js | 6 +- bizui/src/common/Base.tool.js | 89 + bizui/src/common/BizApp.tool.js | 78 + bizui/src/common/BizApp.tool.less | 12 +- bizui/src/common/Dashboard.tool.js | 33 +- bizui/src/common/ListView.tool.js | 50 +- bizui/src/common/Locale.tool.js | 6 + bizui/src/components/ImagePreview/index.js | 5 +- bizui/src/components/OSSPictureEdit/index.js | 3 +- bizui/src/index.ejs | 2 +- bizui/src/launcher/HomeScreen.js | 78 +- cleangit.sh | 2 + frontend-sync-demo2.sh | 7 + frontend-sync.sh | 3 +- gfrfrontend-sync.sh | 7 + java-sync.sh | 4 +- ui-and-backend-sync.sh | 8 +- upgrade-ui-framework.sh | 4 + 2342 files changed, 55765 insertions(+), 65729 deletions(-) delete mode 100644 bizui/package-lock.json delete mode 100755 bizui/package.json.back create mode 100644 bizui/src/bizcomponents/accountingdocument/AccountingDocument.permission.js create mode 100644 bizui/src/bizcomponents/accountingdocument/AccountingDocument.permission.less create mode 100644 bizui/src/bizcomponents/accountingdocument/AccountingDocument.profile.js create mode 100644 bizui/src/bizcomponents/accountingdocument/AccountingDocument.profile.less create mode 100644 bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.permission.js create mode 100644 bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.permission.less create mode 100644 bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.profile.js create mode 100644 bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.profile.less create mode 100644 bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.permission.js create mode 100644 bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.permission.less create mode 100644 bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.profile.js create mode 100644 bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.profile.less create mode 100644 bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.permission.js create mode 100644 bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.permission.less create mode 100644 bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.profile.js create mode 100644 bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.profile.less create mode 100644 bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.permission.js create mode 100644 bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.permission.less create mode 100644 bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.profile.js create mode 100644 bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.profile.less create mode 100644 bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.permission.js create mode 100644 bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.permission.less create mode 100644 bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.profile.js create mode 100644 bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.profile.less create mode 100644 bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.permission.js create mode 100644 bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.permission.less create mode 100644 bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.profile.js create mode 100644 bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.profile.less create mode 100644 bizui/src/bizcomponents/accountingperiod/AccountingPeriod.permission.js create mode 100644 bizui/src/bizcomponents/accountingperiod/AccountingPeriod.permission.less create mode 100644 bizui/src/bizcomponents/accountingperiod/AccountingPeriod.profile.js create mode 100644 bizui/src/bizcomponents/accountingperiod/AccountingPeriod.profile.less create mode 100644 bizui/src/bizcomponents/accountingsubject/AccountingSubject.permission.js create mode 100644 bizui/src/bizcomponents/accountingsubject/AccountingSubject.permission.less create mode 100644 bizui/src/bizcomponents/accountingsubject/AccountingSubject.profile.js create mode 100644 bizui/src/bizcomponents/accountingsubject/AccountingSubject.profile.less create mode 100644 bizui/src/bizcomponents/accountset/AccountSet.permission.js create mode 100644 bizui/src/bizcomponents/accountset/AccountSet.permission.less create mode 100644 bizui/src/bizcomponents/accountset/AccountSet.profile.js create mode 100644 bizui/src/bizcomponents/accountset/AccountSet.profile.less create mode 100644 bizui/src/bizcomponents/catalog/Catalog.permission.js create mode 100644 bizui/src/bizcomponents/catalog/Catalog.permission.less create mode 100644 bizui/src/bizcomponents/catalog/Catalog.profile.js create mode 100644 bizui/src/bizcomponents/catalog/Catalog.profile.less create mode 100644 bizui/src/bizcomponents/cityevent/CityEvent.permission.js create mode 100644 bizui/src/bizcomponents/cityevent/CityEvent.permission.less create mode 100644 bizui/src/bizcomponents/cityevent/CityEvent.profile.js create mode 100644 bizui/src/bizcomponents/cityevent/CityEvent.profile.less create mode 100644 bizui/src/bizcomponents/citypartner/CityPartner.permission.js create mode 100644 bizui/src/bizcomponents/citypartner/CityPartner.permission.less create mode 100644 bizui/src/bizcomponents/citypartner/CityPartner.profile.js create mode 100644 bizui/src/bizcomponents/citypartner/CityPartner.profile.less create mode 100644 bizui/src/bizcomponents/companytraining/CompanyTraining.permission.js create mode 100644 bizui/src/bizcomponents/companytraining/CompanyTraining.permission.less create mode 100644 bizui/src/bizcomponents/companytraining/CompanyTraining.profile.js create mode 100644 bizui/src/bizcomponents/companytraining/CompanyTraining.profile.less create mode 100644 bizui/src/bizcomponents/consumerorder/ConsumerOrder.permission.js create mode 100644 bizui/src/bizcomponents/consumerorder/ConsumerOrder.permission.less create mode 100644 bizui/src/bizcomponents/consumerorder/ConsumerOrder.profile.js create mode 100644 bizui/src/bizcomponents/consumerorder/ConsumerOrder.profile.less create mode 100644 bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.permission.js create mode 100644 bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.permission.less create mode 100644 bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.profile.js create mode 100644 bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.profile.less create mode 100644 bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.permission.js create mode 100644 bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.permission.less create mode 100644 bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.profile.js create mode 100644 bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.profile.less create mode 100644 bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.permission.js create mode 100644 bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.permission.less create mode 100644 bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.profile.js create mode 100644 bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.profile.less create mode 100644 bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.permission.js create mode 100644 bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.permission.less create mode 100644 bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.profile.js create mode 100644 bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.profile.less create mode 100644 bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.permission.js create mode 100644 bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.permission.less create mode 100644 bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.profile.js create mode 100644 bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.profile.less create mode 100644 bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.permission.js create mode 100644 bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.permission.less create mode 100644 bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.profile.js create mode 100644 bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.profile.less create mode 100644 bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.permission.js create mode 100644 bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.permission.less create mode 100644 bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.profile.js create mode 100644 bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.profile.less create mode 100644 bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.permission.js create mode 100644 bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.permission.less create mode 100644 bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.profile.js create mode 100644 bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.profile.less create mode 100644 bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.permission.js create mode 100644 bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.permission.less create mode 100644 bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.profile.js create mode 100644 bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.profile.less create mode 100644 bizui/src/bizcomponents/damagespace/DamageSpace.permission.js create mode 100644 bizui/src/bizcomponents/damagespace/DamageSpace.permission.less create mode 100644 bizui/src/bizcomponents/damagespace/DamageSpace.profile.js create mode 100644 bizui/src/bizcomponents/damagespace/DamageSpace.profile.less create mode 100644 bizui/src/bizcomponents/employee/Employee.permission.js create mode 100644 bizui/src/bizcomponents/employee/Employee.permission.less create mode 100644 bizui/src/bizcomponents/employee/Employee.profile.js create mode 100644 bizui/src/bizcomponents/employee/Employee.profile.less create mode 100644 bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.permission.js create mode 100644 bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.permission.less create mode 100644 bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.profile.js create mode 100644 bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.profile.less create mode 100644 bizui/src/bizcomponents/employeeaward/EmployeeAward.permission.js create mode 100644 bizui/src/bizcomponents/employeeaward/EmployeeAward.permission.less create mode 100644 bizui/src/bizcomponents/employeeaward/EmployeeAward.profile.js create mode 100644 bizui/src/bizcomponents/employeeaward/EmployeeAward.profile.less create mode 100644 bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.permission.js create mode 100644 bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.permission.less create mode 100644 bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.profile.js create mode 100644 bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.profile.less create mode 100644 bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.permission.js create mode 100644 bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.permission.less create mode 100644 bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.profile.js create mode 100644 bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.profile.less create mode 100644 bizui/src/bizcomponents/employeeeducation/EmployeeEducation.permission.js create mode 100644 bizui/src/bizcomponents/employeeeducation/EmployeeEducation.permission.less create mode 100644 bizui/src/bizcomponents/employeeeducation/EmployeeEducation.profile.js create mode 100644 bizui/src/bizcomponents/employeeeducation/EmployeeEducation.profile.less create mode 100644 bizui/src/bizcomponents/employeeinterview/EmployeeInterview.permission.js create mode 100644 bizui/src/bizcomponents/employeeinterview/EmployeeInterview.permission.less create mode 100644 bizui/src/bizcomponents/employeeinterview/EmployeeInterview.profile.js create mode 100644 bizui/src/bizcomponents/employeeinterview/EmployeeInterview.profile.less create mode 100644 bizui/src/bizcomponents/employeeleave/EmployeeLeave.permission.js create mode 100644 bizui/src/bizcomponents/employeeleave/EmployeeLeave.permission.less create mode 100644 bizui/src/bizcomponents/employeeleave/EmployeeLeave.profile.js create mode 100644 bizui/src/bizcomponents/employeeleave/EmployeeLeave.profile.less create mode 100644 bizui/src/bizcomponents/employeeperformance/EmployeePerformance.permission.js create mode 100644 bizui/src/bizcomponents/employeeperformance/EmployeePerformance.permission.less create mode 100644 bizui/src/bizcomponents/employeeperformance/EmployeePerformance.profile.js create mode 100644 bizui/src/bizcomponents/employeeperformance/EmployeePerformance.profile.less create mode 100644 bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.permission.js create mode 100644 bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.permission.less create mode 100644 bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.profile.js create mode 100644 bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.profile.less create mode 100644 bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.permission.js create mode 100644 bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.permission.less create mode 100644 bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.profile.js create mode 100644 bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.profile.less create mode 100644 bizui/src/bizcomponents/employeeskill/EmployeeSkill.permission.js create mode 100644 bizui/src/bizcomponents/employeeskill/EmployeeSkill.permission.less create mode 100644 bizui/src/bizcomponents/employeeskill/EmployeeSkill.profile.js create mode 100644 bizui/src/bizcomponents/employeeskill/EmployeeSkill.profile.less create mode 100644 bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.permission.js create mode 100644 bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.permission.less create mode 100644 bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.profile.js create mode 100644 bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.profile.less create mode 100644 bizui/src/bizcomponents/eventattendance/EventAttendance.permission.js create mode 100644 bizui/src/bizcomponents/eventattendance/EventAttendance.permission.less create mode 100644 bizui/src/bizcomponents/eventattendance/EventAttendance.profile.js create mode 100644 bizui/src/bizcomponents/eventattendance/EventAttendance.profile.less create mode 100644 bizui/src/bizcomponents/goods/Goods.permission.js create mode 100644 bizui/src/bizcomponents/goods/Goods.permission.less create mode 100644 bizui/src/bizcomponents/goods/Goods.profile.js create mode 100644 bizui/src/bizcomponents/goods/Goods.profile.less create mode 100644 bizui/src/bizcomponents/goodsallocation/GoodsAllocation.permission.js create mode 100644 bizui/src/bizcomponents/goodsallocation/GoodsAllocation.permission.less create mode 100644 bizui/src/bizcomponents/goodsallocation/GoodsAllocation.profile.js create mode 100644 bizui/src/bizcomponents/goodsallocation/GoodsAllocation.profile.less create mode 100644 bizui/src/bizcomponents/goodsmovement/GoodsMovement.permission.js create mode 100644 bizui/src/bizcomponents/goodsmovement/GoodsMovement.permission.less create mode 100644 bizui/src/bizcomponents/goodsmovement/GoodsMovement.profile.js create mode 100644 bizui/src/bizcomponents/goodsmovement/GoodsMovement.profile.less create mode 100644 bizui/src/bizcomponents/goodspackaging/GoodsPackaging.permission.js create mode 100644 bizui/src/bizcomponents/goodspackaging/GoodsPackaging.permission.less create mode 100644 bizui/src/bizcomponents/goodspackaging/GoodsPackaging.profile.js create mode 100644 bizui/src/bizcomponents/goodspackaging/GoodsPackaging.profile.less create mode 100644 bizui/src/bizcomponents/goodsshelf/GoodsShelf.permission.js create mode 100644 bizui/src/bizcomponents/goodsshelf/GoodsShelf.permission.less create mode 100644 bizui/src/bizcomponents/goodsshelf/GoodsShelf.profile.js create mode 100644 bizui/src/bizcomponents/goodsshelf/GoodsShelf.profile.less create mode 100644 bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.permission.js create mode 100644 bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.permission.less create mode 100644 bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.profile.js create mode 100644 bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.profile.less create mode 100644 bizui/src/bizcomponents/goodssupplier/GoodsSupplier.permission.js create mode 100644 bizui/src/bizcomponents/goodssupplier/GoodsSupplier.permission.less create mode 100644 bizui/src/bizcomponents/goodssupplier/GoodsSupplier.profile.js create mode 100644 bizui/src/bizcomponents/goodssupplier/GoodsSupplier.profile.less create mode 100644 bizui/src/bizcomponents/hrinterview/HrInterview.permission.js create mode 100644 bizui/src/bizcomponents/hrinterview/HrInterview.permission.less create mode 100644 bizui/src/bizcomponents/hrinterview/HrInterview.profile.js create mode 100644 bizui/src/bizcomponents/hrinterview/HrInterview.profile.less create mode 100644 bizui/src/bizcomponents/instructor/Instructor.permission.js create mode 100644 bizui/src/bizcomponents/instructor/Instructor.permission.less create mode 100644 bizui/src/bizcomponents/instructor/Instructor.profile.js create mode 100644 bizui/src/bizcomponents/instructor/Instructor.profile.less create mode 100644 bizui/src/bizcomponents/interviewtype/InterviewType.permission.js create mode 100644 bizui/src/bizcomponents/interviewtype/InterviewType.permission.less create mode 100644 bizui/src/bizcomponents/interviewtype/InterviewType.profile.js create mode 100644 bizui/src/bizcomponents/interviewtype/InterviewType.profile.less create mode 100644 bizui/src/bizcomponents/jobapplication/JobApplication.permission.js create mode 100644 bizui/src/bizcomponents/jobapplication/JobApplication.permission.less create mode 100644 bizui/src/bizcomponents/jobapplication/JobApplication.profile.js create mode 100644 bizui/src/bizcomponents/jobapplication/JobApplication.profile.less create mode 100644 bizui/src/bizcomponents/leavetype/LeaveType.permission.js create mode 100644 bizui/src/bizcomponents/leavetype/LeaveType.permission.less create mode 100644 bizui/src/bizcomponents/leavetype/LeaveType.profile.js create mode 100644 bizui/src/bizcomponents/leavetype/LeaveType.profile.less create mode 100644 bizui/src/bizcomponents/levelonecategory/LevelOneCategory.permission.js create mode 100644 bizui/src/bizcomponents/levelonecategory/LevelOneCategory.permission.less create mode 100644 bizui/src/bizcomponents/levelonecategory/LevelOneCategory.profile.js create mode 100644 bizui/src/bizcomponents/levelonecategory/LevelOneCategory.profile.less create mode 100644 bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.permission.js create mode 100644 bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.permission.less create mode 100644 bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.profile.js create mode 100644 bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.profile.less create mode 100644 bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.permission.js create mode 100644 bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.permission.less create mode 100644 bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.profile.js create mode 100644 bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.profile.less create mode 100644 bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.permission.js create mode 100644 bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.permission.less create mode 100644 bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.profile.js create mode 100644 bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.profile.less create mode 100644 bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.permission.js create mode 100644 bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.permission.less create mode 100644 bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.profile.js create mode 100644 bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.profile.less create mode 100644 bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.permission.js create mode 100644 bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.permission.less create mode 100644 bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.profile.js create mode 100644 bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.profile.less create mode 100644 bizui/src/bizcomponents/listaccess/ListAccess.permission.js create mode 100644 bizui/src/bizcomponents/listaccess/ListAccess.permission.less create mode 100644 bizui/src/bizcomponents/listaccess/ListAccess.profile.js create mode 100644 bizui/src/bizcomponents/listaccess/ListAccess.profile.less create mode 100644 bizui/src/bizcomponents/loginhistory/LoginHistory.permission.js create mode 100644 bizui/src/bizcomponents/loginhistory/LoginHistory.permission.less create mode 100644 bizui/src/bizcomponents/loginhistory/LoginHistory.profile.js create mode 100644 bizui/src/bizcomponents/loginhistory/LoginHistory.profile.less create mode 100644 bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.permission.js create mode 100644 bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.permission.less create mode 100644 bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.profile.js create mode 100644 bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.profile.less create mode 100644 bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.permission.js create mode 100644 bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.permission.less create mode 100644 bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.profile.js create mode 100644 bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.profile.less create mode 100644 bizui/src/bizcomponents/memberwishlist/MemberWishlist.permission.js create mode 100644 bizui/src/bizcomponents/memberwishlist/MemberWishlist.permission.less create mode 100644 bizui/src/bizcomponents/memberwishlist/MemberWishlist.profile.js create mode 100644 bizui/src/bizcomponents/memberwishlist/MemberWishlist.profile.less create mode 100644 bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.permission.js create mode 100644 bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.permission.less create mode 100644 bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.profile.js create mode 100644 bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.profile.less create mode 100644 bizui/src/bizcomponents/objectaccess/ObjectAccess.permission.js create mode 100644 bizui/src/bizcomponents/objectaccess/ObjectAccess.permission.less create mode 100644 bizui/src/bizcomponents/objectaccess/ObjectAccess.profile.js create mode 100644 bizui/src/bizcomponents/objectaccess/ObjectAccess.profile.less create mode 100644 bizui/src/bizcomponents/occupationtype/OccupationType.permission.js create mode 100644 bizui/src/bizcomponents/occupationtype/OccupationType.permission.less create mode 100644 bizui/src/bizcomponents/occupationtype/OccupationType.profile.js create mode 100644 bizui/src/bizcomponents/occupationtype/OccupationType.profile.less create mode 100644 bizui/src/bizcomponents/offeracceptance/OfferAcceptance.permission.js create mode 100644 bizui/src/bizcomponents/offeracceptance/OfferAcceptance.permission.less create mode 100644 bizui/src/bizcomponents/offeracceptance/OfferAcceptance.profile.js create mode 100644 bizui/src/bizcomponents/offeracceptance/OfferAcceptance.profile.less create mode 100644 bizui/src/bizcomponents/offerapproval/OfferApproval.permission.js create mode 100644 bizui/src/bizcomponents/offerapproval/OfferApproval.permission.less create mode 100644 bizui/src/bizcomponents/offerapproval/OfferApproval.profile.js create mode 100644 bizui/src/bizcomponents/offerapproval/OfferApproval.profile.less create mode 100644 bizui/src/bizcomponents/originalvoucher/OriginalVoucher.permission.js create mode 100644 bizui/src/bizcomponents/originalvoucher/OriginalVoucher.permission.less create mode 100644 bizui/src/bizcomponents/originalvoucher/OriginalVoucher.profile.js create mode 100644 bizui/src/bizcomponents/originalvoucher/OriginalVoucher.profile.less create mode 100644 bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.permission.js create mode 100644 bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.permission.less create mode 100644 bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.profile.js create mode 100644 bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.profile.less create mode 100644 bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.permission.js create mode 100644 bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.permission.less create mode 100644 bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.profile.js create mode 100644 bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.profile.less create mode 100644 bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.permission.js create mode 100644 bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.permission.less create mode 100644 bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.profile.js create mode 100644 bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.profile.less create mode 100644 bizui/src/bizcomponents/payingoff/PayingOff.permission.js create mode 100644 bizui/src/bizcomponents/payingoff/PayingOff.permission.less create mode 100644 bizui/src/bizcomponents/payingoff/PayingOff.profile.js create mode 100644 bizui/src/bizcomponents/payingoff/PayingOff.profile.less create mode 100644 bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.permission.js create mode 100644 bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.permission.less create mode 100644 bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.profile.js create mode 100644 bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.profile.less create mode 100644 bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.permission.js create mode 100644 bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.permission.less create mode 100644 bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.profile.js create mode 100644 bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.profile.less create mode 100644 bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.permission.js create mode 100644 bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.permission.less create mode 100644 bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.profile.js create mode 100644 bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.profile.less create mode 100644 bizui/src/bizcomponents/product/Product.permission.js create mode 100644 bizui/src/bizcomponents/product/Product.permission.less create mode 100644 bizui/src/bizcomponents/product/Product.profile.js create mode 100644 bizui/src/bizcomponents/product/Product.profile.less create mode 100644 bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.permission.js create mode 100644 bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.permission.less create mode 100644 bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.profile.js create mode 100644 bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.profile.less create mode 100644 bizui/src/bizcomponents/professioninterview/ProfessionInterview.permission.js create mode 100644 bizui/src/bizcomponents/professioninterview/ProfessionInterview.permission.less create mode 100644 bizui/src/bizcomponents/professioninterview/ProfessionInterview.profile.js create mode 100644 bizui/src/bizcomponents/professioninterview/ProfessionInterview.profile.less create mode 100644 bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.permission.js create mode 100644 bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.permission.less create mode 100644 bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.profile.js create mode 100644 bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.profile.less create mode 100644 bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.permission.js create mode 100644 bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.permission.less create mode 100644 bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.profile.js create mode 100644 bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.profile.less create mode 100644 bizui/src/bizcomponents/publicholiday/PublicHoliday.permission.js create mode 100644 bizui/src/bizcomponents/publicholiday/PublicHoliday.permission.less create mode 100644 bizui/src/bizcomponents/publicholiday/PublicHoliday.profile.js create mode 100644 bizui/src/bizcomponents/publicholiday/PublicHoliday.profile.less create mode 100644 bizui/src/bizcomponents/receivingspace/ReceivingSpace.permission.js create mode 100644 bizui/src/bizcomponents/receivingspace/ReceivingSpace.permission.less create mode 100644 bizui/src/bizcomponents/receivingspace/ReceivingSpace.profile.js create mode 100644 bizui/src/bizcomponents/receivingspace/ReceivingSpace.profile.less create mode 100644 bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.permission.js create mode 100644 bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.permission.less create mode 100644 bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.profile.js create mode 100644 bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.profile.less create mode 100644 bizui/src/bizcomponents/retailstore/RetailStore.permission.js create mode 100644 bizui/src/bizcomponents/retailstore/RetailStore.permission.less create mode 100644 bizui/src/bizcomponents/retailstore/RetailStore.profile.js create mode 100644 bizui/src/bizcomponents/retailstore/RetailStore.profile.less create mode 100644 bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.permission.js create mode 100644 bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.permission.less create mode 100644 bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.profile.js create mode 100644 bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.profile.less create mode 100644 bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.permission.js create mode 100644 bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.permission.less create mode 100644 bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.profile.js create mode 100644 bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.profile.less create mode 100644 bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.permission.js create mode 100644 bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.permission.less create mode 100644 bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.profile.js create mode 100644 bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.profile.less create mode 100644 bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.permission.js create mode 100644 bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.permission.less create mode 100644 bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.profile.js create mode 100644 bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.profile.less create mode 100644 bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.permission.js create mode 100644 bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.permission.less create mode 100644 bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.profile.js create mode 100644 bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.profile.less create mode 100644 bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.permission.js create mode 100644 bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.permission.less create mode 100644 bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.profile.js create mode 100644 bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.profile.less create mode 100644 bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.permission.js create mode 100644 bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.permission.less create mode 100644 bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.profile.js create mode 100644 bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.profile.less create mode 100644 bizui/src/bizcomponents/retailstoremember/RetailStoreMember.permission.js create mode 100644 bizui/src/bizcomponents/retailstoremember/RetailStoreMember.permission.less create mode 100644 bizui/src/bizcomponents/retailstoremember/RetailStoreMember.profile.js create mode 100644 bizui/src/bizcomponents/retailstoremember/RetailStoreMember.profile.less create mode 100644 bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.permission.js create mode 100644 bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.permission.less create mode 100644 bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.profile.js create mode 100644 bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.profile.less create mode 100644 bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.permission.js create mode 100644 bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.permission.less create mode 100644 bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.profile.js create mode 100644 bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.profile.less create mode 100644 bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.permission.js create mode 100644 bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.permission.less create mode 100644 bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.profile.js create mode 100644 bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.profile.less create mode 100644 bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.permission.js create mode 100644 bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.permission.less create mode 100644 bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.profile.js create mode 100644 bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.profile.less create mode 100644 bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.permission.js create mode 100644 bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.permission.less create mode 100644 bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.profile.js create mode 100644 bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.profile.less create mode 100644 bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.permission.js create mode 100644 bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.permission.less create mode 100644 bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.profile.js create mode 100644 bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.profile.less create mode 100644 bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.permission.js create mode 100644 bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.permission.less create mode 100644 bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.profile.js create mode 100644 bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.profile.less create mode 100644 bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.permission.js create mode 100644 bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.permission.less create mode 100644 bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.profile.js create mode 100644 bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.profile.less create mode 100644 bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.permission.js create mode 100644 bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.permission.less create mode 100644 bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.profile.js create mode 100644 bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.profile.less create mode 100644 bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.permission.js create mode 100644 bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.permission.less create mode 100644 bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.profile.js create mode 100644 bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.profile.less create mode 100644 bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.permission.js create mode 100644 bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.permission.less create mode 100644 bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.profile.js create mode 100644 bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.profile.less create mode 100644 bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.permission.js create mode 100644 bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.permission.less create mode 100644 bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.profile.js create mode 100644 bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.profile.less create mode 100644 bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.permission.js create mode 100644 bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.permission.less create mode 100644 bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.profile.js create mode 100644 bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.profile.less create mode 100644 bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.permission.js create mode 100644 bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.permission.less create mode 100644 bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.profile.js create mode 100644 bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.profile.less create mode 100644 bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.permission.js create mode 100644 bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.permission.less create mode 100644 bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.profile.js create mode 100644 bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.profile.less create mode 100644 bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.permission.js create mode 100644 bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.permission.less create mode 100644 bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.profile.js create mode 100644 bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.profile.less create mode 100644 bizui/src/bizcomponents/salarygrade/SalaryGrade.permission.js create mode 100644 bizui/src/bizcomponents/salarygrade/SalaryGrade.permission.less create mode 100644 bizui/src/bizcomponents/salarygrade/SalaryGrade.profile.js create mode 100644 bizui/src/bizcomponents/salarygrade/SalaryGrade.profile.less create mode 100644 bizui/src/bizcomponents/scoring/Scoring.permission.js create mode 100644 bizui/src/bizcomponents/scoring/Scoring.permission.less create mode 100644 bizui/src/bizcomponents/scoring/Scoring.profile.js create mode 100644 bizui/src/bizcomponents/scoring/Scoring.profile.less create mode 100644 bizui/src/bizcomponents/secuser/SecUser.permission.js create mode 100644 bizui/src/bizcomponents/secuser/SecUser.permission.less create mode 100644 bizui/src/bizcomponents/secuser/SecUser.profile.js create mode 100644 bizui/src/bizcomponents/secuser/SecUser.profile.less create mode 100644 bizui/src/bizcomponents/secuserblocking/SecUserBlocking.permission.js create mode 100644 bizui/src/bizcomponents/secuserblocking/SecUserBlocking.permission.less create mode 100644 bizui/src/bizcomponents/secuserblocking/SecUserBlocking.profile.js create mode 100644 bizui/src/bizcomponents/secuserblocking/SecUserBlocking.profile.less create mode 100644 bizui/src/bizcomponents/shippingspace/ShippingSpace.permission.js create mode 100644 bizui/src/bizcomponents/shippingspace/ShippingSpace.permission.less create mode 100644 bizui/src/bizcomponents/shippingspace/ShippingSpace.profile.js create mode 100644 bizui/src/bizcomponents/shippingspace/ShippingSpace.profile.less create mode 100644 bizui/src/bizcomponents/skilltype/SkillType.permission.js create mode 100644 bizui/src/bizcomponents/skilltype/SkillType.permission.less create mode 100644 bizui/src/bizcomponents/skilltype/SkillType.profile.js create mode 100644 bizui/src/bizcomponents/skilltype/SkillType.profile.less create mode 100644 bizui/src/bizcomponents/sku/Sku.permission.js create mode 100644 bizui/src/bizcomponents/sku/Sku.permission.less create mode 100644 bizui/src/bizcomponents/sku/Sku.profile.js create mode 100644 bizui/src/bizcomponents/sku/Sku.profile.less create mode 100644 bizui/src/bizcomponents/smartpallet/SmartPallet.permission.js create mode 100644 bizui/src/bizcomponents/smartpallet/SmartPallet.permission.less create mode 100644 bizui/src/bizcomponents/smartpallet/SmartPallet.profile.js create mode 100644 bizui/src/bizcomponents/smartpallet/SmartPallet.profile.less create mode 100644 bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.permission.js create mode 100644 bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.permission.less create mode 100644 bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.profile.js create mode 100644 bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.profile.less create mode 100644 bizui/src/bizcomponents/storagespace/StorageSpace.permission.js create mode 100644 bizui/src/bizcomponents/storagespace/StorageSpace.permission.less create mode 100644 bizui/src/bizcomponents/storagespace/StorageSpace.profile.js create mode 100644 bizui/src/bizcomponents/storagespace/StorageSpace.profile.less create mode 100644 bizui/src/bizcomponents/supplierproduct/SupplierProduct.permission.js create mode 100644 bizui/src/bizcomponents/supplierproduct/SupplierProduct.permission.less create mode 100644 bizui/src/bizcomponents/supplierproduct/SupplierProduct.profile.js create mode 100644 bizui/src/bizcomponents/supplierproduct/SupplierProduct.profile.less create mode 100644 bizui/src/bizcomponents/supplierspace/SupplierSpace.permission.js create mode 100644 bizui/src/bizcomponents/supplierspace/SupplierSpace.permission.less create mode 100644 bizui/src/bizcomponents/supplierspace/SupplierSpace.profile.js create mode 100644 bizui/src/bizcomponents/supplierspace/SupplierSpace.profile.less create mode 100644 bizui/src/bizcomponents/supplyorder/SupplyOrder.permission.js create mode 100644 bizui/src/bizcomponents/supplyorder/SupplyOrder.permission.less create mode 100644 bizui/src/bizcomponents/supplyorder/SupplyOrder.profile.js create mode 100644 bizui/src/bizcomponents/supplyorder/SupplyOrder.profile.less create mode 100644 bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.permission.js create mode 100644 bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.permission.less create mode 100644 bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.profile.js create mode 100644 bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.profile.less create mode 100644 bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.permission.js create mode 100644 bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.permission.less create mode 100644 bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.profile.js create mode 100644 bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.profile.less create mode 100644 bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.permission.js create mode 100644 bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.permission.less create mode 100644 bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.profile.js create mode 100644 bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.profile.less create mode 100644 bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.permission.js create mode 100644 bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.permission.less create mode 100644 bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.profile.js create mode 100644 bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.profile.less create mode 100644 bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.permission.js create mode 100644 bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.permission.less create mode 100644 bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.profile.js create mode 100644 bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.profile.less create mode 100644 bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.permission.js create mode 100644 bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.permission.less create mode 100644 bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.profile.js create mode 100644 bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.profile.less create mode 100644 bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.permission.js create mode 100644 bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.permission.less create mode 100644 bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.profile.js create mode 100644 bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.profile.less create mode 100644 bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.permission.js create mode 100644 bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.permission.less create mode 100644 bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.profile.js create mode 100644 bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.profile.less create mode 100644 bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.permission.js create mode 100644 bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.permission.less create mode 100644 bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.profile.js create mode 100644 bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.profile.less create mode 100644 bizui/src/bizcomponents/termination/Termination.permission.js create mode 100644 bizui/src/bizcomponents/termination/Termination.permission.less create mode 100644 bizui/src/bizcomponents/termination/Termination.profile.js create mode 100644 bizui/src/bizcomponents/termination/Termination.profile.less create mode 100644 bizui/src/bizcomponents/terminationreason/TerminationReason.permission.js create mode 100644 bizui/src/bizcomponents/terminationreason/TerminationReason.permission.less create mode 100644 bizui/src/bizcomponents/terminationreason/TerminationReason.profile.js create mode 100644 bizui/src/bizcomponents/terminationreason/TerminationReason.profile.less create mode 100644 bizui/src/bizcomponents/terminationtype/TerminationType.permission.js create mode 100644 bizui/src/bizcomponents/terminationtype/TerminationType.permission.less create mode 100644 bizui/src/bizcomponents/terminationtype/TerminationType.profile.js create mode 100644 bizui/src/bizcomponents/terminationtype/TerminationType.profile.less create mode 100644 bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.permission.js create mode 100644 bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.permission.less create mode 100644 bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.profile.js create mode 100644 bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.profile.less create mode 100644 bizui/src/bizcomponents/transportfleet/TransportFleet.permission.js create mode 100644 bizui/src/bizcomponents/transportfleet/TransportFleet.permission.less create mode 100644 bizui/src/bizcomponents/transportfleet/TransportFleet.profile.js create mode 100644 bizui/src/bizcomponents/transportfleet/TransportFleet.profile.less create mode 100644 bizui/src/bizcomponents/transporttask/TransportTask.permission.js create mode 100644 bizui/src/bizcomponents/transporttask/TransportTask.permission.less create mode 100644 bizui/src/bizcomponents/transporttask/TransportTask.profile.js create mode 100644 bizui/src/bizcomponents/transporttask/TransportTask.profile.less create mode 100644 bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.permission.js create mode 100644 bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.permission.less create mode 100644 bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.profile.js create mode 100644 bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.profile.less create mode 100644 bizui/src/bizcomponents/transporttruck/TransportTruck.permission.js create mode 100644 bizui/src/bizcomponents/transporttruck/TransportTruck.permission.less create mode 100644 bizui/src/bizcomponents/transporttruck/TransportTruck.profile.js create mode 100644 bizui/src/bizcomponents/transporttruck/TransportTruck.profile.less create mode 100644 bizui/src/bizcomponents/truckdriver/TruckDriver.permission.js create mode 100644 bizui/src/bizcomponents/truckdriver/TruckDriver.permission.less create mode 100644 bizui/src/bizcomponents/truckdriver/TruckDriver.profile.js create mode 100644 bizui/src/bizcomponents/truckdriver/TruckDriver.profile.less create mode 100644 bizui/src/bizcomponents/userapp/UserApp.permission.js create mode 100644 bizui/src/bizcomponents/userapp/UserApp.permission.less create mode 100644 bizui/src/bizcomponents/userapp/UserApp.profile.js create mode 100644 bizui/src/bizcomponents/userapp/UserApp.profile.less create mode 100644 bizui/src/bizcomponents/userdomain/UserDomain.permission.js create mode 100644 bizui/src/bizcomponents/userdomain/UserDomain.permission.less create mode 100644 bizui/src/bizcomponents/userdomain/UserDomain.profile.js create mode 100644 bizui/src/bizcomponents/userdomain/UserDomain.profile.less create mode 100644 bizui/src/bizcomponents/userwhitelist/UserWhiteList.permission.js create mode 100644 bizui/src/bizcomponents/userwhitelist/UserWhiteList.permission.less create mode 100644 bizui/src/bizcomponents/userwhitelist/UserWhiteList.profile.js create mode 100644 bizui/src/bizcomponents/userwhitelist/UserWhiteList.profile.less create mode 100644 bizui/src/bizcomponents/view/View.permission.js create mode 100644 bizui/src/bizcomponents/view/View.permission.less create mode 100644 bizui/src/bizcomponents/view/View.profile.js create mode 100644 bizui/src/bizcomponents/view/View.profile.less create mode 100644 bizui/src/bizcomponents/warehouse/Warehouse.permission.js create mode 100644 bizui/src/bizcomponents/warehouse/Warehouse.permission.less create mode 100644 bizui/src/bizcomponents/warehouse/Warehouse.profile.js create mode 100644 bizui/src/bizcomponents/warehouse/Warehouse.profile.less create mode 100644 bizui/src/bizcomponents/warehouseasset/WarehouseAsset.permission.js create mode 100644 bizui/src/bizcomponents/warehouseasset/WarehouseAsset.permission.less create mode 100644 bizui/src/bizcomponents/warehouseasset/WarehouseAsset.profile.js create mode 100644 bizui/src/bizcomponents/warehouseasset/WarehouseAsset.profile.less create mode 100644 bizui/src/common/Base.tool.js create mode 100644 frontend-sync-demo2.sh create mode 100644 gfrfrontend-sync.sh create mode 100644 upgrade-ui-framework.sh diff --git a/backend-sync.sh b/backend-sync.sh index daf6ce3fb..e72b72006 100644 --- a/backend-sync.sh +++ b/backend-sync.sh @@ -1,8 +1,8 @@ MODELNAME=retailscm java -jar ~/githome/splitter.jar ${MODELNAME} -cd ~/githome/${MODELNAME}-biz-suite/&& git pull --allow-unrelated-histories && cd ../ -cd ~/githome/${MODELNAME}-biz-suite/bizcore&& gradle classes && cd ../../ -cd ~/githome/${MODELNAME}-biz-suite/ && rsync -avz bizcore/* philipz@philip.doublechaintech.cn:~/resin-3.1.12/webapps/${MODELNAME}/ -ssh philipz@philip.doublechaintech.cn "mysql -uroot -p0254891276 -h 127.0.0.1 < resin-3.1.12/webapps/${MODELNAME}/WEB-INF/${MODELNAME}_core_src/META-INF/${MODELNAME}_mysql.sql" +# cd ~/githome/${MODELNAME}-biz-suite/&& git pull --allow-unrelated-histories && cd ../ +cd ~/githome/${MODELNAME}-biz-suite/bizcore&& ~/.sdkman/candidates/gradle/5.2.1/bin/gradle classes && cd ../../ +cd ~/githome/${MODELNAME}-biz-suite/ && rsync -avz bizcore/* philip@demo2.doublechaintech.com:~/resin-3.1.12/webapps/${MODELNAME}/ +ssh philip@demo2.doublechaintech.com "mysql -uroot -p0254891276 -h 127.0.0.1 < resin-3.1.12/webapps/${MODELNAME}/WEB-INF/${MODELNAME}_core_src/META-INF/${MODELNAME}_mysql.sql" diff --git a/bizui/.webpackrc.js b/bizui/.webpackrc.js index 9c7d7ff0b..5921b7623 100755 --- a/bizui/.webpackrc.js +++ b/bizui/.webpackrc.js @@ -21,4 +21,6 @@ export default { disableDynamicImport: true, publicPath: '', hash: true, + devtool: 'cheap-module-source-map', + }; diff --git a/bizui/package-lock.json b/bizui/package-lock.json deleted file mode 100644 index a4c9681b5..000000000 --- a/bizui/package-lock.json +++ /dev/null @@ -1,30429 +0,0 @@ -{ - "name": "ant-design-pro", - "version": "1.3.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@antv/data-set": { - "version": "0.8.9", - "resolved": "https://registry.npmjs.org/@antv/data-set/-/data-set-0.8.9.tgz", - "integrity": "sha512-ACUDLfZWLixnj/Dqom6dSRvxd0DsI4Qfo7CR6Ozvu7YQFc1HomE/7C5RmkNwMKMao+8LeqFYEiLGE8Amj1NMIA==", - "requires": { - "@antv/hierarchy": "0.1.2", - "d3-array": "1.2.1", - "d3-composite-projections": "1.2.0", - "d3-dsv": "1.0.8", - "d3-geo": "1.6.4", - "d3-geo-projection": "2.1.2", - "d3-hexjson": "1.0.1", - "d3-hierarchy": "1.1.6", - "d3-sankey": "0.7.1", - "d3-voronoi": "1.1.2", - "dagre": "0.8.2", - "lodash": "4.17.4", - "point-at-length": "1.0.2", - "regression": "2.0.1", - "simple-statistics": "4.1.1", - "topojson-client": "3.0.0", - "wolfy87-eventemitter": "5.1.0" - }, - "dependencies": { - "wolfy87-eventemitter": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wolfy87-eventemitter/-/wolfy87-eventemitter-5.1.0.tgz", - "integrity": "sha1-NcGsDdGsDBXjXZgVCPwiCEoToBE=" - } - } - }, - "@antv/g": { - "version": "2.0.7-beta.3", - "resolved": "https://registry.npmjs.org/@antv/g/-/g-2.0.7-beta.3.tgz", - "integrity": "sha512-bia9GHQntIoa/OzgJ7jWQB/QuwFJ2sKIyxBZcO2swvwlNhfyN5y7aDj9v2/SEo2GIP8jLGLqQvc/HLW9VMoK+w==", - "requires": { - "d3-ease": "1.0.3", - "d3-interpolate": "1.1.6", - "d3-timer": "1.0.7", - "gl-matrix": "2.3.2", - "lodash": "4.17.4", - "wolfy87-eventemitter": "5.1.0" - }, - "dependencies": { - "gl-matrix": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-2.3.2.tgz", - "integrity": "sha1-qsgIx0r31dsF/gTLYMoaD8sXTXQ=" - }, - "wolfy87-eventemitter": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wolfy87-eventemitter/-/wolfy87-eventemitter-5.1.0.tgz", - "integrity": "sha1-NcGsDdGsDBXjXZgVCPwiCEoToBE=" - } - } - }, - "@antv/g2": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@antv/g2/-/g2-3.0.9.tgz", - "integrity": "sha512-gZvWj9DtRzwKUE6ZdRvTnT7Lriqj4xIORmAWE6y6wR6KQvuj4/N1a/IdeS0o9mTml5eUw2OB3iW8Qgfdd/dOUg==", - "requires": { - "@antv/g": "2.0.7-beta.3", - "fecha": "2.3.3", - "gl-matrix": "2.5.1", - "lodash": "4.17.10", - "venn.js": "0.2.20", - "wolfy87-eventemitter": "5.2.4" - }, - "dependencies": { - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==" - } - } - }, - "@antv/g2-plugin-slider": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@antv/g2-plugin-slider/-/g2-plugin-slider-2.0.1.tgz", - "integrity": "sha512-UGpqJen/M0XdxMkO/ovz9C1J4ex873DZtg+08BBrzvTYm7ehO9G5hjXB4JG3ZT44mIkkA/JrjAeZlXoJZ/7Amw==" - }, - "@antv/hierarchy": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@antv/hierarchy/-/hierarchy-0.1.2.tgz", - "integrity": "sha512-P9KTIHtLz77NMwzstSr/LPwKRMEzoeJIeVDtKcY/mEIlaGWBQs7wyQGgvEVVHAnqTVFYFRV1rs3GfBgXFZW9TA==" - }, - "@babel/code-frame": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.47.tgz", - "integrity": "sha512-W7IeG4MoVf4oUvWfHUx9VG9if3E0xSUDf1urrnNYtC2ow1dz2ptvQ6YsJfyVXDuPTFXz66jkHhzMW7a5Eld7TA==", - "dev": true, - "requires": { - "@babel/highlight": "7.0.0-beta.47" - } - }, - "@babel/core": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.0.0-beta.47.tgz", - "integrity": "sha512-7EIuAX0UVnCgZ0E9tz9rFK0gd+aovwMA9bul+dnkmBQYLrJdas2EHMUSmaK67i1cyZpvgVvXhHtXJxC7wo3rlQ==", - "dev": true, - "requires": { - "@babel/code-frame": "7.0.0-beta.47", - "@babel/generator": "7.0.0-beta.47", - "@babel/helpers": "7.0.0-beta.47", - "@babel/template": "7.0.0-beta.47", - "@babel/traverse": "7.0.0-beta.47", - "@babel/types": "7.0.0-beta.47", - "babylon": "7.0.0-beta.47", - "convert-source-map": "1.5.1", - "debug": "3.1.0", - "json5": "0.5.1", - "lodash": "4.17.10", - "micromatch": "2.3.11", - "resolve": "1.5.0", - "semver": "5.4.1", - "source-map": "0.5.7" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", - "dev": true - } - } - }, - "@babel/generator": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.47.tgz", - "integrity": "sha512-fJP+9X+gqgTTZzTqrKJHwebPwt6S/e/4YuyRyKyWHAIirGgUwjRoZgbFci24wwGYMJW7nlkCSwWG7QvCVsG0eg==", - "dev": true, - "requires": { - "@babel/types": "7.0.0-beta.47", - "jsesc": "2.5.1", - "lodash": "4.17.10", - "source-map": "0.5.7", - "trim-right": "1.0.1" - }, - "dependencies": { - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", - "dev": true - } - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0-beta.47.tgz", - "integrity": "sha512-Pjxb/PrxyKWc7jcAXlawvNAQMxxY+tSSNC5wxJstJjpO10mocmGzBOqNYjxdvVhMb3d0BEPQ8mR+D65fFpZ+TA==", - "dev": true, - "requires": { - "@babel/types": "7.0.0-beta.47" - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.0.0-beta.47.tgz", - "integrity": "sha512-nv8d6TcDBb1CJMQzwab/e0rqyqoP9d2AQBjr4GdSiVRpJX4aiLEiLBm2XprdEb/sVIRmmBnVxPXJaHDsS/K2fw==", - "dev": true, - "requires": { - "@babel/helper-explode-assignable-expression": "7.0.0-beta.47", - "@babel/types": "7.0.0-beta.47" - } - }, - "@babel/helper-builder-react-jsx": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.0.0-beta.47.tgz", - "integrity": "sha512-oBGX/MyT4kNGuINK2k/KLHD77Ih1oTROtoxnV3uAPS9rLYhmZn3W8qy2L4bbyMwQ89nVSM427b0bTTXUEEReXA==", - "dev": true, - "requires": { - "@babel/types": "7.0.0-beta.47", - "esutils": "2.0.2" - } - }, - "@babel/helper-call-delegate": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.0.0-beta.47.tgz", - "integrity": "sha512-Rx9TRmCCEP0pWau9gfR6ubcbbX3nVc4ImNY143ftC70jrKdSv5rS20yz2cmCilDzhexwGZQ3PFwOLKe3C/5aEg==", - "dev": true, - "requires": { - "@babel/helper-hoist-variables": "7.0.0-beta.47", - "@babel/traverse": "7.0.0-beta.47", - "@babel/types": "7.0.0-beta.47" - } - }, - "@babel/helper-define-map": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.0.0-beta.47.tgz", - "integrity": "sha512-pLB9RY7GZKcc/frzgfDY/HwdqxWPe60qMAvNUef1V1bDZ8i4AUgxAANgltFzj61t100WGhqaS0xGkALD+9VA+g==", - "dev": true, - "requires": { - "@babel/helper-function-name": "7.0.0-beta.47", - "@babel/types": "7.0.0-beta.47", - "lodash": "4.17.10" - }, - "dependencies": { - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", - "dev": true - } - } - }, - "@babel/helper-explode-assignable-expression": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.0.0-beta.47.tgz", - "integrity": "sha512-1mwk27zmhSuMUcVWxw5ZKiPYfuWXviZNqgA4OvFBloPf9R+dKDhNgP2uUrkHh68ltVVc3Bup1nsbd/2KM5AxEw==", - "dev": true, - "requires": { - "@babel/traverse": "7.0.0-beta.47", - "@babel/types": "7.0.0-beta.47" - } - }, - "@babel/helper-function-name": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.47.tgz", - "integrity": "sha512-0LSvt95XCYaOrDA5K68KkTyldKXizDwBnKACdYzQszp1GdbtzmSeGwFU5Ecw86fU6bkYXtDvkFTOQwk/WQSJPw==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "7.0.0-beta.47", - "@babel/template": "7.0.0-beta.47", - "@babel/types": "7.0.0-beta.47" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.47.tgz", - "integrity": "sha512-63j0i3YUW8CO//uQc3ACffJdIlYcIlysuHjMF0yzQhqKoQ/CUPv0hf3nBwdRGjiWrr3JcL6++NF4XmXdwSU+fA==", - "dev": true, - "requires": { - "@babel/types": "7.0.0-beta.47" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0-beta.47.tgz", - "integrity": "sha512-5BcKFhyzrsInlrfO/tGoe6khUuJzGfROD7oozF/5MWsKo/c3gVJfQ5y83lZ4XoTKJt/x4PQlLU0aHd/SJpYONA==", - "dev": true, - "requires": { - "@babel/types": "7.0.0-beta.47" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0-beta.47.tgz", - "integrity": "sha512-gpipslnZw2hcVGADUtqQII9KF8FPpRZsVUXwKP/0EnWwtujRFSVL+u2Fh+VXODRAxFmTLo6eGcOr/Vfan0MqYw==", - "dev": true, - "requires": { - "@babel/types": "7.0.0-beta.47" - } - }, - "@babel/helper-module-imports": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.47.tgz", - "integrity": "sha512-Rk43Ty+a6npu9znK22IqFlseStRGWxEHi2cjmLbbi63VGiseofdUtIJI65F9MTCuMTXAX7VbY/ghef1Jp5qpvw==", - "dev": true, - "requires": { - "@babel/types": "7.0.0-beta.47", - "lodash": "4.17.10" - }, - "dependencies": { - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", - "dev": true - } - } - }, - "@babel/helper-module-transforms": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.0.0-beta.47.tgz", - "integrity": "sha512-CziMe30ZunAhe6j05oNOFOg7im1lcv3dYuMxrwBYVe9YdP4NHPU7a1wrDBUhaPmyqTIZDwGnFne7k1KP79SeGQ==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "7.0.0-beta.47", - "@babel/helper-simple-access": "7.0.0-beta.47", - "@babel/helper-split-export-declaration": "7.0.0-beta.47", - "@babel/template": "7.0.0-beta.47", - "@babel/types": "7.0.0-beta.47", - "lodash": "4.17.10" - }, - "dependencies": { - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", - "dev": true - } - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0-beta.47.tgz", - "integrity": "sha512-NhnGhjwrhzGas4A/PoBDEtEPCGJHrzhaT6qGmo1hmkA2orG4UNi7KENC38DhJII0n2oUrKUuzTwgCvxKOTiHbw==", - "dev": true, - "requires": { - "@babel/types": "7.0.0-beta.47" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0-beta.47.tgz", - "integrity": "sha512-GR67o8boOKVJRKM5Nhk7oVEHpxYy8R00lwu0F82WxxBH+iiT26DqW1e/4w/mo7Bdn1A6l0pNaOlNk1PdM2Hgag==", - "dev": true - }, - "@babel/helper-regex": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.0.0-beta.47.tgz", - "integrity": "sha512-dafidvVkjJP5AIWkJspV+7RGj1jeNts0qYvlmVzqAGb6BmQzEldJr6ZPzrmlpW/AW1YJGdw7br2yiwvlCRqDvQ==", - "dev": true, - "requires": { - "lodash": "4.17.10" - }, - "dependencies": { - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", - "dev": true - } - } - }, - "@babel/helper-remap-async-to-generator": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.0.0-beta.47.tgz", - "integrity": "sha512-Nmj3lUHQscD160asav2bZ3sMIjGwGY9r6Vrriy9TqH7bmaClKUKUs5Twv0htFWfOKNFLEeY/MaqiAXylr1GS2w==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "7.0.0-beta.47", - "@babel/helper-wrap-function": "7.0.0-beta.47", - "@babel/template": "7.0.0-beta.47", - "@babel/traverse": "7.0.0-beta.47", - "@babel/types": "7.0.0-beta.47" - } - }, - "@babel/helper-replace-supers": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.0.0-beta.47.tgz", - "integrity": "sha512-yf2JAD1+xNTjavqazqknRgPfd6MbGfvfIcAkxWsPURynAwOMSs4zThED8ImT2d5a97rGPysRJcq1jNh2L0WYxg==", - "dev": true, - "requires": { - "@babel/helper-member-expression-to-functions": "7.0.0-beta.47", - "@babel/helper-optimise-call-expression": "7.0.0-beta.47", - "@babel/traverse": "7.0.0-beta.47", - "@babel/types": "7.0.0-beta.47" - } - }, - "@babel/helper-simple-access": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.0.0-beta.47.tgz", - "integrity": "sha512-sd2t3QDKjd+hHkJKaC2AX39l6oIil1N548oMZAtV5YHlVGoWWkAVGnPMxRg7ICEjIftCU3ZI6UeaogyEhF8t7Q==", - "dev": true, - "requires": { - "@babel/template": "7.0.0-beta.47", - "@babel/types": "7.0.0-beta.47", - "lodash": "4.17.10" - }, - "dependencies": { - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", - "dev": true - } - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.47.tgz", - "integrity": "sha512-jx8GmxryT6Qy4+24W6M6TnVL9T8bxqdyg5UKHjxBdw0Y2Sano1n0WphUS2seuOugn04W2ZQLqGc0ut8nGe/taA==", - "dev": true, - "requires": { - "@babel/types": "7.0.0-beta.47" - } - }, - "@babel/helper-wrap-function": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.0.0-beta.47.tgz", - "integrity": "sha512-SAasvh80Mz5q9x15dqH6z8jpM0WTBmxQSNZATSwJwhmWdme6r2gxpufIMr8LwQIJHmXmgNLmvh0zdWSbE/PR4Q==", - "dev": true, - "requires": { - "@babel/helper-function-name": "7.0.0-beta.47", - "@babel/template": "7.0.0-beta.47", - "@babel/traverse": "7.0.0-beta.47", - "@babel/types": "7.0.0-beta.47" - } - }, - "@babel/helpers": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.0.0-beta.47.tgz", - "integrity": "sha512-uWk7gIua2COEWLwZGxfF5Wq1bgXOt1V6xzWxqeFznrA6F1TUPiAhkK5zORiZEa5RAILp6Mswsn3xFjDyCpp3rQ==", - "dev": true, - "requires": { - "@babel/template": "7.0.0-beta.47", - "@babel/traverse": "7.0.0-beta.47", - "@babel/types": "7.0.0-beta.47" - } - }, - "@babel/highlight": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.47.tgz", - "integrity": "sha512-d505K3Hth1eg0b2swfEF7oFMw3J9M8ceFg0s6dhCSxOOF+07WDvJ0HKT/YbK/Jk9wn8Wyr6HIRAUPKJ9Wfv8Rg==", - "dev": true, - "requires": { - "chalk": "2.4.1", - "esutils": "2.0.2", - "js-tokens": "3.0.2" - }, - "dependencies": { - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" - } - } - } - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.0.0-beta.47.tgz", - "integrity": "sha512-TQMLYVIqQ0MqVS1Z7jsuv3HlEetLo/7EnDY9mGBZ4c4/WLD/mu+tFuLiK2/2QH5wgi5viRfJGs/+L5TaDzxWng==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47", - "@babel/helper-remap-async-to-generator": "7.0.0-beta.47", - "@babel/plugin-syntax-async-generators": "7.0.0-beta.47" - } - }, - "@babel/plugin-proposal-class-properties": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.0.0-beta.47.tgz", - "integrity": "sha512-6yuCiF+ZZHPLgAa+0a6/teNeAMsWqY6AVtZA4NhCWnwP4OH0JrRaY7rwvFCJSqNGurf8rF65W9IucM/l0+HOCg==", - "dev": true, - "requires": { - "@babel/helper-function-name": "7.0.0-beta.47", - "@babel/helper-plugin-utils": "7.0.0-beta.47", - "@babel/helper-replace-supers": "7.0.0-beta.47", - "@babel/plugin-syntax-class-properties": "7.0.0-beta.47" - } - }, - "@babel/plugin-proposal-decorators": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.0.0-beta.47.tgz", - "integrity": "sha512-sI+cO1okrlOyV4I63HDXf/SFsCr492HLjzNsMsd7Lk9WrViA+eQIboIiI9wHicozdgD1WrpZGJTjz7Z3xwl2Qw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47", - "@babel/plugin-syntax-decorators": "7.0.0-beta.47" - } - }, - "@babel/plugin-proposal-do-expressions": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-do-expressions/-/plugin-proposal-do-expressions-7.0.0-beta.47.tgz", - "integrity": "sha512-NyRhlj9QQ0M6Lbyp6tjFInX3utZ6hmMllBJHDLhMJU2r0NPtbSuTgLRWlEkVMkGk8fhuU9BBuP7uW6pplxs/kQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47", - "@babel/plugin-syntax-do-expressions": "7.0.0-beta.47" - } - }, - "@babel/plugin-proposal-export-default": { - "version": "7.0.0-beta.32", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default/-/plugin-proposal-export-default-7.0.0-beta.32.tgz", - "integrity": "sha512-I6X/25v58uuUgfyS4qW44xInNdRZf2JSQTcLOk2m2Mf+oSJLuYIT3uwYUG6KDqsaF2uVQ9Zgobgse9qV5tJcaA==", - "dev": true, - "requires": { - "@babel/plugin-syntax-export-extensions": "7.0.0-beta.32" - } - }, - "@babel/plugin-proposal-export-default-from": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.0.0-beta.47.tgz", - "integrity": "sha512-Iheq/FHjGdFLi9HITNXI/keTweLMR9vD1bLJI2yrf5KagawYyXJVZsed6KFddnfX8qv/yj6be4Qh7FXeuN/Xqw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47", - "@babel/plugin-syntax-export-default-from": "7.0.0-beta.47" - } - }, - "@babel/plugin-proposal-export-namespace": { - "version": "7.0.0-beta.32", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace/-/plugin-proposal-export-namespace-7.0.0-beta.32.tgz", - "integrity": "sha512-vSnkdadqxvkOtNgoY8lo3cpXkBkRBLS6Z/2IoHZRplp1e/V6a/wGRBwwJGEQoi24WDIMwzlOl6V0I7q/MTo9jA==", - "dev": true, - "requires": { - "@babel/plugin-syntax-export-extensions": "7.0.0-beta.32" - } - }, - "@babel/plugin-proposal-export-namespace-from": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.0.0-beta.47.tgz", - "integrity": "sha512-tTYnPZzCrOm8NK+7lRi4LGxPaw6lErDsozNInM/FWOXGe7s2EpQnTa40S7/gLLNGvpNshYHdykJtKgfiar9qkA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47", - "@babel/plugin-syntax-export-namespace-from": "7.0.0-beta.47" - } - }, - "@babel/plugin-proposal-function-bind": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-function-bind/-/plugin-proposal-function-bind-7.0.0-beta.47.tgz", - "integrity": "sha512-bzr0aEp5Yz5SYQU6KQGeFnxUB/c4pjQ5wvMx7xeQgGah54hYXpRTBc8baTfqkuooJ40qXluEPUu3c/hwlJ8wjQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47", - "@babel/plugin-syntax-function-bind": "7.0.0-beta.47" - } - }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.0.0-beta.47.tgz", - "integrity": "sha512-7OhbKhytA5YRTUvhZbHGBy0jgU5EJiXRSiifCiMt1lusbSb4RQKsPM4NJ8+kMrx5oDlcyGPu2n3EhEMGEaBUJw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47", - "@babel/plugin-syntax-nullish-coalescing-operator": "7.0.0-beta.47" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0-beta.47.tgz", - "integrity": "sha512-ujUjQUyTxUWHfixRD7Y5Nm8VCgHSf6YgbM37LEnojKp5lPahZO42qJfDty+Kh0tEanpI5H8BLPkJbFSzx6TNEw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47", - "@babel/plugin-syntax-object-rest-spread": "7.0.0-beta.47" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.0.0-beta.47.tgz", - "integrity": "sha512-XMZavW6uior8KD4BeMavxF3PGrwVpIFlZk/GJQGkd3lOeOHil8nhHDuTWvsbsJptKFWMPkhGR18boNdxgmxyFQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47", - "@babel/plugin-syntax-optional-catch-binding": "7.0.0-beta.47" - } - }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.0.0-beta.47.tgz", - "integrity": "sha512-5jlVmdC1Lv874h2553xAp50jVv3L/23KksOLUZdF/9+ZdbAzOlhX6spHiVy/jjfU9G1MFZtZTlxhV5roGkqZvg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47", - "@babel/plugin-syntax-optional-chaining": "7.0.0-beta.47" - } - }, - "@babel/plugin-proposal-pipeline-operator": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-pipeline-operator/-/plugin-proposal-pipeline-operator-7.0.0-beta.47.tgz", - "integrity": "sha512-Pwbyl8r+oi7ZIefzwIzH7wFSmiIW2M7ZRgGseZLs9JcqPsAq70XZ5YeVEd+jsiK4dofIEXKpEAresD/PfVYa5w==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47", - "@babel/plugin-syntax-pipeline-operator": "7.0.0-beta.47" - } - }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.0.0-beta.47.tgz", - "integrity": "sha512-TCQqSmPrgVB0Txr6WzCpxJyLuVTb9KoT0+oECKELtF717bvHOI4woR7o8D8DFkXzVQeb7Kqfu5w05gsvPq591g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47", - "@babel/helper-regex": "7.0.0-beta.47", - "regexpu-core": "4.1.5" - } - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.0.0-beta.47.tgz", - "integrity": "sha512-LCNGYTLpQAsvTmVmT/I2pz7dIh3Bu+9BLxqL7b3QfplsMQxNsoBBMend33Arb4EtPt5dX7KeeVof8tL0trDRRA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.0.0-beta.47.tgz", - "integrity": "sha512-vLoAuLSjHSenX3TQmri6ttQWZp3rEtGcRp4LgYEBQ012fN5h+KmcssvkCAqm6V6ozS5KzUWpBlZ6t7YhZG6oBw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-syntax-decorators": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.0.0-beta.47.tgz", - "integrity": "sha512-Lv10BM3C+0Ki53lI7T9xZsSsgzQqfoQZq4pZj0F6tkK54E5BBSFfUxGavRE43CFXHbK0Hd9uMqmpGWPGtCvgAw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-syntax-do-expressions": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-do-expressions/-/plugin-syntax-do-expressions-7.0.0-beta.47.tgz", - "integrity": "sha512-jVmgmJ+VsQPANpzPZH7jch7N5hwjTPGwBM5yOMIvWbu320sllexpRacLAzk+kZR6VvrvkuUVrQwitfdYgUpAvA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.0.0-beta.47.tgz", - "integrity": "sha512-J2y7RAH2NwQ+ahJahj2eS1PqS2NWNWTDaEibqrE55VTJU7nPL8AhthRwIQfQkCH+8UIeL/T3Jh1iHIRkvJ6dXA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-syntax-export-default-from": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.0.0-beta.47.tgz", - "integrity": "sha512-SHyxhnlUFtFzBZ4GxyKA88jrcGIFjkfJ0jB68WGor1IHpBS7qDLFYPaLdbsKzIlZgtqR/uzKVbBUbvT3AfjdrQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-syntax-export-extensions": { - "version": "7.0.0-beta.32", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-extensions/-/plugin-syntax-export-extensions-7.0.0-beta.32.tgz", - "integrity": "sha512-rPCgRGdA2nUGRGsDlfII8g665+ECp0IpKtjRtpBJB7GMBG+WpAbWVM6P4h40IsEe9wv38jl0Nuv3lVVvKTi/Mw==", - "dev": true - }, - "@babel/plugin-syntax-export-namespace-from": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.0.0-beta.47.tgz", - "integrity": "sha512-mCNj425dtBdO95z1jMKoW0H3nZnTy9tjsdIuLw94uS+y97hvmFkFQtffqH+WIwEGxGBWq1Pn0OGfk3E8GfkhgQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-syntax-function-bind": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-function-bind/-/plugin-syntax-function-bind-7.0.0-beta.47.tgz", - "integrity": "sha512-ojiQsLX6e69aCMW1TPhrnwRBAFZM0n1FCgUmXtFdUlTYY+A5paBxtOIu2/0isN67Ychu23EtiihPlFn0uto9kw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-syntax-jsx": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.0.0-beta.47.tgz", - "integrity": "sha512-5scuJzIYZY8M+A1ra8mcKANIwB5TtsRD6Aw94xZxfvnjhhVMFR5RYE9HshVlBrZVY+r3cJDNIQLJMC/fGJHImA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.0.0-beta.47.tgz", - "integrity": "sha512-o0v9WRQwatyMSGoPIdYoK8VTDrjdHU3MQgHLcbveetueKHZGYN3MhZvkCFa86l5WKUGDF81FOk/mta/7QuDI9g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.0.0-beta.47.tgz", - "integrity": "sha512-UOGQCmzvNlZMQOuys7xPiTa2EjTT3xHuhUghcdJnYikqGV43obpIIaP+VDCWPvIT8g0QDIvmRWx5UefvkWXN+w==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.0.0-beta.47.tgz", - "integrity": "sha512-Dmq+REMR95Syg+VjV3bh63DD/tDxdraNQ4ErAOXFobfSCDbfov9YGkqSJ4K61LHTQwinQ0+dIUlgdFL2kbedIw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.0.0-beta.47.tgz", - "integrity": "sha512-lt6JV/D7QeAEf3qqUT4JTPkbU6vNCfeMW7BB7JD+HYivITkmXuGIVl7w4JrRB9LkfjkYE5vgiz3Nc733AD7v8w==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-syntax-pipeline-operator": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-pipeline-operator/-/plugin-syntax-pipeline-operator-7.0.0-beta.47.tgz", - "integrity": "sha512-5qhDe3UgK8f3jiyDE6O+PI5R+xtgnep5tJYoyxMqmtTIM1jeuyf9kyg6l+kNiV5L/NcXnh2nrhS2hO50bK4/VA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.0.0-beta.47.tgz", - "integrity": "sha512-xiU+7RJAsqx+iZqWSQQWBu9ZDTruWimkg4puDSdRVfEwgZQdOtiU2LuO0+xGFyitJPHkKuje0WvK1tFu1dmxCw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.0.0-beta.47.tgz", - "integrity": "sha512-/TXK3v6ipvmhMO81Y2Vjc7RYROkS2PcmRc+kvmU3CWA7r5I73KWg10UEW/fpWqCuoTCHHHXu1ZcZ5u+nduJeFw==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "7.0.0-beta.47", - "@babel/helper-plugin-utils": "7.0.0-beta.47", - "@babel/helper-remap-async-to-generator": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.0.0-beta.47.tgz", - "integrity": "sha512-8KPxKyE6kb9VRbHwQ8XKsg/IPlxHaOMRyg2WfyV5C4dCmXbRdHDJy4hZKB3o4rGxjggmC/Bx8Fh51/P7UNtTcA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-block-scoping": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.0.0-beta.47.tgz", - "integrity": "sha512-V/u3Zdy40KjVQeyYUaQnCGiHQbRNJoc6IEtNDERltuW9vYPHS1n6YGc+EHKi8JVYT4kE6UHOjD+BrbCCV4kjRw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47", - "lodash": "4.17.10" - }, - "dependencies": { - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", - "dev": true - } - } - }, - "@babel/plugin-transform-classes": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.0.0-beta.47.tgz", - "integrity": "sha512-hzW/jL6TPBMHJXeXwzuxMN0PFAfjVD0UzATHrFSejY5A7SvhWWrv1cZ3K0/SzCXJ9LpMdxCNiREvVjeD/Tyx2g==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "7.0.0-beta.47", - "@babel/helper-define-map": "7.0.0-beta.47", - "@babel/helper-function-name": "7.0.0-beta.47", - "@babel/helper-optimise-call-expression": "7.0.0-beta.47", - "@babel/helper-plugin-utils": "7.0.0-beta.47", - "@babel/helper-replace-supers": "7.0.0-beta.47", - "@babel/helper-split-export-declaration": "7.0.0-beta.47", - "globals": "11.5.0" - } - }, - "@babel/plugin-transform-computed-properties": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.0.0-beta.47.tgz", - "integrity": "sha512-V78qyzmjj4aq/tjpkMFbV5gPtrx7xdclW1Rn6vV9hIwMSMbtstYEXF4msy614MofvYj6gYbPbNfyhXFIUvz/xw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-destructuring": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.0.0-beta.47.tgz", - "integrity": "sha512-3AaXC9H7qPybJbSs/QMhhj9EZF9MYrb/HRytwki1tckaYifqCJquENIZxDAYmwsWIGIHiq34WqwPRMIsz/b5uQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.0.0-beta.47.tgz", - "integrity": "sha512-ofB5GwipMoaOH3Qyr5g5FpXWePhIAaD4zMDOoAHDYBPuLWxzAME8YQCa0S3HJf3eTu/HTN/c/G1gDwDB8Z/gKQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47", - "@babel/helper-regex": "7.0.0-beta.47", - "regexpu-core": "4.1.5" - } - }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.0.0-beta.47.tgz", - "integrity": "sha512-r3xNVYTLVasjqTowIr6s+27oc5n7A5TKbB0/4u9FHjF7ONTWaggO8UFbbj07DOJ4Ll2RkigrZA8/D+w2nJ+XlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.0.0-beta.47.tgz", - "integrity": "sha512-vyGG3kLIXpMuaPL485aqowdWFrxCxXtbzMXy9p1QTK5Q/+9UHpK9XoAVJZGknnsm091m0Ss7spo8uHaxbzYVog==", - "dev": true, - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "7.0.0-beta.47", - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-for-of": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.0.0-beta.47.tgz", - "integrity": "sha512-tfH5OMzV9fWLYJTzWDhoRJKr8kvBZWH26jiCgM0ayNq75ES/X947MqMNAgBjJdTAVEV2kOyks2ItgNAJT4rOUw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-function-name": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.0.0-beta.47.tgz", - "integrity": "sha512-/5I/f8NCouugsRT6ORB1UjCP3N+Rgv/OB6SzmaeIUEpYYPM6D7WQ+4BaRYXQn4eqtOJmTgxDXYa8FgYtoeqP9A==", - "dev": true, - "requires": { - "@babel/helper-function-name": "7.0.0-beta.47", - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-literals": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.0.0-beta.47.tgz", - "integrity": "sha512-PxBw+52qWypwR76YfS2FlW4wZfp61SjIyt3OSPZeWnf0zVQWNVrlRRunJ7lBYudDYvyMwStAE/VynZ0fHtPgng==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-modules-amd": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.0.0-beta.47.tgz", - "integrity": "sha512-zW84YqQ5Kt8+t5pYrnFhjWQP2w2wq6Nxz9pozxpnvXP+lhqyJPqNdWM1lcVApORpWL1BF7BlgP08yk+5MVRfGA==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "7.0.0-beta.47", - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.0.0-beta.47.tgz", - "integrity": "sha512-MYoLyexybBJ9ODWWMsMFzxAQey68RzhQNPjfNAYPhPPB3X160EZ5qOjWxRS2rYNvuYAxs6guy5OdrDpESqFSrQ==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "7.0.0-beta.47", - "@babel/helper-plugin-utils": "7.0.0-beta.47", - "@babel/helper-simple-access": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.0.0-beta.47.tgz", - "integrity": "sha512-bMQy3/jEZRpoUg7RdOouphBO8+7Sfjl7XrO84PtgBx4ck+ZPc4xOlBQyr2rkmsJNmmGLi42nnMI1cZZJT3LVnQ==", - "dev": true, - "requires": { - "@babel/helper-hoist-variables": "7.0.0-beta.47", - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-modules-umd": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.0.0-beta.47.tgz", - "integrity": "sha512-rG7KioAFCLxZ33wNBqUoxPhtXOmVEvnZNIy9wv0fSbNIQr8lO1avZ7SeBL3OZduNvLocqrESt9Xhh1nzb/zOvA==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "7.0.0-beta.47", - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-new-target": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0-beta.47.tgz", - "integrity": "sha512-2IRZtdoPXJn7KSwrmp0xtLTZ0PnhlQxhcTZ0XZ5wfFXmsZ9vi6AK4whIZ2IXI/c2qrYK9FEYLwR5QRfL5Qe6eQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-object-super": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.0.0-beta.47.tgz", - "integrity": "sha512-JN6ox2rH1xe6hlsd6/7d2kPjZSA97wH4oOdNOSaNqaFGEFuaP/Je4+ojHMgyHKU2nx9QHNBCTxHEj+ko+Ij6HQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47", - "@babel/helper-replace-supers": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-parameters": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.0.0-beta.47.tgz", - "integrity": "sha512-UzQG8draO+30Y8eNEREuGBfmEHLL7WFxOjmTBbaTrbdOrm/znCUThqcuNz8cyn2nrZbln7M/loQ3stjf9Pt9fQ==", - "dev": true, - "requires": { - "@babel/helper-call-delegate": "7.0.0-beta.47", - "@babel/helper-get-function-arity": "7.0.0-beta.47", - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-react-constant-elements": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.0.0-beta.47.tgz", - "integrity": "sha512-jD5uXbJ7t1R+C9ZJdI6mT9qE0zxfyKbM+V25qScumjNHeCXn+S56aOD34oPF/Rc+Nupjp4rJcgMSLso042jJNw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "7.0.0-beta.47", - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-react-display-name": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.0.0-beta.47.tgz", - "integrity": "sha512-Rw1KWihSkGHbqHiQuiFu/beMakDtobW3eLSABw1w3BvRIc/UhBXxwyIxa/q/R9hWFBholAjmx9cKey8FnZPykw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-react-inline-elements": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-inline-elements/-/plugin-transform-react-inline-elements-7.0.0-beta.47.tgz", - "integrity": "sha512-icvJqGJApiipdyPG1VSnRvgolgYhCQIYITMXjCWIFxjuHGUw11ouCsYrx1wreTrhUZMNdsHATeQ8+Jk9oDQI5A==", - "dev": true, - "requires": { - "@babel/helper-builder-react-jsx": "7.0.0-beta.47", - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-react-jsx": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.0.0-beta.47.tgz", - "integrity": "sha512-HGian2BbCsyAqs6LntVVRpjXG9TkzhHfTynjUoMxOFL29doKEy/0s96SMvmbBSR/wMRKMd1OPvCiEYYxqZtr3g==", - "dev": true, - "requires": { - "@babel/helper-builder-react-jsx": "7.0.0-beta.47", - "@babel/helper-plugin-utils": "7.0.0-beta.47", - "@babel/plugin-syntax-jsx": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-react-jsx-self": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.0.0-beta.47.tgz", - "integrity": "sha512-hlk+iHdlGtUWo1Y//2snSODh4swBaAcnSLC2qHTbWDE5myEO6ZFGV0nVS3eLOictgKFjrzzPZm6P0X/0w5tVBQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47", - "@babel/plugin-syntax-jsx": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-react-jsx-source": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.0.0-beta.47.tgz", - "integrity": "sha512-oZ6D9z+qql+tz7PjGp1CaxepxqDQQTusyjeKsWr7NdEa0v2j3sWLkfK4Aa7kU9BT0+j+r/LN4u33UBkBNVoVvw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47", - "@babel/plugin-syntax-jsx": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-regenerator": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0-beta.47.tgz", - "integrity": "sha512-JEPIiJyqYRfjOYUTZguLkb2HTwudReqLyOljpOXnJ/1ymwsiof4D6ul611DGlMxJMZJGQ6TBi59iY9GoJ6j4Iw==", - "dev": true, - "requires": { - "regenerator-transform": "0.12.3" - } - }, - "@babel/plugin-transform-runtime": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.0.0-beta.47.tgz", - "integrity": "sha512-RhnhjYsOxmKDGa1ePM5RQWFBYe1PnEZAhXTNEeIwtw1jluEoLL+PCTZDbt/aAcAkZvqwIWccjkNM/FwKTd5Sxw==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "7.0.0-beta.47", - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.0.0-beta.47.tgz", - "integrity": "sha512-+o7/yb0Nrk4Gg/tnBgfBf+G1uGZbtkSluUnj8RyD37ajpDlWmysDjFEHSfktKcuD8YHeGz2M9AYNGcClk1fr/g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-spread": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.0.0-beta.47.tgz", - "integrity": "sha512-LFAozFdfT4bE2AQw2BnjzLufTX4GBsTUHUGRhT8XNoDYuGnV+7k9Yj6JU3/7csJc9u6W91PArYgoO+D56CMw6Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.0.0-beta.47.tgz", - "integrity": "sha512-+Rc6NihGoXcwAqAxbiumvzOYxRR0aUg1ZExfyHnI5QnQf0sf4xAfgT/YpGvEgLd5Ci0rka+IWSj54PhzZkhuTg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47", - "@babel/helper-regex": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-template-literals": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.0.0-beta.47.tgz", - "integrity": "sha512-ORfrfN/gQoRuI+xf+kOa2i/yvXfedFRgH+KtgoIrpUQom7OhexxzD280x80LMCIkdaVGzYhvlC3kdJkFMWAfUg==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "7.0.0-beta.47", - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.0.0-beta.47.tgz", - "integrity": "sha512-PhPy5NUY5MT++fEr7/sxN1/ERSM2siHSbGgdkbqgDlyvf1NlU1HeqyfomHJEFE1Y4PX0hj+XmtjSAali/6XqYA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47" - } - }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.0.0-beta.47.tgz", - "integrity": "sha512-44nWn421tMVZ/A4+1uppzoAO7nrlwWzefMr9JUi5G+tXl0DLEtWy+F7L6zCVw19C4OAOA6WlolVro5CEs6g6AQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47", - "@babel/helper-regex": "7.0.0-beta.47", - "regexpu-core": "4.1.5" - } - }, - "@babel/polyfill": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.0.0-beta.47.tgz", - "integrity": "sha512-jDKBjX1K/fUNrPGo3wDKEWIXDHZEgpsKTRo3B4Ox5cq5Hxcp219ez/oGofDjNMUJAUI+gfsQfRarMkC5f3uiYw==", - "requires": { - "core-js": "2.5.6", - "regenerator-runtime": "0.11.1" - }, - "dependencies": { - "core-js": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.6.tgz", - "integrity": "sha512-lQUVfQi0aLix2xpyjrrJEvfuYCqPc/HwmTKsC/VNf8q0zsjX7SQZtp4+oRONN5Tsur9GDETPjj+Ub2iDiGZfSQ==" - }, - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" - } - } - }, - "@babel/preset-env": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.0.0-beta.47.tgz", - "integrity": "sha512-ZFUgKdQDqw2H5TCMaWq6iDDO9+16RZPdDfOuoPID8Agm8I2MBlrqTI1MKWwqgEHICdZIOXkVszAMuuDTBwdzHA==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "7.0.0-beta.47", - "@babel/helper-plugin-utils": "7.0.0-beta.47", - "@babel/plugin-proposal-async-generator-functions": "7.0.0-beta.47", - "@babel/plugin-proposal-object-rest-spread": "7.0.0-beta.47", - "@babel/plugin-proposal-optional-catch-binding": "7.0.0-beta.47", - "@babel/plugin-proposal-unicode-property-regex": "7.0.0-beta.47", - "@babel/plugin-syntax-async-generators": "7.0.0-beta.47", - "@babel/plugin-syntax-object-rest-spread": "7.0.0-beta.47", - "@babel/plugin-syntax-optional-catch-binding": "7.0.0-beta.47", - "@babel/plugin-transform-arrow-functions": "7.0.0-beta.47", - "@babel/plugin-transform-async-to-generator": "7.0.0-beta.47", - "@babel/plugin-transform-block-scoped-functions": "7.0.0-beta.47", - "@babel/plugin-transform-block-scoping": "7.0.0-beta.47", - "@babel/plugin-transform-classes": "7.0.0-beta.47", - "@babel/plugin-transform-computed-properties": "7.0.0-beta.47", - "@babel/plugin-transform-destructuring": "7.0.0-beta.47", - "@babel/plugin-transform-dotall-regex": "7.0.0-beta.47", - "@babel/plugin-transform-duplicate-keys": "7.0.0-beta.47", - "@babel/plugin-transform-exponentiation-operator": "7.0.0-beta.47", - "@babel/plugin-transform-for-of": "7.0.0-beta.47", - "@babel/plugin-transform-function-name": "7.0.0-beta.47", - "@babel/plugin-transform-literals": "7.0.0-beta.47", - "@babel/plugin-transform-modules-amd": "7.0.0-beta.47", - "@babel/plugin-transform-modules-commonjs": "7.0.0-beta.47", - "@babel/plugin-transform-modules-systemjs": "7.0.0-beta.47", - "@babel/plugin-transform-modules-umd": "7.0.0-beta.47", - "@babel/plugin-transform-new-target": "7.0.0-beta.47", - "@babel/plugin-transform-object-super": "7.0.0-beta.47", - "@babel/plugin-transform-parameters": "7.0.0-beta.47", - "@babel/plugin-transform-regenerator": "7.0.0-beta.47", - "@babel/plugin-transform-shorthand-properties": "7.0.0-beta.47", - "@babel/plugin-transform-spread": "7.0.0-beta.47", - "@babel/plugin-transform-sticky-regex": "7.0.0-beta.47", - "@babel/plugin-transform-template-literals": "7.0.0-beta.47", - "@babel/plugin-transform-typeof-symbol": "7.0.0-beta.47", - "@babel/plugin-transform-unicode-regex": "7.0.0-beta.47", - "browserslist": "3.2.7", - "invariant": "2.2.2", - "semver": "5.4.1" - }, - "dependencies": { - "browserslist": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.7.tgz", - "integrity": "sha512-oYVLxFVqpX9uMhOIQBLtZL+CX4uY8ZpWcjNTaxyWl5rO8yA9SSNikFnAfvk8J3P/7z3BZwNmEqFKaJoYltj3MQ==", - "dev": true, - "requires": { - "caniuse-lite": "1.0.30000840", - "electron-to-chromium": "1.3.45" - } - } - } - }, - "@babel/preset-react": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.0.0-beta.47.tgz", - "integrity": "sha512-fK4B101W19JsOc8E/wqmQ8R7gE1+DQJqIWvpaQIXPHgW+27ezq2JP5j5IBCk+9OTz007l7se00kMvvtUcKQZwg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.47", - "@babel/plugin-syntax-jsx": "7.0.0-beta.47", - "@babel/plugin-transform-react-display-name": "7.0.0-beta.47", - "@babel/plugin-transform-react-jsx": "7.0.0-beta.47", - "@babel/plugin-transform-react-jsx-self": "7.0.0-beta.47", - "@babel/plugin-transform-react-jsx-source": "7.0.0-beta.47" - } - }, - "@babel/register": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.0.0-beta.47.tgz", - "integrity": "sha512-r5aS1bAqW0tHvwUNPRRdmIedSWGK/oyv598EENpV/+VZF8EkX9TiVqCpJyg6zucPPyMjtdXN1pK/Yljp5NdGGA==", - "dev": true, - "requires": { - "core-js": "2.5.6", - "find-cache-dir": "1.0.0", - "home-or-tmp": "3.0.0", - "lodash": "4.17.10", - "mkdirp": "0.5.1", - "pirates": "3.0.2", - "source-map-support": "0.4.18" - }, - "dependencies": { - "core-js": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.6.tgz", - "integrity": "sha512-lQUVfQi0aLix2xpyjrrJEvfuYCqPc/HwmTKsC/VNf8q0zsjX7SQZtp4+oRONN5Tsur9GDETPjj+Ub2iDiGZfSQ==", - "dev": true - }, - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", - "dev": true - } - } - }, - "@babel/runtime": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.0.0-beta.47.tgz", - "integrity": "sha512-3IaakAC5B4bHJ0aCUKVw0pt+GruavdgWDFbf7TfKh7ZJ8yQuUp7af7MNwf3e+jH8776cjqYmMO1JNDDAE9WfrA==", - "requires": { - "core-js": "2.5.6", - "regenerator-runtime": "0.11.1" - }, - "dependencies": { - "core-js": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.6.tgz", - "integrity": "sha512-lQUVfQi0aLix2xpyjrrJEvfuYCqPc/HwmTKsC/VNf8q0zsjX7SQZtp4+oRONN5Tsur9GDETPjj+Ub2iDiGZfSQ==" - }, - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" - } - } - }, - "@babel/template": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.47.tgz", - "integrity": "sha512-mAzrOCLwOb4jAobHi0kTwIkoamP1Do28c6zxvrDXjYSJFZHz6KGuzMaT0AV7ZCq7M3si7QypVVMVX2bE6IsuOg==", - "dev": true, - "requires": { - "@babel/code-frame": "7.0.0-beta.47", - "@babel/types": "7.0.0-beta.47", - "babylon": "7.0.0-beta.47", - "lodash": "4.17.10" - }, - "dependencies": { - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", - "dev": true - } - } - }, - "@babel/traverse": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.47.tgz", - "integrity": "sha512-kYGGs//OnUnei+9TTldxlgf7llprj7VUeDKtG50+g+0k1g0yZyrkEgbyFheYFdnudR8IDEHOEXVsUuY82r5Aiw==", - "dev": true, - "requires": { - "@babel/code-frame": "7.0.0-beta.47", - "@babel/generator": "7.0.0-beta.47", - "@babel/helper-function-name": "7.0.0-beta.47", - "@babel/helper-split-export-declaration": "7.0.0-beta.47", - "@babel/types": "7.0.0-beta.47", - "babylon": "7.0.0-beta.47", - "debug": "3.1.0", - "globals": "11.5.0", - "invariant": "2.2.2", - "lodash": "4.17.10" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", - "dev": true - } - } - }, - "@babel/types": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.47.tgz", - "integrity": "sha512-MOP5pOosg7JETrVGg8OQyzmUmbyoSopT5j2HlblHsto89mPz3cmxzn1IA4UNUmnWKgeticSwfhS+Gdy25IIlBQ==", - "dev": true, - "requires": { - "esutils": "2.0.2", - "lodash": "4.17.10", - "to-fast-properties": "2.0.0" - }, - "dependencies": { - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", - "dev": true - } - } - }, - "@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", - "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", - "dev": true, - "requires": { - "call-me-maybe": "1.0.1", - "glob-to-regexp": "0.3.0" - } - }, - "@types/history": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/@types/history/-/history-4.6.2.tgz", - "integrity": "sha512-eVAb52MJ4lfPLiO9VvTgv8KaZDEIqCwhv+lXOMLlt4C1YHTShgmMULEg0RrCbnqfYd6QKfHsMp0MiX0vWISpSw==" - }, - "@types/isomorphic-fetch": { - "version": "0.0.34", - "resolved": "https://registry.npmjs.org/@types/isomorphic-fetch/-/isomorphic-fetch-0.0.34.tgz", - "integrity": "sha1-PDSD5gbAQTeEOOlRRk8A5OYHBtY=" - }, - "@types/node": { - "version": "7.0.46", - "resolved": "https://registry.npmjs.org/@types/node/-/node-7.0.46.tgz", - "integrity": "sha512-u+JAi1KtmaUoU/EHJkxoiuvzyo91FCE41Z9TZWWcOUU3P8oUdlDLdrGzCGWySPgbRMD17B0B+1aaJLYI9egQ6A==", - "dev": true - }, - "@types/react": { - "version": "16.3.14", - "resolved": "https://registry.npmjs.org/@types/react/-/react-16.3.14.tgz", - "integrity": "sha512-wNUGm49fPl7eE2fnYdF0v5vSOrUMdKMQD/4NwtQRnb6mnPwtkhabmuFz37eq90+hhyfz0pWd38jkZHOcaZ6LGw==", - "requires": { - "csstype": "2.5.1" - } - }, - "@types/react-router": { - "version": "4.0.25", - "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-4.0.25.tgz", - "integrity": "sha512-IsFvDwQy2X08g+tRMvugH1l7e0kkR+o5qEUkFfYLmjw2jGCPogY2bBuRAgZCZ5CSUswdNTkKtPUmNo+f6afyfg==", - "requires": { - "@types/history": "4.6.2", - "@types/react": "16.3.14" - } - }, - "@types/react-router-redux": { - "version": "5.0.14", - "resolved": "https://registry.npmjs.org/@types/react-router-redux/-/react-router-redux-5.0.14.tgz", - "integrity": "sha512-79XeMxeMK1XjJe+4pAxMR+pPkuGgtLLAizg3dIqj5BaXxKuFmS+6Pa8OtYLijRZxKuZ0ZRX1HZ9MXxKigB/NLQ==", - "requires": { - "@types/history": "4.6.2", - "@types/react": "16.3.14", - "@types/react-router": "4.0.25", - "redux": "3.7.2" - } - }, - "abab": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", - "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=", - "dev": true - }, - "abs-svg-path": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/abs-svg-path/-/abs-svg-path-0.1.1.tgz", - "integrity": "sha1-32Acjo0roQ1KdtYl4japo5wnI78=" - }, - "accepts": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", - "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", - "dev": true, - "requires": { - "mime-types": "2.1.18", - "negotiator": "0.6.1" - } - }, - "acorn": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz", - "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==", - "dev": true - }, - "acorn-dynamic-import": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz", - "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=", - "dev": true, - "requires": { - "acorn": "4.0.13" - }, - "dependencies": { - "acorn": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", - "dev": true - } - } - }, - "acorn-globals": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.1.0.tgz", - "integrity": "sha512-KjZwU26uG3u6eZcfGbTULzFcsoz6pegNKtHPksZPOUsiKo5bUmiBPa38FuHZ/Eun+XYh/JCCkS9AS3Lu4McQOQ==", - "dev": true, - "requires": { - "acorn": "5.5.3" - } - }, - "acorn-jsx": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", - "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", - "dev": true, - "requires": { - "acorn": "3.3.0" - }, - "dependencies": { - "acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", - "dev": true - } - } - }, - "add-dom-event-listener": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/add-dom-event-listener/-/add-dom-event-listener-1.0.2.tgz", - "integrity": "sha1-j67SxBAIchzxEdodMNmVuFvkK+0=", - "requires": { - "object-assign": "4.1.1" - } - }, - "address": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/address/-/address-1.0.3.tgz", - "integrity": "sha512-z55ocwKBRLryBs394Sm3ushTtBeg6VAeuku7utSoSnsJKvKcnXFIyC6vh27n3rXyxSgkJBBCAvyOn7gSUcTYjg==", - "dev": true - }, - "af-webpack": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/af-webpack/-/af-webpack-0.17.4.tgz", - "integrity": "sha512-lYZF+/f38X5XuOY4PRkPPyIiFXJL++fkgPZuMxuxNTpvbVlmVKa27KU14gaCTi6EVQ3uNqgLemJCldSlueAI2g==", - "dev": true, - "requires": { - "@babel/core": "7.0.0-beta.47", - "@babel/plugin-transform-modules-commonjs": "7.0.0-beta.47", - "@babel/register": "7.0.0-beta.47", - "@babel/runtime": "7.0.0-beta.47", - "assert": "1.4.1", - "autoprefixer": "7.2.6", - "awesome-typescript-loader": "3.5.0", - "babel-eslint": "8.2.3", - "babel-loader": "8.0.0-beta.2", - "babel-plugin-add-module-exports": "0.2.1", - "babel-plugin-dynamic-import-node-sync": "1.0.1", - "babel-preset-umi": "0.2.8", - "case-sensitive-paths-webpack-plugin": "2.1.2", - "chalk": "2.4.1", - "chokidar": "1.7.0", - "copy-webpack-plugin": "4.5.1", - "css-loader": "0.28.11", - "debug": "3.1.0", - "deprecate": "1.0.0", - "detect-port": "1.2.2", - "didyoumean": "1.2.1", - "eslint": "4.19.1", - "eslint-config-umi": "0.1.4", - "eslint-loader": "1.9.0", - "eslint-plugin-flowtype": "2.46.3", - "eslint-plugin-import": "2.8.0", - "eslint-plugin-jsx-a11y": "5.1.1", - "eslint-plugin-react": "7.4.0", - "extract-text-webpack-plugin": "3.0.2", - "file-loader": "0.11.2", - "fork-ts-checker-webpack-plugin": "0.2.10", - "html-webpack-plugin": "2.30.1", - "inquirer": "3.3.0", - "is-plain-object": "2.0.4", - "is-root": "1.0.0", - "less": "2.7.3", - "less-loader": "4.1.0", - "lodash.isequal": "4.5.0", - "postcss": "6.0.22", - "postcss-flexbugs-fixes": "3.3.1", - "postcss-loader": "2.1.5", - "react-dev-utils": "5.0.1", - "react-error-overlay": "3.0.0", - "requireindex": "1.2.0", - "resolve": "1.5.0", - "sockjs-client": "1.1.4", - "strip-ansi": "3.0.1", - "strip-json-comments": "2.0.1", - "style-loader": "0.18.2", - "sw-precache-webpack-plugin": "0.11.5", - "system-bell-webpack-plugin": "1.0.0", - "tslint": "5.10.0", - "tslint-loader": "3.6.0", - "typescript": "2.8.3", - "url-loader": "0.6.2", - "webpack": "3.12.0", - "webpack-bundle-analyzer": "2.12.0", - "webpack-dev-server": "2.11.2", - "webpack-manifest-plugin": "1.3.2" - }, - "dependencies": { - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" - } - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "eslint-plugin-jsx-a11y": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-5.1.1.tgz", - "integrity": "sha512-5I9SpoP7gT4wBFOtXT8/tXNPYohHBVfyVfO17vkbC7r9kEIxYJF12D3pKqhk8+xnk12rfxKClS3WCFpVckFTPQ==", - "dev": true, - "requires": { - "aria-query": "0.7.1", - "array-includes": "3.0.3", - "ast-types-flow": "0.0.7", - "axobject-query": "0.1.0", - "damerau-levenshtein": "1.0.4", - "emoji-regex": "6.5.1", - "jsx-ast-utils": "1.4.1" - } - } - } - }, - "agent-base": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.0.tgz", - "integrity": "sha512-c+R/U5X+2zz2+UCrCFv6odQzJdoqI+YecuhnAJLa1zYaMc13zPfwMwZrr91Pd1DYNo/yPRbiM4WVf9whgwFsIg==", - "optional": true, - "requires": { - "es6-promisify": "5.0.0" - } - }, - "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", - "dev": true, - "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.1.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" - } - }, - "ajv-keywords": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", - "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", - "dev": true - }, - "align-text": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "requires": { - "kind-of": "3.2.2", - "longest": "1.0.1", - "repeat-string": "1.6.1" - } - }, - "alphanum-sort": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", - "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", - "dev": true - }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" - }, - "ansi-align": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", - "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", - "dev": true, - "requires": { - "string-width": "2.1.1" - } - }, - "ansi-escapes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", - "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==", - "dev": true - }, - "ansi-html": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", - "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", - "dev": true - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "1.9.1" - } - }, - "antd": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/antd/-/antd-3.5.2.tgz", - "integrity": "sha512-suJ3QFjmBj4lhXUNCsjse4RIvseE6EIiiihgJB1xR0pr8novSrDZQj8ZK/4dOYBaJs2UJ5qJltRCVbO30fCuRA==", - "requires": { - "array-tree-filter": "2.1.0", - "babel-runtime": "6.26.0", - "classnames": "2.2.5", - "create-react-class": "15.6.2", - "css-animation": "1.4.1", - "dom-closest": "0.2.0", - "enquire.js": "2.1.6", - "lodash": "4.17.10", - "moment": "2.22.1", - "omit.js": "1.0.0", - "prop-types": "15.6.0", - "rc-animate": "2.4.4", - "rc-calendar": "9.6.0", - "rc-cascader": "0.13.1", - "rc-checkbox": "2.1.5", - "rc-collapse": "1.9.1", - "rc-dialog": "7.1.4", - "rc-dropdown": "2.1.2", - "rc-editor-mention": "1.1.6", - "rc-form": "2.2.0", - "rc-input-number": "4.0.7", - "rc-menu": "7.0.3", - "rc-notification": "3.1.1", - "rc-pagination": "1.16.3", - "rc-progress": "2.2.5", - "rc-rate": "2.4.0", - "rc-select": "8.0.8", - "rc-slider": "8.6.1", - "rc-steps": "3.1.1", - "rc-switch": "1.6.0", - "rc-table": "6.1.12", - "rc-tabs": "9.2.5", - "rc-time-picker": "3.3.1", - "rc-tooltip": "3.7.2", - "rc-tree": "1.8.3", - "rc-tree-select": "1.12.12", - "rc-upload": "2.4.4", - "rc-util": "4.5.0", - "react-lazy-load": "3.0.13", - "react-slick": "0.23.1", - "shallowequal": "1.0.2", - "warning": "3.0.0" - }, - "dependencies": { - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==" - }, - "moment": { - "version": "2.22.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.1.tgz", - "integrity": "sha512-shJkRTSebXvsVqk56I+lkb2latjBs8I+pc2TzWc545y2iFnSjm7Wg0QMh+ZWcdSLQyGEau5jI8ocnmkyTgr9YQ==" - } - } - }, - "any-observable": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.2.0.tgz", - "integrity": "sha1-xnhwBYADV5AJCD9UrAq6+1wz0kI=", - "dev": true - }, - "anymatch": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", - "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", - "dev": true, - "requires": { - "micromatch": "2.3.11", - "normalize-path": "2.1.1" - } - }, - "app-root-path": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-2.0.1.tgz", - "integrity": "sha1-zWLc+OT9WkF+/GZNLlsQZTxlG0Y=", - "dev": true - }, - "append-transform": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", - "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", - "dev": true, - "requires": { - "default-require-extensions": "1.0.0" - } - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "1.0.3" - } - }, - "aria-query": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-0.7.1.tgz", - "integrity": "sha1-Jsu1r/ZBRLCoJb4YRuCxbPoAsR4=", - "dev": true, - "requires": { - "ast-types-flow": "0.0.7", - "commander": "2.15.1" - }, - "dependencies": { - "commander": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", - "dev": true - } - } - }, - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "1.1.0" - } - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, - "array-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", - "dev": true - }, - "array-filter": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", - "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", - "dev": true - }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "dev": true - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", - "dev": true - }, - "array-includes": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", - "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", - "dev": true, - "requires": { - "define-properties": "1.1.2", - "es-abstract": "1.9.0" - } - }, - "array-iterate": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/array-iterate/-/array-iterate-1.1.2.tgz", - "integrity": "sha512-1hWSHTIlG/8wtYD+PPX5AOBtKWngpDFjrsrHgZpe+JdgNGz0udYu6ZIkAa/xuenIUEqFv7DvE2Yr60jxweJSrQ==", - "dev": true - }, - "array-map": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", - "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", - "dev": true - }, - "array-reduce": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", - "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", - "dev": true - }, - "array-tree-filter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-tree-filter/-/array-tree-filter-2.1.0.tgz", - "integrity": "sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw==" - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, - "requires": { - "array-uniq": "1.0.3" - } - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true - }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" - }, - "asn1": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", - "dev": true - }, - "asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "inherits": "2.0.3", - "minimalistic-assert": "1.0.1" - } - }, - "assert": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", - "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", - "dev": true, - "requires": { - "util": "0.10.3" - } - }, - "assert-plus": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", - "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", - "dev": true, - "optional": true - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, - "ast-types-flow": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", - "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", - "dev": true - }, - "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "dev": true - }, - "async": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.1.4.tgz", - "integrity": "sha1-LSFgx3iAMuTdbL4lAvH5osj2zeQ=", - "dev": true, - "requires": { - "lodash": "4.17.4" - } - }, - "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", - "dev": true - }, - "async-limiter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", - "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" - }, - "async-validator": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-1.8.2.tgz", - "integrity": "sha1-t3WXIm6WJC+NUxwNRq4pX2JCK6Q=", - "requires": { - "babel-runtime": "6.26.0" - } - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "atob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", - "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=", - "dev": true - }, - "atool-monitor": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/atool-monitor/-/atool-monitor-0.4.4.tgz", - "integrity": "sha1-2SeQUXvIKFRPs4TRjdCprkAHKhY=", - "dev": true, - "requires": { - "form-data": "1.0.1", - "is-ali-env": "0.1.3", - "isomorphic-fetch": "2.2.1", - "node-fetch": "1.7.3" - }, - "dependencies": { - "form-data": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.1.tgz", - "integrity": "sha1-rjFduaSQf6BlUCMEpm13M0de43w=", - "dev": true, - "requires": { - "async": "2.1.4", - "combined-stream": "1.0.6", - "mime-types": "2.1.18" - } - } - } - }, - "autoprefixer": { - "version": "7.2.6", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-7.2.6.tgz", - "integrity": "sha512-Iq8TRIB+/9eQ8rbGhcP7ct5cYb/3qjNYAR2SnzLCEcwF6rvVOax8+9+fccgXk4bEhQGjOZd5TLhsksmAdsbGqQ==", - "dev": true, - "requires": { - "browserslist": "2.11.3", - "caniuse-lite": "1.0.30000840", - "normalize-range": "0.1.2", - "num2fraction": "1.2.2", - "postcss": "6.0.22", - "postcss-value-parser": "3.3.0" - } - }, - "awesome-typescript-loader": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/awesome-typescript-loader/-/awesome-typescript-loader-3.5.0.tgz", - "integrity": "sha512-qzgm9SEvodVkSi9QY7Me1/rujg+YBNMjayNSAyzNghwTEez++gXoPCwMvpbHRG7wrOkDCiF6dquvv9ESmUBAuw==", - "dev": true, - "requires": { - "chalk": "2.4.1", - "enhanced-resolve": "3.3.0", - "loader-utils": "1.1.0", - "lodash": "4.17.4", - "micromatch": "3.1.10", - "mkdirp": "0.5.1", - "source-map-support": "0.5.6" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "1.1.0", - "array-unique": "0.3.2", - "extend-shallow": "2.0.1", - "fill-range": "4.0.0", - "isobject": "3.0.1", - "repeat-element": "1.1.2", - "snapdragon": "0.8.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "0.1.6" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "0.3.2", - "define-property": "1.0.0", - "expand-brackets": "2.1.4", - "extend-shallow": "2.0.1", - "fragment-cache": "0.2.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "1.0.2" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "extglob": "2.0.4", - "fragment-cache": "0.2.1", - "kind-of": "6.0.2", - "nanomatch": "1.2.9", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-support": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.6.tgz", - "integrity": "sha512-N4KXEz7jcKqPf2b2vZF11lQIz9W5ZMuUcIOGj243lduidkf2fjkVKJS9vNxVWn3u/uxX38AcE8U9nnH9FPcq+g==", - "dev": true, - "requires": { - "buffer-from": "1.0.0", - "source-map": "0.6.1" - } - } - } - }, - "aws-sign2": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", - "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", - "dev": true, - "optional": true - }, - "aws4": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz", - "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==", - "dev": true - }, - "axios": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.16.2.tgz", - "integrity": "sha1-uk+S8XFn37q0CYN4VFS5rBScPG0=", - "requires": { - "follow-redirects": "1.2.5", - "is-buffer": "1.1.6" - } - }, - "axobject-query": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-0.1.0.tgz", - "integrity": "sha1-YvWdvFnJ+SQnWco0mWDnov48NsA=", - "dev": true, - "requires": { - "ast-types-flow": "0.0.7" - } - }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "esutils": "2.0.2", - "js-tokens": "3.0.2" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "babel-core": { - "version": "7.0.0-bridge.0", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", - "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==", - "dev": true - }, - "babel-eslint": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-8.2.3.tgz", - "integrity": "sha512-0HeSTtaXg/Em7FCUWxwOT+KeFSO1O7LuRuzhk7g+1BjwdlQGlHq4OyMi3GqGxrNfEq8jEi6Hmt5ylEQUhurgiQ==", - "dev": true, - "requires": { - "@babel/code-frame": "7.0.0-beta.44", - "@babel/traverse": "7.0.0-beta.44", - "@babel/types": "7.0.0-beta.44", - "babylon": "7.0.0-beta.44", - "eslint-scope": "3.7.1", - "eslint-visitor-keys": "1.0.0" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz", - "integrity": "sha512-cuAuTTIQ9RqcFRJ/Y8PvTh+paepNcaGxwQwjIDRWPXmzzyAeCO4KqS9ikMvq0MCbRk6GlYKwfzStrcP3/jSL8g==", - "dev": true, - "requires": { - "@babel/highlight": "7.0.0-beta.44" - } - }, - "@babel/generator": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.44.tgz", - "integrity": "sha512-5xVb7hlhjGcdkKpMXgicAVgx8syK5VJz193k0i/0sLP6DzE6lRrU1K3B/rFefgdo9LPGMAOOOAWW4jycj07ShQ==", - "dev": true, - "requires": { - "@babel/types": "7.0.0-beta.44", - "jsesc": "2.5.1", - "lodash": "4.17.4", - "source-map": "0.5.7", - "trim-right": "1.0.1" - } - }, - "@babel/helper-function-name": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.44.tgz", - "integrity": "sha512-MHRG2qZMKMFaBavX0LWpfZ2e+hLloT++N7rfM3DYOMUOGCD8cVjqZpwiL8a0bOX3IYcQev1ruciT0gdFFRTxzg==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "7.0.0-beta.44", - "@babel/template": "7.0.0-beta.44", - "@babel/types": "7.0.0-beta.44" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.44.tgz", - "integrity": "sha512-w0YjWVwrM2HwP6/H3sEgrSQdkCaxppqFeJtAnB23pRiJB5E/O9Yp7JAAeWBl+gGEgmBFinnTyOv2RN7rcSmMiw==", - "dev": true, - "requires": { - "@babel/types": "7.0.0-beta.44" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.44.tgz", - "integrity": "sha512-aQ7QowtkgKKzPGf0j6u77kBMdUFVBKNHw2p/3HX/POt5/oz8ec5cs0GwlgM8Hz7ui5EwJnzyfRmkNF1Nx1N7aA==", - "dev": true, - "requires": { - "@babel/types": "7.0.0-beta.44" - } - }, - "@babel/highlight": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.44.tgz", - "integrity": "sha512-Il19yJvy7vMFm8AVAh6OZzaFoAd0hbkeMZiX3P5HGD+z7dyI7RzndHB0dg6Urh/VAFfHtpOIzDUSxmY6coyZWQ==", - "dev": true, - "requires": { - "chalk": "2.4.1", - "esutils": "2.0.2", - "js-tokens": "3.0.2" - } - }, - "@babel/template": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.44.tgz", - "integrity": "sha512-w750Sloq0UNifLx1rUqwfbnC6uSUk0mfwwgGRfdLiaUzfAOiH0tHJE6ILQIUi3KYkjiCDTskoIsnfqZvWLBDng==", - "dev": true, - "requires": { - "@babel/code-frame": "7.0.0-beta.44", - "@babel/types": "7.0.0-beta.44", - "babylon": "7.0.0-beta.44", - "lodash": "4.17.4" - } - }, - "@babel/traverse": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.44.tgz", - "integrity": "sha512-UHuDz8ukQkJCDASKHf+oDt3FVUzFd+QYfuBIsiNu/4+/ix6pP/C+uQZJ6K1oEfbCMv/IKWbgDEh7fcsnIE5AtA==", - "dev": true, - "requires": { - "@babel/code-frame": "7.0.0-beta.44", - "@babel/generator": "7.0.0-beta.44", - "@babel/helper-function-name": "7.0.0-beta.44", - "@babel/helper-split-export-declaration": "7.0.0-beta.44", - "@babel/types": "7.0.0-beta.44", - "babylon": "7.0.0-beta.44", - "debug": "3.1.0", - "globals": "11.5.0", - "invariant": "2.2.2", - "lodash": "4.17.4" - } - }, - "@babel/types": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.44.tgz", - "integrity": "sha512-5eTV4WRmqbaFM3v9gHAIljEQJU4Ssc6fxL61JN+Oe2ga/BwyjzjamwkCVVAQjHGuAX8i0BWo42dshL8eO5KfLQ==", - "dev": true, - "requires": { - "esutils": "2.0.2", - "lodash": "4.17.4", - "to-fast-properties": "2.0.0" - } - }, - "babylon": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.44.tgz", - "integrity": "sha512-5Hlm13BJVAioCHpImtFqNOF2H3ieTOHd0fmFGMxOJ9jgeFqeAwsv3u5P5cR7CSeFrkgHsT19DgFJkHV0/Mcd8g==", - "dev": true - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" - } - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "babel-generator": { - "version": "6.26.1", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", - "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", - "dev": true, - "requires": { - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "detect-indent": "4.0.0", - "jsesc": "1.3.0", - "lodash": "4.17.4", - "source-map": "0.5.7", - "trim-right": "1.0.1" - }, - "dependencies": { - "jsesc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", - "dev": true - } - } - }, - "babel-helpers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" - } - }, - "babel-jest": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-22.4.3.tgz", - "integrity": "sha512-BgSjmtl3mW3i+VeVHEr9d2zFSAT66G++pJcHQiUjd00pkW+voYXFctIm/indcqOWWXw5a1nUpR1XWszD9fJ1qg==", - "dev": true, - "requires": { - "babel-plugin-istanbul": "4.1.6", - "babel-preset-jest": "22.4.3" - } - }, - "babel-loader": { - "version": "8.0.0-beta.2", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.0-beta.2.tgz", - "integrity": "sha512-P1zch1DvQy3RGmp/1CH78uPg5gTPQQ01S9r6ipCOWVamO0UIC8gnrx7m7LsUsXa470yB6IOZxhtEEwIUclRLNw==", - "dev": true, - "requires": { - "find-cache-dir": "1.0.0", - "loader-utils": "1.1.0", - "mkdirp": "0.5.1" - } - }, - "babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-add-module-exports": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-0.2.1.tgz", - "integrity": "sha1-mumh9KjcZ/DN7E9K7aHkOl/2XiU=", - "dev": true - }, - "babel-plugin-dva-hmr": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/babel-plugin-dva-hmr/-/babel-plugin-dva-hmr-0.4.1.tgz", - "integrity": "sha512-q5uLph/66yIEPKNr5rKyOlmlDMr19XHRuGmdcyO3uO3TnsI576qS36XK9FWlwLhmrOIzO1fZPfvyZS8A+lP0pw==", - "dev": true - }, - "babel-plugin-dynamic-import-node-sync": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node-sync/-/babel-plugin-dynamic-import-node-sync-1.0.1.tgz", - "integrity": "sha1-LmeS1snN8krMO1C2Ht2XSE1G4vM=", - "dev": true, - "requires": { - "babel-plugin-syntax-dynamic-import": "6.18.0", - "babel-template": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-plugin-import": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/babel-plugin-import/-/babel-plugin-import-1.7.0.tgz", - "integrity": "sha512-iWcbukNK4R45Ot4zv3zi4RvNypNuY+9OuUEeGNAneKbgmImNWgjS2QlLV+CtrcQDG7e0jcPTcrmfxTZ89kaxTA==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "7.0.0-beta.47" - } - }, - "babel-plugin-istanbul": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz", - "integrity": "sha512-PWP9FQ1AhZhS01T/4qLSKoHGY/xvkZdVBGlKM/HuxxS3+sC66HhTNR7+MpbO/so/cz/wY94MeSWJuP1hXIPfwQ==", - "dev": true, - "requires": { - "babel-plugin-syntax-object-rest-spread": "6.13.0", - "find-up": "2.1.0", - "istanbul-lib-instrument": "1.10.1", - "test-exclude": "4.2.1" - }, - "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "2.0.0" - } - } - } - }, - "babel-plugin-jest-hoist": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-22.4.3.tgz", - "integrity": "sha512-zhvv4f6OTWy2bYevcJftwGCWXMFe7pqoz41IhMi4xna7xNsX5NygdagsrE0y6kkfuXq8UalwvPwKTyAxME2E/g==", - "dev": true - }, - "babel-plugin-module-resolver": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-module-resolver/-/babel-plugin-module-resolver-3.1.1.tgz", - "integrity": "sha512-1Q77Al4ydp6nYApJ7sQ2fmgz30WuQgJZegIYuyOdbdpxenB/bSezQ3hDPsumIXGlUS4vUIv+EwFjzzXZNWtARw==", - "dev": true, - "requires": { - "find-babel-config": "1.1.0", - "glob": "7.1.2", - "pkg-up": "2.0.0", - "reselect": "3.0.1", - "resolve": "1.5.0" - } - }, - "babel-plugin-react-require": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-react-require/-/babel-plugin-react-require-3.0.0.tgz", - "integrity": "sha1-Lk57RJa5OmVKHIAEInbeTk7rIOM=", - "dev": true - }, - "babel-plugin-syntax-decorators": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz", - "integrity": "sha1-MSVjtNvePMgGzuPkFszurd0RrAs=", - "dev": true - }, - "babel-plugin-syntax-dynamic-import": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", - "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=", - "dev": true - }, - "babel-plugin-syntax-object-rest-spread": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", - "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", - "dev": true - }, - "babel-plugin-transform-decorators-legacy": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-decorators-legacy/-/babel-plugin-transform-decorators-legacy-1.3.4.tgz", - "integrity": "sha1-dBtY9sW86eYCfgiC2cmU8E82aSU=", - "dev": true, - "requires": { - "babel-plugin-syntax-decorators": "6.13.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" - } - }, - "babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.26.2", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", - "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", - "dev": true, - "requires": { - "babel-plugin-transform-strict-mode": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-plugin-transform-react-remove-prop-types": { - "version": "0.4.13", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.13.tgz", - "integrity": "sha1-Mxz8BQmagII4MR14MZwnRg1IEYk=", - "dev": true - }, - "babel-plugin-transform-strict-mode": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", - "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-preset-jest": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-22.4.3.tgz", - "integrity": "sha512-a+M3LTEXTq3gxv0uBN9Qm6ahUl7a8pj923nFbCUdqFUSsf3YrX8Uc+C3MEwji5Af3LiQjSC7w4ooYewlz8HRTA==", - "dev": true, - "requires": { - "babel-plugin-jest-hoist": "22.4.3", - "babel-plugin-syntax-object-rest-spread": "6.13.0" - } - }, - "babel-preset-umi": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/babel-preset-umi/-/babel-preset-umi-0.2.8.tgz", - "integrity": "sha512-lMpkDdT+eJcYKULbyy5/CpWdbyCA5iFIioFsO24EcpQJhadKeJo9KFkzeQg00IQAtpSyy+9V54d4vjIGugabnw==", - "dev": true, - "requires": { - "@babel/plugin-proposal-async-generator-functions": "7.0.0-beta.47", - "@babel/plugin-proposal-class-properties": "7.0.0-beta.47", - "@babel/plugin-proposal-decorators": "7.0.0-beta.47", - "@babel/plugin-proposal-do-expressions": "7.0.0-beta.47", - "@babel/plugin-proposal-export-default": "7.0.0-beta.32", - "@babel/plugin-proposal-export-default-from": "7.0.0-beta.47", - "@babel/plugin-proposal-export-namespace": "7.0.0-beta.32", - "@babel/plugin-proposal-export-namespace-from": "7.0.0-beta.47", - "@babel/plugin-proposal-function-bind": "7.0.0-beta.47", - "@babel/plugin-proposal-nullish-coalescing-operator": "7.0.0-beta.47", - "@babel/plugin-proposal-object-rest-spread": "7.0.0-beta.47", - "@babel/plugin-proposal-optional-catch-binding": "7.0.0-beta.47", - "@babel/plugin-proposal-optional-chaining": "7.0.0-beta.47", - "@babel/plugin-proposal-pipeline-operator": "7.0.0-beta.47", - "@babel/plugin-syntax-dynamic-import": "7.0.0-beta.47", - "@babel/plugin-transform-modules-commonjs": "7.0.0-beta.47", - "@babel/plugin-transform-react-constant-elements": "7.0.0-beta.47", - "@babel/plugin-transform-react-inline-elements": "7.0.0-beta.47", - "@babel/plugin-transform-runtime": "7.0.0-beta.47", - "@babel/preset-env": "7.0.0-beta.47", - "@babel/preset-react": "7.0.0-beta.47", - "babel-plugin-react-require": "3.0.0", - "babel-plugin-transform-react-remove-prop-types": "0.4.13" - } - }, - "babel-register": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", - "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", - "dev": true, - "requires": { - "babel-core": "6.26.3", - "babel-runtime": "6.26.0", - "core-js": "2.5.1", - "home-or-tmp": "2.0.0", - "lodash": "4.17.4", - "mkdirp": "0.5.1", - "source-map-support": "0.4.18" - }, - "dependencies": { - "babel-core": { - "version": "6.26.3", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", - "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", - "dev": true, - "requires": { - "babel-code-frame": "6.26.0", - "babel-generator": "6.26.1", - "babel-helpers": "6.24.1", - "babel-messages": "6.23.0", - "babel-register": "6.26.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "convert-source-map": "1.5.1", - "debug": "2.6.9", - "json5": "0.5.1", - "lodash": "4.17.4", - "minimatch": "3.0.4", - "path-is-absolute": "1.0.1", - "private": "0.1.8", - "slash": "1.0.0", - "source-map": "0.5.7" - } - }, - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - }, - "home-or-tmp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", - "dev": true, - "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" - } - } - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "requires": { - "core-js": "2.5.1", - "regenerator-runtime": "0.11.1" - } - }, - "babel-template": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "lodash": "4.17.4" - }, - "dependencies": { - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - } - } - }, - "babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", - "dev": true, - "requires": { - "babel-code-frame": "6.26.0", - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "debug": "2.6.9", - "globals": "9.18.0", - "invariant": "2.2.2", - "lodash": "4.17.4" - }, - "dependencies": { - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - }, - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true - } - } - }, - "babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "esutils": "2.0.2", - "lodash": "4.17.4", - "to-fast-properties": "1.0.3" - }, - "dependencies": { - "to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", - "dev": true - } - } - }, - "babylon": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.47.tgz", - "integrity": "sha512-+rq2cr4GDhtToEzKFD6KZZMDBXhjFAr9JjPw9pAppZACeEWqNM294j+NdBzkSHYXwzzBmVjZ3nEVJlOhbR2gOQ==", - "dev": true - }, - "bail": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.2.tgz", - "integrity": "sha1-99bBcxYwqfnw1NNe0fli4gdKF2Q=", - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "1.0.1", - "class-utils": "0.3.6", - "component-emitter": "1.2.1", - "define-property": "1.0.0", - "isobject": "3.0.1", - "mixin-deep": "1.3.1", - "pascalcase": "0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "1.0.2" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } - } - }, - "base64-js": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", - "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", - "dev": true - }, - "base64url": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64url/-/base64url-2.0.0.tgz", - "integrity": "sha1-6sFuA+oUOO/5Qj1puqNiYu0fcLs=", - "dev": true - }, - "batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", - "dev": true - }, - "batch-processor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/batch-processor/-/batch-processor-1.0.0.tgz", - "integrity": "sha1-dclcMrdI4IUNEMKxaPa9vpiRrOg=" - }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", - "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", - "dev": true, - "optional": true, - "requires": { - "tweetnacl": "0.14.5" - } - }, - "bfj-node4": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/bfj-node4/-/bfj-node4-5.3.1.tgz", - "integrity": "sha512-SOmOsowQWfXc7ybFARsK3C4MCOWzERaOMV/Fl3Tgjs+5dJWyzo3oa127jL44eMbQiAN17J7SvAs2TRxEScTUmg==", - "dev": true, - "requires": { - "bluebird": "3.5.1", - "check-types": "7.3.0", - "tryer": "1.0.0" - } - }, - "big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", - "dev": true - }, - "binary-extensions": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", - "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", - "dev": true - }, - "bizcharts": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/bizcharts/-/bizcharts-3.1.7.tgz", - "integrity": "sha1-3+4fXAOvgiKJB8mhK4JMmGhdxts=", - "requires": { - "@antv/g2": "3.0.9", - "invariant": "2.2.2", - "prop-types": "15.6.0", - "warning": "3.0.0" - } - }, - "bizcharts-plugin-slider": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/bizcharts-plugin-slider/-/bizcharts-plugin-slider-2.0.3.tgz", - "integrity": "sha1-6lYO0i9Lzf21v1d65qTjoqRYNdc=", - "requires": { - "@antv/g2-plugin-slider": "2.0.1" - } - }, - "bluebird": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", - "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", - "dev": true - }, - "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", - "dev": true - }, - "body-parser": { - "version": "1.18.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz", - "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=", - "dev": true, - "requires": { - "bytes": "3.0.0", - "content-type": "1.0.4", - "debug": "2.6.9", - "depd": "1.1.2", - "http-errors": "1.6.3", - "iconv-lite": "0.4.23", - "on-finished": "2.3.0", - "qs": "6.5.2", - "raw-body": "2.3.3", - "type-is": "1.6.16" - }, - "dependencies": { - "iconv-lite": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", - "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", - "dev": true, - "requires": { - "safer-buffer": "2.1.2" - } - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true - }, - "raw-body": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz", - "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==", - "dev": true, - "requires": { - "bytes": "3.0.0", - "http-errors": "1.6.3", - "iconv-lite": "0.4.23", - "unpipe": "1.0.0" - } - } - } - }, - "bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", - "dev": true, - "requires": { - "array-flatten": "2.1.1", - "deep-equal": "1.0.1", - "dns-equal": "1.0.0", - "dns-txt": "2.0.2", - "multicast-dns": "6.2.3", - "multicast-dns-service-types": "1.1.0" - }, - "dependencies": { - "array-flatten": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.1.tgz", - "integrity": "sha1-Qmu52oQJDBg42BLIFQryCoMx4pY=", - "dev": true - } - } - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", - "dev": true - }, - "boom": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", - "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", - "dev": true, - "requires": { - "hoek": "2.16.3" - } - }, - "boxen": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", - "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", - "dev": true, - "requires": { - "ansi-align": "2.0.0", - "camelcase": "4.1.0", - "chalk": "2.4.1", - "cli-boxes": "1.0.0", - "string-width": "2.1.1", - "term-size": "1.2.0", - "widest-line": "2.0.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" - } - } - } - }, - "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true - }, - "browser-process-hrtime": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz", - "integrity": "sha1-Ql1opY00R/AqBKqJQYf86K+Le44=", - "dev": true - }, - "browser-resolve": { - "version": "1.11.2", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz", - "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=", - "dev": true, - "requires": { - "resolve": "1.1.7" - }, - "dependencies": { - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", - "dev": true - } - } - }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "requires": { - "buffer-xor": "1.0.3", - "cipher-base": "1.0.4", - "create-hash": "1.2.0", - "evp_bytestokey": "1.0.3", - "inherits": "2.0.3", - "safe-buffer": "5.1.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "requires": { - "browserify-aes": "1.2.0", - "browserify-des": "1.0.1", - "evp_bytestokey": "1.0.3" - } - }, - "browserify-des": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.1.tgz", - "integrity": "sha512-zy0Cobe3hhgpiOM32Tj7KQ3Vl91m0njwsjzZQK1L+JDf11dzP9qIvjreVinsvXrgfjhStXwUWAEpB9D7Gwmayw==", - "dev": true, - "requires": { - "cipher-base": "1.0.4", - "des.js": "1.0.0", - "inherits": "2.0.3" - } - }, - "browserify-rsa": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "randombytes": "2.0.6" - } - }, - "browserify-sign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "browserify-rsa": "4.0.1", - "create-hash": "1.2.0", - "create-hmac": "1.1.7", - "elliptic": "6.4.0", - "inherits": "2.0.3", - "parse-asn1": "5.1.1" - } - }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dev": true, - "requires": { - "pako": "1.0.6" - } - }, - "browserslist": { - "version": "2.11.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.11.3.tgz", - "integrity": "sha512-yWu5cXT7Av6mVwzWc8lMsJMHWn4xyjSuGYi4IozbVTLUOEYPSagUB8kiMDUHA1fS3zjr8nkxkn9jdvug4BBRmA==", - "dev": true, - "requires": { - "caniuse-lite": "1.0.30000840", - "electron-to-chromium": "1.3.45" - } - }, - "bser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.0.0.tgz", - "integrity": "sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=", - "dev": true, - "requires": { - "node-int64": "0.4.0" - } - }, - "buffer": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", - "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", - "dev": true, - "requires": { - "base64-js": "1.3.0", - "ieee754": "1.1.11", - "isarray": "1.0.0" - } - }, - "buffer-from": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz", - "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==", - "dev": true - }, - "buffer-indexof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", - "dev": true - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true - }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", - "dev": true - }, - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", - "dev": true - }, - "cacache": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", - "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", - "dev": true, - "requires": { - "bluebird": "3.5.1", - "chownr": "1.0.1", - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "lru-cache": "4.1.3", - "mississippi": "2.0.0", - "mkdirp": "0.5.1", - "move-concurrently": "1.0.1", - "promise-inflight": "1.0.1", - "rimraf": "2.6.2", - "ssri": "5.3.0", - "unique-filename": "1.1.0", - "y18n": "4.0.0" - } - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "1.0.0", - "component-emitter": "1.2.1", - "get-value": "2.0.6", - "has-value": "1.0.0", - "isobject": "3.0.1", - "set-value": "2.0.0", - "to-object-path": "0.3.0", - "union-value": "1.0.0", - "unset-value": "1.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } - } - }, - "call-me-maybe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", - "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", - "dev": true - }, - "caller-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", - "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", - "dev": true, - "requires": { - "callsites": "0.2.0" - } - }, - "callsites": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", - "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", - "dev": true - }, - "camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", - "dev": true, - "requires": { - "no-case": "2.3.2", - "upper-case": "1.1.3" - } - }, - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "dev": true - }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "dev": true, - "requires": { - "camelcase": "2.1.1", - "map-obj": "1.0.1" - } - }, - "caniuse-api": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", - "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=", - "dev": true, - "requires": { - "browserslist": "1.7.7", - "caniuse-db": "1.0.30000840", - "lodash.memoize": "4.1.2", - "lodash.uniq": "4.5.0" - }, - "dependencies": { - "browserslist": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", - "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", - "dev": true, - "requires": { - "caniuse-db": "1.0.30000840", - "electron-to-chromium": "1.3.45" - } - } - } - }, - "caniuse-db": { - "version": "1.0.30000840", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000840.tgz", - "integrity": "sha1-aNWg8GlMkhgLDYLnINcPjmE2ZgQ=", - "dev": true - }, - "caniuse-lite": { - "version": "1.0.30000840", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000840.tgz", - "integrity": "sha512-Lw6AaouV6lh7TgIdQtLiUFKKO2mtDnZFkzCq5/V6tqs4ZI0OGVSDCEt1uegZ3OOBEBUYuVw3Hhr9DQSbgVofFA==", - "dev": true - }, - "capture-exit": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-1.2.0.tgz", - "integrity": "sha1-HF/MSJ/QqwDU8ax64QcuMXP7q28=", - "dev": true, - "requires": { - "rsvp": "3.6.2" - } - }, - "capture-stack-trace": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", - "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=", - "dev": true - }, - "case-sensitive-paths-webpack-plugin": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.1.2.tgz", - "integrity": "sha512-oEZgAFfEvKtjSRCu6VgYkuGxwrWXMnQzyBmlLPP7r6PWQVtHxP5Z5N6XsuJvtoVax78am/r7lr46bwo3IVEBOg==", - "dev": true - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true - }, - "ccount": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.0.3.tgz", - "integrity": "sha512-Jt9tIBkRc9POUof7QA/VwWd+58fKkEEfI+/t1/eOlxKM7ZhrczNzMFefge7Ai+39y1pR/pP6cI19guHy3FSLmw==", - "dev": true - }, - "center-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "requires": { - "align-text": "0.1.4", - "lazy-cache": "1.0.4" - } - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "character-entities": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.1.tgz", - "integrity": "sha1-92hxvl72bdt/j440eOzDdMJ9bco=", - "dev": true - }, - "character-entities-html4": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.2.tgz", - "integrity": "sha512-sIrXwyna2+5b0eB9W149izTPJk/KkJTg6mEzDGibwBUkyH1SbDa+nf515Ppdi3MaH35lW0JFJDWeq9Luzes1Iw==", - "dev": true - }, - "character-entities-legacy": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.1.tgz", - "integrity": "sha1-9Ad53xoQGHK7UQo9KV4fzPFHIC8=", - "dev": true - }, - "character-reference-invalid": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.1.tgz", - "integrity": "sha1-lCg191Dk7GGjCOYMLvjMEBEgLvw=", - "dev": true - }, - "chardet": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", - "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", - "dev": true - }, - "check-types": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/check-types/-/check-types-7.3.0.tgz", - "integrity": "sha1-Ro9XGkQ1wkJI9f0MsOjYfDw0Hn0=", - "dev": true - }, - "cheerio": { - "version": "1.0.0-rc.2", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.2.tgz", - "integrity": "sha1-S59TqBsn5NXawxwP/Qz6A8xoMNs=", - "dev": true, - "requires": { - "css-select": "1.2.0", - "dom-serializer": "0.1.0", - "entities": "1.1.1", - "htmlparser2": "3.9.2", - "lodash": "4.17.4", - "parse5": "3.0.3" - } - }, - "chokidar": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", - "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", - "dev": true, - "requires": { - "anymatch": "1.3.2", - "async-each": "1.0.1", - "fsevents": "1.2.4", - "glob-parent": "2.0.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "2.0.1", - "path-is-absolute": "1.0.1", - "readdirp": "2.1.0" - } - }, - "chownr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", - "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", - "dev": true - }, - "ci-info": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.1.tgz", - "integrity": "sha512-vHDDF/bP9RYpTWtUhpJRhCFdvvp3iDWvEbuDbWgvjUrNGV1MXJrE0MPcwGtEled04m61iwdBLUIHZtDgzWS4ZQ==", - "dev": true - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.1.1" - } - }, - "circular-json": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", - "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", - "dev": true - }, - "clap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", - "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", - "dev": true, - "requires": { - "chalk": "1.1.3" - } - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "requires": { - "arr-union": "3.1.0", - "define-property": "0.2.5", - "isobject": "3.0.1", - "static-extend": "0.1.2" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "0.1.6" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } - } - }, - "classnames": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.5.tgz", - "integrity": "sha1-+zgB1FNGdknvNgPH1hoCvRKb3m0=" - }, - "clean-css": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.11.tgz", - "integrity": "sha1-Ls3xRaujj1R0DybO/Q/z4D4SXWo=", - "dev": true, - "requires": { - "source-map": "0.5.7" - } - }, - "cli-boxes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", - "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", - "dev": true - }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, - "requires": { - "restore-cursor": "2.0.0" - } - }, - "cli-spinners": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-0.1.2.tgz", - "integrity": "sha1-u3ZNiOGF+54eaiofGXcjGPYF4xw=", - "dev": true - }, - "cli-truncate": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", - "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=", - "dev": true, - "requires": { - "slice-ansi": "0.0.4", - "string-width": "1.0.2" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "slice-ansi": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", - "dev": true - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - } - } - }, - "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", - "dev": true - }, - "cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", - "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", - "wordwrap": "0.0.2" - }, - "dependencies": { - "wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" - } - } - }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "dev": true - }, - "clone-regexp": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-1.0.1.tgz", - "integrity": "sha512-Fcij9IwRW27XedRIJnSOEupS7RVcXtObJXbcUOX93UCLqqOdRpkvzKywOOSizmEK/Is3S/RHX9dLdfo6R1Q1mw==", - "dev": true, - "requires": { - "is-regexp": "1.0.0", - "is-supported-regexp-flag": "1.0.1" - } - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, - "coa": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz", - "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=", - "dev": true, - "requires": { - "q": "1.5.1" - } - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, - "collapse-white-space": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.3.tgz", - "integrity": "sha1-S5BvZw5aljqHt2sOFolkM0G2Ajw=", - "dev": true - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "requires": { - "map-visit": "1.0.0", - "object-visit": "1.0.1" - } - }, - "color": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", - "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", - "dev": true, - "requires": { - "clone": "1.0.4", - "color-convert": "1.9.1", - "color-string": "0.3.0" - } - }, - "color-convert": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", - "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "color-string": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", - "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "colormin": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz", - "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=", - "dev": true, - "requires": { - "color": "0.11.4", - "css-color-names": "0.0.4", - "has": "1.0.1" - } - }, - "colors": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/colors/-/colors-0.5.1.tgz", - "integrity": "sha1-fQAj6usVTo7p/Oddy5I9DtFmd3Q=", - "dev": true - }, - "combined-stream": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", - "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", - "dev": true, - "requires": { - "delayed-stream": "1.0.0" - } - }, - "commander": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/commander/-/commander-1.0.4.tgz", - "integrity": "sha1-Xt6xruI8T7VBprcNaSq+8ZZpotM=", - "dev": true, - "requires": { - "keypress": "0.1.0" - } - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "compare-versions": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.2.1.tgz", - "integrity": "sha512-2y2nHcopMG/NAyk6vWXlLs86XeM9sik4jmx1tKIgzMi9/RQ2eo758RGpxQO3ErihHmg0RlQITPqgz73y6s7quA==", - "dev": true - }, - "component-classes": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/component-classes/-/component-classes-1.2.6.tgz", - "integrity": "sha1-xkI5TDYYpNiwuJGe/Mu9kw5c1pE=", - "requires": { - "component-indexof": "0.0.3" - } - }, - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true - }, - "component-indexof": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/component-indexof/-/component-indexof-0.0.3.tgz", - "integrity": "sha1-EdCRMSI5648yyPJa6csAL/6NPCQ=" - }, - "compressible": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.13.tgz", - "integrity": "sha1-DRAgq5JLL9tNYnmHXH1tq6a6p6k=", - "dev": true, - "requires": { - "mime-db": "1.33.0" - } - }, - "compression": { - "version": "1.7.2", - "resolved": "http://registry.npmjs.org/compression/-/compression-1.7.2.tgz", - "integrity": "sha1-qv+81qr4VLROuygDU9WtFlH1mmk=", - "dev": true, - "requires": { - "accepts": "1.3.5", - "bytes": "3.0.0", - "compressible": "2.0.13", - "debug": "2.6.9", - "on-headers": "1.0.1", - "safe-buffer": "5.1.1", - "vary": "1.1.2" - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "requires": { - "buffer-from": "1.0.0", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "typedarray": "0.0.6" - } - }, - "configstore": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", - "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", - "dev": true, - "requires": { - "dot-prop": "4.2.0", - "graceful-fs": "4.1.11", - "make-dir": "1.3.0", - "unique-string": "1.0.0", - "write-file-atomic": "2.3.0", - "xdg-basedir": "3.0.0" - } - }, - "connect-history-api-fallback": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", - "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=", - "dev": true - }, - "console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "dev": true, - "requires": { - "date-now": "0.1.4" - } - }, - "console-polyfill": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/console-polyfill/-/console-polyfill-0.3.0.tgz", - "integrity": "sha512-w+JSDZS7XML43Xnwo2x5O5vxB0ID7T5BdqDtyqT6uiCAX2kZAgcWxNaGqT97tZfSHzfOcvrfsDAodKcJ3UvnXQ==" - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true - }, - "container-query-toolkit": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/container-query-toolkit/-/container-query-toolkit-0.1.1.tgz", - "integrity": "sha1-GX7IWC0RnNlgm/fPDtax3A+Nf4M=", - "requires": { - "element-resize-detector": "1.1.10", - "lodash": "4.17.4" - } - }, - "contains-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", - "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", - "dev": true - }, - "content-disposition": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", - "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", - "dev": true - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true - }, - "contour_plot": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/contour_plot/-/contour_plot-0.0.1.tgz", - "integrity": "sha1-R1hw8DK44zhBKqX8UHiA8L9JXHc=" - }, - "convert-source-map": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", - "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", - "dev": true - }, - "cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", - "dev": true - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", - "dev": true - }, - "copy-concurrently": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", - "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", - "dev": true, - "requires": { - "aproba": "1.2.0", - "fs-write-stream-atomic": "1.0.10", - "iferr": "0.1.5", - "mkdirp": "0.5.1", - "rimraf": "2.6.2", - "run-queue": "1.0.3" - } - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, - "copy-webpack-plugin": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.5.1.tgz", - "integrity": "sha512-OlTo6DYg0XfTKOF8eLf79wcHm4Ut10xU2cRBRPMW/NA5F9VMjZGTfRHWDIYC3s+1kObGYrBLshXWU1K0hILkNQ==", - "dev": true, - "requires": { - "cacache": "10.0.4", - "find-cache-dir": "1.0.0", - "globby": "7.1.1", - "is-glob": "4.0.0", - "loader-utils": "1.1.0", - "minimatch": "3.0.4", - "p-limit": "1.1.0", - "serialize-javascript": "1.5.0" - }, - "dependencies": { - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", - "dev": true, - "requires": { - "is-extglob": "2.1.1" - } - } - } - }, - "core-js": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", - "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "cosmiconfig": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-2.2.2.tgz", - "integrity": "sha512-GiNXLwAFPYHy25XmTPpafYvn3CLAkJ8FLsscq78MQd1Kh0OU6Yzhn4eV2MVF4G9WEQZoWEGltatdR+ntGPMl5A==", - "dev": true, - "requires": { - "is-directory": "0.3.1", - "js-yaml": "3.7.0", - "minimist": "1.2.0", - "object-assign": "4.1.1", - "os-homedir": "1.0.2", - "parse-json": "2.2.0", - "require-from-string": "1.2.1" - } - }, - "cpx": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/cpx/-/cpx-1.5.0.tgz", - "integrity": "sha1-GFvgGFEdhycN7czCkxceN2VauI8=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "chokidar": "1.7.0", - "duplexer": "0.1.1", - "glob": "7.1.2", - "glob2base": "0.0.12", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "resolve": "1.5.0", - "safe-buffer": "5.1.1", - "shell-quote": "1.6.1", - "subarg": "1.0.0" - } - }, - "create-ecdh": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", - "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "elliptic": "6.4.0" - } - }, - "create-error-class": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", - "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", - "dev": true, - "requires": { - "capture-stack-trace": "1.0.0" - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "requires": { - "cipher-base": "1.0.4", - "inherits": "2.0.3", - "md5.js": "1.3.4", - "ripemd160": "2.0.2", - "sha.js": "2.4.11" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "requires": { - "cipher-base": "1.0.4", - "create-hash": "1.2.0", - "inherits": "2.0.3", - "ripemd160": "2.0.2", - "safe-buffer": "5.1.1", - "sha.js": "2.4.11" - } - }, - "create-react-class": { - "version": "15.6.2", - "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.6.2.tgz", - "integrity": "sha1-zx7RXxKq1/FO9fLf4F5sQvke8Co=", - "requires": { - "fbjs": "0.8.16", - "loose-envify": "1.3.1", - "object-assign": "4.1.1" - } - }, - "cross-env": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.1.5.tgz", - "integrity": "sha512-GSiNTbvTU3pXzewRKGP0Y+rVP2CzifY2pqSEdtHzLLj41pRdkrgY7e4uSnBoR/pmYaqZr/lwwjg/Q4kNX30hWQ==", - "dev": true, - "requires": { - "cross-spawn": "5.1.0", - "is-windows": "1.0.2" - } - }, - "cross-port-killer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cross-port-killer/-/cross-port-killer-1.0.1.tgz", - "integrity": "sha1-lL4077U1SpyNnc56k3PsLv7vskE=", - "dev": true - }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "requires": { - "lru-cache": "4.1.3", - "shebang-command": "1.2.0", - "which": "1.3.0" - } - }, - "cryptiles": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", - "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", - "dev": true, - "optional": true, - "requires": { - "boom": "2.10.1" - } - }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "requires": { - "browserify-cipher": "1.0.1", - "browserify-sign": "4.0.4", - "create-ecdh": "4.0.3", - "create-hash": "1.2.0", - "create-hmac": "1.1.7", - "diffie-hellman": "5.0.3", - "inherits": "2.0.3", - "pbkdf2": "3.0.16", - "public-encrypt": "4.0.2", - "randombytes": "2.0.6", - "randomfill": "1.0.4" - } - }, - "crypto-random-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", - "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", - "dev": true - }, - "css-animation": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/css-animation/-/css-animation-1.4.1.tgz", - "integrity": "sha1-W4gTEl3g+7uwu+G0cq6EIhRpt6g=", - "requires": { - "babel-runtime": "6.26.0", - "component-classes": "1.2.6" - } - }, - "css-color-names": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", - "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", - "dev": true - }, - "css-loader": { - "version": "0.28.11", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.11.tgz", - "integrity": "sha512-wovHgjAx8ZIMGSL8pTys7edA1ClmzxHeY6n/d97gg5odgsxEgKjULPR0viqyC+FWMCL9sfqoC/QCUBo62tLvPg==", - "dev": true, - "requires": { - "babel-code-frame": "6.26.0", - "css-selector-tokenizer": "0.7.0", - "cssnano": "3.10.0", - "icss-utils": "2.1.0", - "loader-utils": "1.1.0", - "lodash.camelcase": "4.3.0", - "object-assign": "4.1.1", - "postcss": "5.2.18", - "postcss-modules-extract-imports": "1.2.0", - "postcss-modules-local-by-default": "1.2.0", - "postcss-modules-scope": "1.1.0", - "postcss-modules-values": "1.3.0", - "postcss-value-parser": "3.3.0", - "source-list-map": "2.0.0" - }, - "dependencies": { - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "css-select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", - "dev": true, - "requires": { - "boolbase": "1.0.0", - "css-what": "2.1.0", - "domutils": "1.5.1", - "nth-check": "1.0.1" - } - }, - "css-selector-tokenizer": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz", - "integrity": "sha1-5piEdK6MlTR3v15+/s/OzNnPTIY=", - "dev": true, - "requires": { - "cssesc": "0.1.0", - "fastparse": "1.1.1", - "regexpu-core": "1.0.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - }, - "regexpu-core": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", - "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", - "dev": true, - "requires": { - "regenerate": "1.4.0", - "regjsgen": "0.2.0", - "regjsparser": "0.1.5" - } - }, - "regjsgen": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", - "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", - "dev": true - }, - "regjsparser": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", - "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", - "dev": true, - "requires": { - "jsesc": "0.5.0" - } - } - } - }, - "css-what": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", - "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=", - "dev": true - }, - "cssesc": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", - "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", - "dev": true - }, - "cssnano": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", - "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=", - "dev": true, - "requires": { - "autoprefixer": "6.7.7", - "decamelize": "1.2.0", - "defined": "1.0.0", - "has": "1.0.1", - "object-assign": "4.1.1", - "postcss": "5.2.18", - "postcss-calc": "5.3.1", - "postcss-colormin": "2.2.2", - "postcss-convert-values": "2.6.1", - "postcss-discard-comments": "2.0.4", - "postcss-discard-duplicates": "2.1.0", - "postcss-discard-empty": "2.1.0", - "postcss-discard-overridden": "0.1.1", - "postcss-discard-unused": "2.2.3", - "postcss-filter-plugins": "2.0.2", - "postcss-merge-idents": "2.1.7", - "postcss-merge-longhand": "2.0.2", - "postcss-merge-rules": "2.1.2", - "postcss-minify-font-values": "1.0.5", - "postcss-minify-gradients": "1.0.5", - "postcss-minify-params": "1.2.2", - "postcss-minify-selectors": "2.1.1", - "postcss-normalize-charset": "1.1.1", - "postcss-normalize-url": "3.0.8", - "postcss-ordered-values": "2.2.3", - "postcss-reduce-idents": "2.4.0", - "postcss-reduce-initial": "1.0.1", - "postcss-reduce-transforms": "1.0.4", - "postcss-svgo": "2.1.6", - "postcss-unique-selectors": "2.0.2", - "postcss-value-parser": "3.3.0", - "postcss-zindex": "2.2.0" - }, - "dependencies": { - "autoprefixer": { - "version": "6.7.7", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", - "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", - "dev": true, - "requires": { - "browserslist": "1.7.7", - "caniuse-db": "1.0.30000840", - "normalize-range": "0.1.2", - "num2fraction": "1.2.2", - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" - } - }, - "browserslist": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", - "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", - "dev": true, - "requires": { - "caniuse-db": "1.0.30000840", - "electron-to-chromium": "1.3.45" - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "csso": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", - "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=", - "dev": true, - "requires": { - "clap": "1.2.3", - "source-map": "0.5.7" - } - }, - "cssom": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz", - "integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs=", - "dev": true - }, - "cssstyle": { - "version": "0.2.37", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", - "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", - "dev": true, - "requires": { - "cssom": "0.3.2" - } - }, - "csstype": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.5.1.tgz", - "integrity": "sha512-qfG5lXkiUKz3kAuABSlpRxL9QL/U8ViJiXC6hvk/7tEJaCj7a2ZOW2kVtSFGpETOfQR7MicXjf/q1bmO1iShiA==" - }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "dev": true, - "requires": { - "array-find-index": "1.0.2" - } - }, - "cyclist": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", - "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", - "dev": true - }, - "d": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", - "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", - "dev": true, - "requires": { - "es5-ext": "0.10.42" - } - }, - "d3-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.1.tgz", - "integrity": "sha512-CyINJQ0SOUHojDdFDH4JEM0552vCR1utGyLHegJHyYH0JyCpSeTPxi4OBqHMA2jJZq4NH782LtaJWBImqI/HBw==" - }, - "d3-collection": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/d3-collection/-/d3-collection-1.0.4.tgz", - "integrity": "sha1-NC39EoN8kJdPM/HMCnha6lcNzcI=" - }, - "d3-color": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.2.0.tgz", - "integrity": "sha512-dmL9Zr/v39aSSMnLOTd58in2RbregCg4UtGyUArvEKTTN6S3HKEy+ziBWVYo9PTzRyVW+pUBHUtRKz0HYX+SQg==" - }, - "d3-composite-projections": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/d3-composite-projections/-/d3-composite-projections-1.2.0.tgz", - "integrity": "sha1-+g5vFELxfQRkOEOjqIPH2U4MJ8A=", - "requires": { - "d3-geo": "1.2.4", - "d3-path": "1.0.5" - }, - "dependencies": { - "d3-geo": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-1.2.4.tgz", - "integrity": "sha1-0XnzuqduYj7x4Ng2k9twW3xZkAY=", - "requires": { - "d3-array": "1.2.1" - } - } - } - }, - "d3-dispatch": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.3.tgz", - "integrity": "sha1-RuFJHqqbWMNY/OW+TovtYm54cfg=" - }, - "d3-dsv": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-1.0.8.tgz", - "integrity": "sha512-IVCJpQ+YGe3qu6odkPQI0KPqfxkhbP/oM1XhhE/DFiYmcXKfCRub4KXyiuehV1d4drjWVXHUWx4gHqhdZb6n/A==", - "requires": { - "commander": "2.15.1", - "iconv-lite": "0.4.19", - "rw": "1.3.3" - }, - "dependencies": { - "commander": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==" - } - } - }, - "d3-ease": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.3.tgz", - "integrity": "sha1-aL+8NJM4o4DETYrMT7wzBKotjA4=" - }, - "d3-geo": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-1.6.4.tgz", - "integrity": "sha1-8g4eRhyxhF9ai+Vatvh2VCp+MZk=", - "requires": { - "d3-array": "1.2.1" - } - }, - "d3-geo-projection": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/d3-geo-projection/-/d3-geo-projection-2.1.2.tgz", - "integrity": "sha1-ffjh6dBG1jHGUJ9+UxNX1K3CSqM=", - "requires": { - "commander": "2.15.1", - "d3-array": "1.2.1", - "d3-geo": "1.6.4" - }, - "dependencies": { - "commander": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==" - } - } - }, - "d3-hexjson": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d3-hexjson/-/d3-hexjson-1.0.1.tgz", - "integrity": "sha512-TeH4T0PSbDazMm3gHgc4ulO0PfrZpz0Uk3y5tCGz+NgC7HnX7KBdem7uAN+j9x3ZshTh7raN3V/bFhaLB2C8DA==", - "requires": { - "d3-array": "1.2.1" - } - }, - "d3-hierarchy": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.1.6.tgz", - "integrity": "sha512-nn4bhBnwWnMSoZgkBXD7vRyZ0xVUsNMQRKytWYHhP1I4qHw+qzApCTgSQTZqMdf4XXZbTMqA59hFusga+THA/g==" - }, - "d3-interpolate": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.1.6.tgz", - "integrity": "sha512-mOnv5a+pZzkNIHtw/V6I+w9Lqm9L5bG3OTXPM5A+QO0yyVMQ4W1uZhR+VOJmazaOZXri2ppbiZ5BUNWT0pFM9A==", - "requires": { - "d3-color": "1.2.0" - } - }, - "d3-path": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.5.tgz", - "integrity": "sha1-JB6xhJvZ6egCHA0KeZ+KDo5EF2Q=" - }, - "d3-sankey": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.7.1.tgz", - "integrity": "sha1-0imDImj8aaf+yEgD6WwiVqYUxSE=", - "requires": { - "d3-array": "1.2.1", - "d3-collection": "1.0.4", - "d3-shape": "1.2.0" - } - }, - "d3-selection": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.3.0.tgz", - "integrity": "sha512-qgpUOg9tl5CirdqESUAu0t9MU/t3O9klYfGfyKsXEmhyxyzLpzpeh08gaxBUTQw1uXIOkr/30Ut2YRjSSxlmHA==" - }, - "d3-shape": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.2.0.tgz", - "integrity": "sha1-RdAVOPBkuv0F6j1tLLdI/YxB93c=", - "requires": { - "d3-path": "1.0.5" - } - }, - "d3-timer": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.7.tgz", - "integrity": "sha512-vMZXR88XujmG/L5oB96NNKH5lCWwiLM/S2HyyAQLcjWJCloK5shxta4CwOFYLZoY3AWX73v8Lgv4cCAdWtRmOA==" - }, - "d3-transition": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-1.1.1.tgz", - "integrity": "sha512-xeg8oggyQ+y5eb4J13iDgKIjUcEfIOZs2BqV/eEmXm2twx80wTzJ4tB4vaZ5BKfz7XsI/DFmQL5me6O27/5ykQ==", - "requires": { - "d3-color": "1.2.0", - "d3-dispatch": "1.0.3", - "d3-ease": "1.0.3", - "d3-interpolate": "1.1.6", - "d3-selection": "1.3.0", - "d3-timer": "1.0.7" - } - }, - "d3-voronoi": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/d3-voronoi/-/d3-voronoi-1.1.2.tgz", - "integrity": "sha1-Fodmfo8TotFYyAwUgMWinLDYlzw=" - }, - "dagre": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/dagre/-/dagre-0.8.2.tgz", - "integrity": "sha512-TEOOGZOkCOgCG7AoUIq64sJ3d21SMv8tyoqteLpX+UsUsS9Qw8iap4hhogXY4oB3r0bbZuAjO0atAilgCmsE0Q==", - "requires": { - "graphlib": "2.1.5", - "lodash": "4.17.4" - } - }, - "damerau-levenshtein": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.4.tgz", - "integrity": "sha1-AxkcQyy27qFou3fzpV/9zLiXhRQ=", - "dev": true - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } - } - }, - "data-urls": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.0.0.tgz", - "integrity": "sha512-ai40PPQR0Fn1lD2PPie79CibnlMN2AYiDhwFX/rZHVsxbs5kNJSjegqXIprhouGXlRdEnfybva7kqRGnB6mypA==", - "dev": true, - "requires": { - "abab": "1.0.4", - "whatwg-mimetype": "2.1.0", - "whatwg-url": "6.4.1" - } - }, - "date-fns": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.29.0.tgz", - "integrity": "sha512-lbTXWZ6M20cWH8N9S6afb0SBm6tMk+uUg6z3MqHPKE9atmsY3kJkTm8vKe93izJ2B2+q5MV990sM2CHgtAZaOw==", - "dev": true - }, - "date-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "decache": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/decache/-/decache-3.1.0.tgz", - "integrity": "sha1-T1A2+9ZYH8yXI3rDlUokS5U2wto=", - "optional": true, - "requires": { - "find": "0.2.9" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" - }, - "decamelize-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", - "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", - "dev": true, - "requires": { - "decamelize": "1.2.0", - "map-obj": "1.0.1" - } - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true - }, - "dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", - "dev": true - }, - "deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=" - }, - "deep-extend": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz", - "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==", - "dev": true - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "default-require-extensions": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", - "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", - "dev": true, - "requires": { - "strip-bom": "2.0.0" - } - }, - "define-properties": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", - "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", - "requires": { - "foreach": "2.0.5", - "object-keys": "1.0.11" - }, - "dependencies": { - "object-keys": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", - "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=" - } - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "1.0.2", - "isobject": "3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } - } - }, - "defined": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" - }, - "del": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", - "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", - "dev": true, - "requires": { - "globby": "5.0.0", - "is-path-cwd": "1.0.0", - "is-path-in-cwd": "1.0.1", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "rimraf": "2.6.2" - }, - "dependencies": { - "globby": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", - "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", - "dev": true, - "requires": { - "array-union": "1.0.2", - "arrify": "1.0.1", - "glob": "7.1.2", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - } - } - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true - }, - "deprecate": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/deprecate/-/deprecate-1.0.0.tgz", - "integrity": "sha1-ZhSQ7SQokWpsiIPYg05WRvTkpKg=", - "dev": true - }, - "des.js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "minimalistic-assert": "1.0.1" - } - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true - }, - "detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "dev": true, - "requires": { - "repeating": "2.0.1" - } - }, - "detect-newline": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", - "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", - "dev": true - }, - "detect-node": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.3.tgz", - "integrity": "sha1-ogM8CcyOFY03dI+951B4Mr1s4Sc=", - "dev": true - }, - "detect-port": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.2.2.tgz", - "integrity": "sha512-06H99JMCwgbYbA+codm97aBhFLAjABftetp+v+Z88Pvvlkawp2N+1bP/9J24+mihrvk9yBvUYTyIj3NixG1CsA==", - "dev": true, - "requires": { - "address": "1.0.3", - "debug": "2.6.9" - } - }, - "didyoumean": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.1.tgz", - "integrity": "sha1-6S7f2tplN9SE1zwBcv0eugxJdv8=", - "dev": true - }, - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true - }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "miller-rabin": "4.0.1", - "randombytes": "2.0.6" - } - }, - "dir-glob": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", - "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", - "dev": true, - "requires": { - "arrify": "1.0.1", - "path-type": "3.0.0" - } - }, - "discontinuous-range": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz", - "integrity": "sha1-44Mx8IRLukm5qctxx3FYWqsbxlo=", - "dev": true - }, - "dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", - "dev": true - }, - "dns-packet": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", - "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", - "dev": true, - "requires": { - "ip": "1.1.5", - "safe-buffer": "5.1.1" - } - }, - "dns-txt": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", - "dev": true, - "requires": { - "buffer-indexof": "1.1.1" - } - }, - "doctrine": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz", - "integrity": "sha1-xz2NKQnSIpHhoAejlYBNqLZl/mM=", - "dev": true, - "requires": { - "esutils": "2.0.2", - "isarray": "1.0.0" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - } - } - }, - "dom-align": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/dom-align/-/dom-align-1.6.7.tgz", - "integrity": "sha512-FrHttKVCqdHaDyVjygY+8kRhcNOJEdvAkc2ltppJUz71ekgpzIOuLgsOIKVqzdETI2EocmW2DzF+uP365qcR5Q==" - }, - "dom-closest": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/dom-closest/-/dom-closest-0.2.0.tgz", - "integrity": "sha1-69n5HRvyLo1vR3h2u80+yQIWwM8=", - "requires": { - "dom-matches": "2.0.0" - } - }, - "dom-converter": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.1.4.tgz", - "integrity": "sha1-pF71cnuJDJv/5tfIduexnLDhfzs=", - "dev": true, - "requires": { - "utila": "0.3.3" - }, - "dependencies": { - "utila": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", - "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=", - "dev": true - } - } - }, - "dom-matches": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-matches/-/dom-matches-2.0.0.tgz", - "integrity": "sha1-0nKLQWqHUzmA6wibhI0lPPI6dYw=" - }, - "dom-scroll-into-view": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/dom-scroll-into-view/-/dom-scroll-into-view-1.2.1.tgz", - "integrity": "sha1-6PNnMt0ImwIBqI14Fdw/iObWbH4=" - }, - "dom-serializer": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", - "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", - "dev": true, - "requires": { - "domelementtype": "1.1.3", - "entities": "1.1.1" - }, - "dependencies": { - "domelementtype": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", - "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", - "dev": true - } - } - }, - "dom-urls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/dom-urls/-/dom-urls-1.1.0.tgz", - "integrity": "sha1-AB3fgWKM0ecGElxxdvU8zsVdkY4=", - "dev": true, - "requires": { - "urijs": "1.19.1" - } - }, - "dom-walk": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz", - "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg=" - }, - "domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true - }, - "domelementtype": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", - "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=", - "dev": true - }, - "domexception": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", - "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", - "dev": true, - "requires": { - "webidl-conversions": "4.0.2" - } - }, - "domhandler": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.1.tgz", - "integrity": "sha1-iS5HAAqZvlW783dP/qBWHYh5wlk=", - "dev": true, - "requires": { - "domelementtype": "1.3.0" - } - }, - "domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", - "dev": true, - "requires": { - "dom-serializer": "0.1.0", - "domelementtype": "1.3.0" - } - }, - "dot-prop": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", - "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", - "dev": true, - "requires": { - "is-obj": "1.0.1" - } - }, - "draft-js": { - "version": "0.10.5", - "resolved": "https://registry.npmjs.org/draft-js/-/draft-js-0.10.5.tgz", - "integrity": "sha512-LE6jSCV9nkPhfVX2ggcRLA4FKs6zWq9ceuO/88BpXdNCS7mjRTgs0NsV6piUCJX9YxMsB9An33wnkMmU2sD2Zg==", - "requires": { - "fbjs": "0.8.16", - "immutable": "3.7.6", - "object-assign": "4.1.1" - } - }, - "duplexer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", - "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", - "dev": true - }, - "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", - "dev": true - }, - "duplexify": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz", - "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==", - "dev": true, - "requires": { - "end-of-stream": "1.4.1", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "stream-shift": "1.0.0" - } - }, - "dva": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/dva/-/dva-2.2.3.tgz", - "integrity": "sha512-y1sqO1aYBAeg3KcOfYrYk+uqZrifQ9nzxNs5iCZNdLNIJVFDI/NcJZys8AqTdJH5H+Z1HMrcBA9Ws3X202aCOw==", - "requires": { - "@babel/runtime": "7.0.0-beta.47", - "@types/isomorphic-fetch": "0.0.34", - "@types/react-router": "4.0.25", - "@types/react-router-redux": "5.0.14", - "dva-core": "1.2.1", - "global": "4.3.2", - "history": "4.7.2", - "invariant": "2.2.2", - "isomorphic-fetch": "2.2.1", - "react-redux": "5.0.7", - "react-router-dom": "4.2.2", - "react-router-redux": "5.0.0-alpha.9", - "redux": "3.7.2" - } - }, - "dva-core": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/dva-core/-/dva-core-1.2.1.tgz", - "integrity": "sha512-+M3LanaZOVC0NZqGBjUUE2y4TVFo4e+ElQVk8iFsUZyo3u3lVlcw1lIt6zbx7Ganal2s/q5B++hVZIN9ETMWWg==", - "requires": { - "@babel/runtime": "7.0.0-beta.47", - "flatten": "1.0.2", - "global": "4.3.2", - "invariant": "2.2.2", - "is-plain-object": "2.0.4", - "redux": "3.7.2", - "redux-saga": "0.16.0", - "warning": "3.0.0" - } - }, - "dva-loading": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/dva-loading/-/dva-loading-1.0.4.tgz", - "integrity": "sha512-uf3Sqe9Ro+46s9ZK54uXtb+8sRVM+gci35dgdU/1RNFGtpLMp78grqvYgbaEASOG4u1EkaeUYbXlg+1oHQACWA==", - "requires": { - "babel-runtime": "6.26.0" - } - }, - "ecc-jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", - "dev": true, - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "dev": true - }, - "ejs": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.6.1.tgz", - "integrity": "sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.3.45", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.45.tgz", - "integrity": "sha1-RYrBscXHYM6IEaFtK/vZfsMLr7g=", - "dev": true - }, - "elegant-spinner": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", - "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=", - "dev": true - }, - "element-resize-detector": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/element-resize-detector/-/element-resize-detector-1.1.10.tgz", - "integrity": "sha1-USyjjhons/ZYKoPqDf7Ruhq6tW0=", - "requires": { - "batch-processor": "1.0.0" - } - }, - "elliptic": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", - "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "brorand": "1.1.0", - "hash.js": "1.1.3", - "hmac-drbg": "1.0.1", - "inherits": "2.0.3", - "minimalistic-assert": "1.0.1", - "minimalistic-crypto-utils": "1.0.1" - } - }, - "emoji-regex": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.5.1.tgz", - "integrity": "sha512-PAHp6TxrCy7MGMFidro8uikr+zlJJKJ/Q6mm2ExZ7HwkyR9lSVFfE3kt36qcwa24BQL7y0G9axycGjK1A/0uNQ==", - "dev": true - }, - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", - "dev": true - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "dev": true - }, - "encoding": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", - "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", - "requires": { - "iconv-lite": "0.4.19" - } - }, - "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", - "dev": true, - "requires": { - "once": "1.4.0" - } - }, - "enhanced-resolve": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.3.0.tgz", - "integrity": "sha512-2qbxE7ek3YxPJ1ML6V+satHkzHpJQKWkRHmRx6mfAoW59yP8YH8BFplbegSP+u2hBd6B6KCOpvJQ3dZAP+hkpg==", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "memory-fs": "0.4.1", - "object-assign": "4.1.1", - "tapable": "0.2.8" - } - }, - "enquire-js": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/enquire-js/-/enquire-js-0.2.1.tgz", - "integrity": "sha512-4vbcWD0ncK6VQ5M5giOImQb2hFPrKDZH5U+uRX9S6e9vfC6Q5PX6A38PVS6RMnCdr/luDTtJjjLuJinH/+a+Lw==", - "requires": { - "enquire.js": "2.1.6" - } - }, - "enquire.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/enquire.js/-/enquire.js-2.1.6.tgz", - "integrity": "sha1-PoeAybi4NQhMP2DhZtvDwqPImBQ=" - }, - "entities": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", - "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", - "dev": true - }, - "enzyme": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/enzyme/-/enzyme-3.1.1.tgz", - "integrity": "sha512-+Lj90HE3c6Jgtpha3kYfB/mTdD1GNWqSh7q8AcA8d+/CRJojRT+3yABHqKpfRx71qeEACjuvXU3Eu5UP//p/mA==", - "dev": true, - "requires": { - "cheerio": "1.0.0-rc.2", - "function.prototype.name": "1.0.3", - "is-subset": "0.1.1", - "lodash": "4.17.4", - "object-is": "1.0.1", - "object.assign": "4.0.4", - "object.entries": "1.0.4", - "object.values": "1.0.4", - "raf": "3.4.0", - "rst-selector-parser": "2.2.3" - } - }, - "enzyme-adapter-react-16": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.1.1.tgz", - "integrity": "sha512-kC8pAtU2Jk3OJ0EG8Y2813dg9Ol0TXi7UNxHzHiWs30Jo/hj7alc//G1YpKUsPP1oKl9X+Lkx+WlGJpPYA+nvw==", - "dev": true, - "requires": { - "enzyme-adapter-utils": "1.3.0", - "lodash": "4.17.4", - "object.assign": "4.0.4", - "object.values": "1.0.4", - "prop-types": "15.6.0", - "react-reconciler": "0.7.0", - "react-test-renderer": "16.3.2" - } - }, - "enzyme-adapter-utils": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/enzyme-adapter-utils/-/enzyme-adapter-utils-1.3.0.tgz", - "integrity": "sha512-vVXSt6uDv230DIv+ebCG66T1Pm36Kv+m74L1TrF4kaE7e1V7Q/LcxO0QRkajk5cA6R3uu9wJf5h13wOTezTbjA==", - "dev": true, - "requires": { - "lodash": "4.17.4", - "object.assign": "4.0.4", - "prop-types": "15.6.0" - } - }, - "errno": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", - "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", - "dev": true, - "requires": { - "prr": "1.0.1" - } - }, - "error-ex": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", - "dev": true, - "requires": { - "is-arrayish": "0.2.1" - } - }, - "error-stack-parser": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-1.3.6.tgz", - "integrity": "sha1-4Oc7k+QXE40c18C3RrGkoUhUwpI=", - "dev": true, - "requires": { - "stackframe": "0.3.1" - } - }, - "es-abstract": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.9.0.tgz", - "integrity": "sha512-kk3IJoKo7A3pWJc0OV8yZ/VEX2oSUytfekrJiqoxBlKJMFAJVJVpGdHClCCTdv+Fn2zHfpDHHIelMFhZVfef3Q==", - "requires": { - "es-to-primitive": "1.1.1", - "function-bind": "1.1.1", - "has": "1.0.1", - "is-callable": "1.1.3", - "is-regex": "1.0.4" - } - }, - "es-to-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", - "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", - "requires": { - "is-callable": "1.1.3", - "is-date-object": "1.0.1", - "is-symbol": "1.0.1" - } - }, - "es5-ext": { - "version": "0.10.42", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.42.tgz", - "integrity": "sha512-AJxO1rmPe1bDEfSR6TJ/FgMFYuTBhR5R57KW58iCkYACMyFbrkqVyzXSurYoScDGvgyMpk7uRF/lPUPPTmsRSA==", - "dev": true, - "requires": { - "es6-iterator": "2.0.3", - "es6-symbol": "3.1.1", - "next-tick": "1.0.0" - } - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.42", - "es6-symbol": "3.1.1" - } - }, - "es6-map": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", - "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", - "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.42", - "es6-iterator": "2.0.3", - "es6-set": "0.1.5", - "es6-symbol": "3.1.1", - "event-emitter": "0.3.5" - } - }, - "es6-promise": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz", - "integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ==" - }, - "es6-promisify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", - "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", - "optional": true, - "requires": { - "es6-promise": "4.2.4" - } - }, - "es6-set": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", - "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", - "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.42", - "es6-iterator": "2.0.3", - "es6-symbol": "3.1.1", - "event-emitter": "0.3.5" - } - }, - "es6-symbol": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", - "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.42" - } - }, - "es6-weak-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", - "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", - "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.42", - "es6-iterator": "2.0.3", - "es6-symbol": "3.1.1" - } - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" - }, - "escodegen": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.1.tgz", - "integrity": "sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q==", - "dev": true, - "requires": { - "esprima": "3.1.3", - "estraverse": "4.2.0", - "esutils": "2.0.2", - "optionator": "0.8.2", - "source-map": "0.6.1" - }, - "dependencies": { - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true - } - } - }, - "escope": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", - "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", - "dev": true, - "requires": { - "es6-map": "0.1.5", - "es6-weak-map": "2.0.2", - "esrecurse": "4.2.1", - "estraverse": "4.2.0" - } - }, - "eslint": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz", - "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==", - "dev": true, - "requires": { - "ajv": "5.5.2", - "babel-code-frame": "6.26.0", - "chalk": "2.4.1", - "concat-stream": "1.6.2", - "cross-spawn": "5.1.0", - "debug": "3.1.0", - "doctrine": "2.1.0", - "eslint-scope": "3.7.1", - "eslint-visitor-keys": "1.0.0", - "espree": "3.5.4", - "esquery": "1.0.1", - "esutils": "2.0.2", - "file-entry-cache": "2.0.0", - "functional-red-black-tree": "1.0.1", - "glob": "7.1.2", - "globals": "11.5.0", - "ignore": "3.3.8", - "imurmurhash": "0.1.4", - "inquirer": "3.3.0", - "is-resolvable": "1.1.0", - "js-yaml": "3.11.0", - "json-stable-stringify-without-jsonify": "1.0.1", - "levn": "0.3.0", - "lodash": "4.17.4", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "natural-compare": "1.4.0", - "optionator": "0.8.2", - "path-is-inside": "1.0.2", - "pluralize": "7.0.0", - "progress": "2.0.0", - "regexpp": "1.1.0", - "require-uncached": "1.0.3", - "semver": "5.4.1", - "strip-ansi": "4.0.0", - "strip-json-comments": "2.0.1", - "table": "4.0.2", - "text-table": "0.2.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" - } - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "requires": { - "esutils": "2.0.2" - } - }, - "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", - "dev": true - }, - "js-yaml": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz", - "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==", - "dev": true, - "requires": { - "argparse": "1.0.10", - "esprima": "4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "3.0.0" - } - } - } - }, - "eslint-config-airbnb": { - "version": "16.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-16.1.0.tgz", - "integrity": "sha512-zLyOhVWhzB/jwbz7IPSbkUuj7X2ox4PHXTcZkEmDqTvd0baJmJyuxlFPDlZOE/Y5bC+HQRaEkT3FoHo9wIdRiw==", - "dev": true, - "requires": { - "eslint-config-airbnb-base": "12.1.0" - } - }, - "eslint-config-airbnb-base": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-12.1.0.tgz", - "integrity": "sha512-/vjm0Px5ZCpmJqnjIzcFb9TKZrKWz0gnuG/7Gfkt0Db1ELJR51xkZth+t14rYdqWgX836XbuxtArbIHlVhbLBA==", - "dev": true, - "requires": { - "eslint-restricted-globals": "0.1.1" - } - }, - "eslint-config-prettier": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-2.9.0.tgz", - "integrity": "sha512-ag8YEyBXsm3nmOv1Hz991VtNNDMRa+MNy8cY47Pl4bw6iuzqKbJajXdqUpiw13STdLLrznxgm1hj9NhxeOYq0A==", - "dev": true, - "requires": { - "get-stdin": "5.0.1" - }, - "dependencies": { - "get-stdin": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz", - "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=", - "dev": true - } - } - }, - "eslint-config-react-app": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-2.1.0.tgz", - "integrity": "sha512-8QZrKWuHVC57Fmu+SsKAVxnI9LycZl7NFQ4H9L+oeISuCXhYdXqsOOIVSjQFW6JF5MXZLFE+21Syhd7mF1IRZQ==", - "dev": true - }, - "eslint-config-umi": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/eslint-config-umi/-/eslint-config-umi-0.1.4.tgz", - "integrity": "sha512-Ul0soIdKWKd3CdeRxkm/87G8n0TnFqS/aBmJGkLuAg0KBhV1Fpc5hZe1K8w3FUyV3VGDrYV2qQkYGmb3W7EBpA==", - "dev": true, - "requires": { - "eslint-config-react-app": "2.1.0" - } - }, - "eslint-import-resolver-node": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.1.tgz", - "integrity": "sha512-yUtXS15gIcij68NmXmP9Ni77AQuCN0itXbCc/jWd8C6/yKZaSNXicpC8cgvjnxVdmfsosIXrjpzFq7GcDryb6A==", - "dev": true, - "requires": { - "debug": "2.6.9", - "resolve": "1.5.0" - } - }, - "eslint-loader": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-1.9.0.tgz", - "integrity": "sha512-40aN976qSNPyb9ejTqjEthZITpls1SVKtwguahmH1dzGCwQU/vySE+xX33VZmD8csU0ahVNCtFlsPgKqRBiqgg==", - "dev": true, - "requires": { - "loader-fs-cache": "1.0.1", - "loader-utils": "1.1.0", - "object-assign": "4.1.1", - "object-hash": "1.3.0", - "rimraf": "2.6.2" - } - }, - "eslint-module-utils": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.1.1.tgz", - "integrity": "sha512-jDI/X5l/6D1rRD/3T43q8Qgbls2nq5km5KSqiwlyUbGo5+04fXhMKdCPhjwbqAa6HXWaMxj8Q4hQDIh7IadJQw==", - "dev": true, - "requires": { - "debug": "2.6.9", - "pkg-dir": "1.0.0" - } - }, - "eslint-plugin-babel": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-babel/-/eslint-plugin-babel-4.1.2.tgz", - "integrity": "sha1-eSAqDjV1fdkngJGbIzbx+i/lPB4=", - "dev": true - }, - "eslint-plugin-compat": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-compat/-/eslint-plugin-compat-2.2.0.tgz", - "integrity": "sha512-nMH9Ibga+VZVLGtyxx8Dry69NN+a7YykNoUA9NtL3QNTeciV4QAAOtBLykKDR0Q37wwtKME+Inlce7JOhy5dbg==", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "browserslist": "2.11.3", - "caniuse-db": "1.0.30000840", - "mdn-browser-compat-data": "0.0.20", - "requireindex": "1.2.0" - } - }, - "eslint-plugin-flowtype": { - "version": "2.46.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.46.3.tgz", - "integrity": "sha512-VpnNeC4E6t2E2NCw8Oveda91p8CPEaujZURC1KhHe4lBRZJla3o0DVvZu1QGXQZO1ZJ4vUmy3TCp95PqGvIZgQ==", - "dev": true, - "requires": { - "lodash": "4.17.4" - } - }, - "eslint-plugin-import": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.8.0.tgz", - "integrity": "sha512-Rf7dfKJxZ16QuTgVv1OYNxkZcsu/hULFnC+e+w0Gzi6jMC3guQoWQgxYxc54IDRinlb6/0v5z/PxxIKmVctN+g==", - "dev": true, - "requires": { - "builtin-modules": "1.1.1", - "contains-path": "0.1.0", - "debug": "2.6.9", - "doctrine": "1.5.0", - "eslint-import-resolver-node": "0.3.1", - "eslint-module-utils": "2.1.1", - "has": "1.0.1", - "lodash.cond": "4.5.2", - "minimatch": "3.0.4", - "read-pkg-up": "2.0.0" - }, - "dependencies": { - "doctrine": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", - "dev": true, - "requires": { - "esutils": "2.0.2", - "isarray": "1.0.0" - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "2.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "strip-bom": "3.0.0" - } - }, - "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", - "dev": true, - "requires": { - "pify": "2.3.0" - } - }, - "read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", - "dev": true, - "requires": { - "load-json-file": "2.0.0", - "normalize-package-data": "2.4.0", - "path-type": "2.0.0" - } - }, - "read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", - "dev": true, - "requires": { - "find-up": "2.1.0", - "read-pkg": "2.0.0" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - } - } - }, - "eslint-plugin-jsx-a11y": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.0.3.tgz", - "integrity": "sha1-VFg9GuRCSDFi4EDhPMMYZUZRAOU=", - "dev": true, - "requires": { - "aria-query": "0.7.1", - "array-includes": "3.0.3", - "ast-types-flow": "0.0.7", - "axobject-query": "0.1.0", - "damerau-levenshtein": "1.0.4", - "emoji-regex": "6.5.1", - "jsx-ast-utils": "2.0.1" - }, - "dependencies": { - "jsx-ast-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz", - "integrity": "sha1-6AGxs5mF4g//yHtA43SAgOLcrH8=", - "dev": true, - "requires": { - "array-includes": "3.0.3" - } - } - } - }, - "eslint-plugin-markdown": { - "version": "1.0.0-beta.6", - "resolved": "https://registry.npmjs.org/eslint-plugin-markdown/-/eslint-plugin-markdown-1.0.0-beta.6.tgz", - "integrity": "sha1-2eYmZu6k52OH6F9QLfZoq9+9Q5U=", - "dev": true, - "requires": { - "object-assign": "4.1.1", - "remark-parse": "3.0.1", - "unified": "6.1.5" - } - }, - "eslint-plugin-react": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.4.0.tgz", - "integrity": "sha512-tvjU9u3VqmW2vVuYnE8Qptq+6ji4JltjOjJ9u7VAOxVYkUkyBZWRvNYKbDv5fN+L6wiA+4we9+qQahZ0m63XEA==", - "dev": true, - "requires": { - "doctrine": "2.0.0", - "has": "1.0.1", - "jsx-ast-utils": "2.0.1", - "prop-types": "15.6.0" - }, - "dependencies": { - "jsx-ast-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz", - "integrity": "sha1-6AGxs5mF4g//yHtA43SAgOLcrH8=", - "dev": true, - "requires": { - "array-includes": "3.0.3" - } - } - } - }, - "eslint-restricted-globals": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/eslint-restricted-globals/-/eslint-restricted-globals-0.1.1.tgz", - "integrity": "sha1-NfDVy8ZMLj7WLpO0saevBbp+1Nc=", - "dev": true - }, - "eslint-scope": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", - "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", - "dev": true, - "requires": { - "esrecurse": "4.2.1", - "estraverse": "4.2.0" - } - }, - "eslint-visitor-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", - "dev": true - }, - "espree": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", - "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", - "dev": true, - "requires": { - "acorn": "5.5.3", - "acorn-jsx": "3.0.1" - } - }, - "esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", - "dev": true - }, - "esquery": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", - "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", - "dev": true, - "requires": { - "estraverse": "4.2.0" - } - }, - "esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", - "dev": true, - "requires": { - "estraverse": "4.2.0" - } - }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", - "dev": true - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", - "dev": true - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "dev": true - }, - "event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", - "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.42" - } - }, - "eventemitter3": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz", - "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==", - "dev": true - }, - "eventlistener": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/eventlistener/-/eventlistener-0.0.1.tgz", - "integrity": "sha1-7Suqu4UiJ68rz4iRUscsY8pTLrg=" - }, - "events": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", - "dev": true - }, - "eventsource": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz", - "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=", - "dev": true, - "requires": { - "original": "1.0.1" - } - }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "requires": { - "md5.js": "1.3.4", - "safe-buffer": "5.1.1" - } - }, - "exec-sh": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.1.tgz", - "integrity": "sha512-aLt95pexaugVtQerpmE51+4QfWrNc304uez7jvj6fWnN8GeEHpttB8F36n8N7uVhUMbH/1enbxQ9HImZ4w/9qg==", - "dev": true, - "requires": { - "merge": "1.2.0" - } - }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true, - "requires": { - "cross-spawn": "5.1.0", - "get-stream": "3.0.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" - } - }, - "execall": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execall/-/execall-1.0.0.tgz", - "integrity": "sha1-c9CQTjlbPKsGWLCNCewlMH8pu3M=", - "dev": true, - "requires": { - "clone-regexp": "1.0.1" - } - }, - "exenv": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/exenv/-/exenv-1.2.2.tgz", - "integrity": "sha1-KueOhdmJQVhnCwPUe+wfA72Ru50=" - }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", - "dev": true - }, - "exit-hook": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", - "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", - "dev": true - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "0.1.1" - } - }, - "expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "dev": true, - "requires": { - "fill-range": "2.2.4" - } - }, - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", - "dev": true, - "requires": { - "homedir-polyfill": "1.0.1" - } - }, - "expect": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/expect/-/expect-22.4.3.tgz", - "integrity": "sha512-XcNXEPehqn8b/jm8FYotdX0YrXn36qp4HWlrVT4ktwQas1l1LPxiVWncYnnL2eyMtKAmVIaG0XAp0QlrqJaxaA==", - "dev": true, - "requires": { - "ansi-styles": "3.2.1", - "jest-diff": "22.4.3", - "jest-get-type": "22.4.3", - "jest-matcher-utils": "22.4.3", - "jest-message-util": "22.4.3", - "jest-regex-util": "22.4.3" - } - }, - "express": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/express/-/express-4.16.3.tgz", - "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=", - "dev": true, - "requires": { - "accepts": "1.3.5", - "array-flatten": "1.1.1", - "body-parser": "1.18.2", - "content-disposition": "0.5.2", - "content-type": "1.0.4", - "cookie": "0.3.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "1.1.2", - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "etag": "1.8.1", - "finalhandler": "1.1.1", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "1.1.2", - "on-finished": "2.3.0", - "parseurl": "1.3.2", - "path-to-regexp": "0.1.7", - "proxy-addr": "2.0.3", - "qs": "6.5.1", - "range-parser": "1.2.0", - "safe-buffer": "5.1.1", - "send": "0.16.2", - "serve-static": "1.13.2", - "setprototypeof": "1.1.0", - "statuses": "1.4.0", - "type-is": "1.6.16", - "utils-merge": "1.0.1", - "vary": "1.1.2" - }, - "dependencies": { - "body-parser": { - "version": "1.18.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", - "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", - "dev": true, - "requires": { - "bytes": "3.0.0", - "content-type": "1.0.4", - "debug": "2.6.9", - "depd": "1.1.2", - "http-errors": "1.6.3", - "iconv-lite": "0.4.19", - "on-finished": "2.3.0", - "qs": "6.5.1", - "raw-body": "2.3.2", - "type-is": "1.6.16" - } - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", - "dev": true - } - } - }, - "express-http-proxy": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/express-http-proxy/-/express-http-proxy-0.11.0.tgz", - "integrity": "sha1-8ua6Lp6Gd7G6M1N1w8rmcNWhuwo=", - "dev": true, - "requires": { - "es6-promise": "3.3.1", - "raw-body": "2.3.2" - }, - "dependencies": { - "es6-promise": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", - "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=", - "dev": true - } - } - }, - "extend": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", - "dev": true - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "1.0.0", - "is-extendable": "1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "2.0.4" - } - } - } - }, - "external-editor": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", - "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", - "dev": true, - "requires": { - "chardet": "0.4.2", - "iconv-lite": "0.4.19", - "tmp": "0.0.33" - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "1.0.0" - } - }, - "extract-text-webpack-plugin": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.2.tgz", - "integrity": "sha512-bt/LZ4m5Rqt/Crl2HiKuAl/oqg0psx1tsTLkvWbJen1CtD+fftkZhMaQ9HOtY2gWsl2Wq+sABmMVi9z3DhKWQQ==", - "dev": true, - "requires": { - "async": "2.6.0", - "loader-utils": "1.1.0", - "schema-utils": "0.3.0", - "webpack-sources": "1.1.0" - }, - "dependencies": { - "async": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", - "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", - "dev": true, - "requires": { - "lodash": "4.17.4" - } - } - } - }, - "extract-zip": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.6.tgz", - "integrity": "sha1-EpDt6NINCHK0Kf0/NRyhKOxe+Fw=", - "optional": true, - "requires": { - "concat-stream": "1.6.0", - "debug": "2.6.9", - "mkdirp": "0.5.0", - "yauzl": "2.4.1" - }, - "dependencies": { - "concat-stream": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", - "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", - "optional": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "typedarray": "0.0.6" - } - }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "optional": true - }, - "mkdirp": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", - "integrity": "sha1-HXMHam35hs2TROFecfzAWkyavxI=", - "optional": true, - "requires": { - "minimist": "0.0.8" - } - } - } - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true - }, - "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", - "dev": true - }, - "fast-glob": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.1.tgz", - "integrity": "sha512-wSyW1TBK3ia5V+te0rGPXudeMHoUQW6O5Y9oATiaGhpENmEifPDlOdhpsnlj5HoG6ttIvGiY1DdCmI9X2xGMhg==", - "dev": true, - "requires": { - "@mrmlnc/readdir-enhanced": "2.2.1", - "glob-parent": "3.1.0", - "is-glob": "4.0.0", - "merge2": "1.2.2", - "micromatch": "3.1.10" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "1.1.0", - "array-unique": "0.3.2", - "extend-shallow": "2.0.1", - "fill-range": "4.0.0", - "isobject": "3.0.1", - "repeat-element": "1.1.2", - "snapdragon": "0.8.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "0.1.6" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "0.3.2", - "define-property": "1.0.0", - "expand-brackets": "2.1.4", - "extend-shallow": "2.0.1", - "fragment-cache": "0.2.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "1.0.2" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "3.1.0", - "path-dirname": "1.0.2" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "2.1.1" - } - } - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", - "dev": true, - "requires": { - "is-extglob": "2.1.1" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "extglob": "2.0.4", - "fragment-cache": "0.2.1", - "kind-of": "6.0.2", - "nanomatch": "1.2.9", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - } - } - } - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "fastparse": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz", - "integrity": "sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg=", - "dev": true - }, - "faye-websocket": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", - "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", - "dev": true, - "requires": { - "websocket-driver": "0.7.0" - } - }, - "fb-watchman": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz", - "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", - "dev": true, - "requires": { - "bser": "2.0.0" - } - }, - "fbjs": { - "version": "0.8.16", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.16.tgz", - "integrity": "sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s=", - "requires": { - "core-js": "1.2.7", - "isomorphic-fetch": "2.2.1", - "loose-envify": "1.3.1", - "object-assign": "4.1.1", - "promise": "7.3.1", - "setimmediate": "1.0.5", - "ua-parser-js": "0.7.17" - }, - "dependencies": { - "core-js": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", - "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" - } - } - }, - "fd-slicer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", - "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", - "optional": true, - "requires": { - "pend": "1.2.0" - } - }, - "fecha": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fecha/-/fecha-2.3.3.tgz", - "integrity": "sha512-lUGBnIamTAwk4znq5BcqsDaxSmZ9nDVJaij6NvRt/Tg4R69gERA+otPKbS86ROw9nxVMw2/mp1fnaiWqbs6Sdg==" - }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true, - "requires": { - "escape-string-regexp": "1.0.5" - } - }, - "file-entry-cache": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", - "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", - "dev": true, - "requires": { - "flat-cache": "1.3.0", - "object-assign": "4.1.1" - } - }, - "file-loader": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-0.11.2.tgz", - "integrity": "sha512-N+uhF3mswIFeziHQjGScJ/yHXYt3DiLBeC+9vWW+WjUBiClMSOlV1YrXQi+7KM2aA3Rn4Bybgv+uXFQbfkzpvg==", - "dev": true, - "requires": { - "loader-utils": "1.1.0" - } - }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", - "dev": true - }, - "fileset": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", - "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", - "dev": true, - "requires": { - "glob": "7.1.2", - "minimatch": "3.0.4" - } - }, - "filesize": { - "version": "3.5.11", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.5.11.tgz", - "integrity": "sha512-ZH7loueKBoDb7yG9esn1U+fgq7BzlzW6NRi5/rMdxIZ05dj7GFD/Xc5rq2CDt5Yq86CyfSYVyx4242QQNZbx1g==", - "dev": true - }, - "fill-range": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", - "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", - "dev": true, - "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "3.0.0", - "repeat-element": "1.1.2", - "repeat-string": "1.6.1" - } - }, - "finalhandler": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", - "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "on-finished": "2.3.0", - "parseurl": "1.3.2", - "statuses": "1.4.0", - "unpipe": "1.0.0" - } - }, - "find": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/find/-/find-0.2.9.tgz", - "integrity": "sha1-S3Px/55WrZG3bnFkB/5f/mVUu4w=", - "optional": true, - "requires": { - "traverse-chain": "0.1.0" - } - }, - "find-babel-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/find-babel-config/-/find-babel-config-1.1.0.tgz", - "integrity": "sha1-rMAQQ6Z0n+w0Qpvmtk9ULrtdY1U=", - "dev": true, - "requires": { - "json5": "0.5.1", - "path-exists": "3.0.0" - }, - "dependencies": { - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - } - } - }, - "find-cache-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", - "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", - "dev": true, - "requires": { - "commondir": "1.0.1", - "make-dir": "1.3.0", - "pkg-dir": "2.0.0" - }, - "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "2.0.0" - } - }, - "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "dev": true, - "requires": { - "find-up": "2.1.0" - } - } - } - }, - "find-index": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz", - "integrity": "sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ=", - "dev": true - }, - "find-parent-dir": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.0.tgz", - "integrity": "sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ=", - "dev": true - }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" - } - }, - "flat-cache": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", - "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", - "dev": true, - "requires": { - "circular-json": "0.3.3", - "del": "2.2.2", - "graceful-fs": "4.1.11", - "write": "0.2.1" - } - }, - "flatten": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", - "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=" - }, - "flush-write-stream": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", - "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", - "dev": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" - } - }, - "fmin": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/fmin/-/fmin-0.0.2.tgz", - "integrity": "sha1-Wbu0DUP/3ByUzQClaMQflfGXMBc=", - "requires": { - "contour_plot": "0.0.1", - "json2module": "0.0.3", - "rollup": "0.25.8", - "tape": "4.9.0", - "uglify-js": "2.8.29" - } - }, - "follow-redirects": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.2.5.tgz", - "integrity": "sha512-lMhwQTryFbG+wYsAIEKC1Kf5IGDlVNnONRogIBllh7LLoV7pNIxW0z9fhjRar9NBql+hd2Y49KboVVNxf6GEfg==", - "requires": { - "debug": "2.6.9" - } - }, - "for-each": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.2.tgz", - "integrity": "sha1-LEBFC5NI6X8oEyJZO6lnBLmr1NQ=", - "requires": { - "is-function": "1.0.1" - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true, - "requires": { - "for-in": "1.0.2" - } - }, - "foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true - }, - "fork-ts-checker-webpack-plugin": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-0.2.10.tgz", - "integrity": "sha1-0KQIDnfp9dbjtDzc59JmWPnSUMY=", - "dev": true, - "requires": { - "babel-code-frame": "6.26.0", - "chalk": "1.1.3", - "chokidar": "1.7.0", - "lodash.endswith": "4.2.1", - "lodash.isfunction": "3.0.9", - "lodash.isstring": "4.0.1", - "lodash.startswith": "4.2.1", - "minimatch": "3.0.4" - } - }, - "form-data": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", - "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", - "dev": true, - "optional": true, - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.6", - "mime-types": "2.1.18" - } - }, - "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", - "dev": true - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "requires": { - "map-cache": "0.2.2" - } - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "dev": true - }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" - } - }, - "fs-extra": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", - "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "jsonfile": "2.4.0", - "klaw": "1.3.1", - "path-is-absolute": "1.0.1", - "rimraf": "2.6.2" - } - }, - "fs-write-stream-atomic": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", - "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "iferr": "0.1.5", - "imurmurhash": "0.1.4", - "readable-stream": "2.3.6" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "fsevents": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", - "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", - "dev": true, - "optional": true, - "requires": { - "nan": "2.10.0", - "node-pre-gyp": "0.10.0" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "delegates": "1.0.0", - "readable-stream": "2.3.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "debug": { - "version": "2.6.9", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ms": "2.0.0" - } - }, - "deep-extend": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "2.2.4" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aproba": "1.2.0", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.1", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.2" - } - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.21", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safer-buffer": "2.1.2" - } - }, - "ignore-walk": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimatch": "3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "dev": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "1.1.11" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true - }, - "minipass": { - "version": "2.2.4", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "5.1.1", - "yallist": "3.0.2" - } - }, - "minizlib": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "2.2.4" - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "needle": { - "version": "2.2.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "debug": "2.6.9", - "iconv-lite": "0.4.21", - "sax": "1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.10.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "detect-libc": "1.0.3", - "mkdirp": "0.5.1", - "needle": "2.2.0", - "nopt": "4.0.1", - "npm-packlist": "1.1.10", - "npmlog": "4.1.2", - "rc": "1.2.7", - "rimraf": "2.6.2", - "semver": "5.5.0", - "tar": "4.4.1" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "abbrev": "1.1.1", - "osenv": "0.1.5" - } - }, - "npm-bundled": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "npm-packlist": { - "version": "1.1.10", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ignore-walk": "3.0.1", - "npm-bundled": "1.0.3" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "are-we-there-yet": "1.1.4", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "requires": { - "wrappy": "1.0.2" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.7", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "deep-extend": "0.5.1", - "ini": "1.3.5", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.1", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" - } - }, - "rimraf": { - "version": "2.6.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "glob": "7.1.2" - } - }, - "safe-buffer": { - "version": "5.1.1", - "bundled": true, - "dev": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "dev": true, - "optional": true - }, - "semver": { - "version": "5.5.0", - "bundled": true, - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "5.1.1" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "tar": { - "version": "4.4.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "chownr": "1.0.1", - "fs-minipass": "1.2.5", - "minipass": "2.2.4", - "minizlib": "1.1.0", - "mkdirp": "0.5.1", - "safe-buffer": "5.1.1", - "yallist": "3.0.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "wide-align": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "string-width": "1.0.2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "yallist": { - "version": "3.0.2", - "bundled": true, - "dev": true - } - } - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "function.prototype.name": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.0.3.tgz", - "integrity": "sha512-5EblxZUdioXi2JiMZ9FUbwYj40eQ9MFHyzFLBSPdlRl3SO8l7SLWuAnQ/at/1Wi4hjJwME/C5WpF2ZfAc8nGNw==", - "dev": true, - "requires": { - "define-properties": "1.1.2", - "function-bind": "1.1.1", - "is-callable": "1.1.3" - } - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "g-cloud": { - "version": "1.0.2-beta", - "resolved": "https://registry.npmjs.org/g-cloud/-/g-cloud-1.0.2-beta.tgz", - "integrity": "sha1-x15p8lJuDycC89e0PkYaHBtPKsg=" - }, - "g2": { - "version": "2.3.13", - "resolved": "https://registry.npmjs.org/g2/-/g2-2.3.13.tgz", - "integrity": "sha512-N4LzRWoheJ7IORe8+GedzecyYG/OAl+avRoBorxtkXaQEvsPgPyEUW3GZSj1lchVTM8KzH19JLaUN3klsoaLZQ==" - }, - "g2-plugin-slider": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/g2-plugin-slider/-/g2-plugin-slider-1.2.1.tgz", - "integrity": "sha1-xlvhXtiMeT0+NPwMlsoMVP1SEEY=" - }, - "get-caller-file": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", - "dev": true - }, - "get-own-enumerable-property-symbols": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-2.0.1.tgz", - "integrity": "sha512-TtY/sbOemiMKPRUDDanGCSgBYe7Mf0vbRsWnBZ+9yghpZ1MvcpSpuZFjHdEeY/LZjZy0vdLjS77L6HosisFiug==", - "dev": true - }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } - } - }, - "gh-pages": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gh-pages/-/gh-pages-1.0.0.tgz", - "integrity": "sha1-Skb0wlQ596K35oNVBNSknpSfBMo=", - "dev": true, - "requires": { - "async": "2.1.4", - "base64url": "2.0.0", - "commander": "2.9.0", - "fs-extra": "3.0.1", - "globby": "6.1.0", - "graceful-fs": "4.1.11", - "rimraf": "2.6.2" - }, - "dependencies": { - "commander": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", - "dev": true, - "requires": { - "graceful-readlink": "1.0.1" - } - }, - "fs-extra": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", - "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "jsonfile": "3.0.1", - "universalify": "0.1.1" - } - }, - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true, - "requires": { - "array-union": "1.0.2", - "glob": "7.1.2", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - } - }, - "jsonfile": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", - "integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11" - } - } - } - }, - "gl-matrix": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-2.5.1.tgz", - "integrity": "sha512-GCv0L5v+2Hdh+al6Ny7MO4B+BfXd6qfUom6CE5O/nqkBvaIY7+dVZhuKad+EkUK0uyot8V6TkgsMQrQzlmZl2A==", - "requires": { - "npm": "5.10.0" - }, - "dependencies": { - "npm": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/npm/-/npm-5.10.0.tgz", - "integrity": "sha512-lvjvjgR5wG2RJ2uqak1xtZcVAWMwVOzN5HkUlUj/n8rU1f3A0fNn+7HwOzH9Lyf0Ppyu9ApgsEpHczOSnx1cwA==", - "requires": { - "JSONStream": "1.3.2", - "abbrev": "1.1.1", - "ansi-regex": "3.0.0", - "ansicolors": "0.3.2", - "ansistyles": "0.1.3", - "aproba": "1.2.0", - "archy": "1.0.0", - "bin-links": "1.1.0", - "bluebird": "3.5.1", - "byte-size": "4.0.2", - "cacache": "10.0.4", - "call-limit": "1.1.0", - "chownr": "1.0.1", - "cli-columns": "3.1.2", - "cli-table2": "0.2.0", - "cmd-shim": "2.0.2", - "columnify": "1.5.4", - "config-chain": "1.1.11", - "debuglog": "1.0.1", - "detect-indent": "5.0.0", - "detect-newline": "2.1.0", - "dezalgo": "1.0.3", - "editor": "1.0.0", - "find-npm-prefix": "1.0.2", - "fs-vacuum": "1.2.10", - "fs-write-stream-atomic": "1.0.10", - "gentle-fs": "2.0.1", - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "has-unicode": "2.0.1", - "hosted-git-info": "2.6.0", - "iferr": "0.1.5", - "imurmurhash": "0.1.4", - "inflight": "1.0.6", - "inherits": "2.0.3", - "ini": "1.3.5", - "init-package-json": "1.10.3", - "is-cidr": "1.0.0", - "json-parse-better-errors": "1.0.2", - "lazy-property": "1.0.0", - "libcipm": "1.6.2", - "libnpx": "10.2.0", - "lock-verify": "2.0.2", - "lockfile": "1.0.4", - "lodash._baseindexof": "3.1.0", - "lodash._baseuniq": "4.6.0", - "lodash._bindcallback": "3.0.1", - "lodash._cacheindexof": "3.0.2", - "lodash._createcache": "3.1.2", - "lodash._getnative": "3.9.1", - "lodash.clonedeep": "4.5.0", - "lodash.restparam": "3.6.1", - "lodash.union": "4.6.0", - "lodash.uniq": "4.5.0", - "lodash.without": "4.4.0", - "lru-cache": "4.1.2", - "meant": "1.0.1", - "mississippi": "3.0.0", - "mkdirp": "0.5.1", - "move-concurrently": "1.0.1", - "node-gyp": "3.6.2", - "nopt": "4.0.1", - "normalize-package-data": "2.4.0", - "npm-audit-report": "1.0.9", - "npm-cache-filename": "1.0.2", - "npm-install-checks": "3.0.0", - "npm-lifecycle": "2.0.1", - "npm-package-arg": "6.1.0", - "npm-packlist": "1.1.10", - "npm-profile": "3.0.1", - "npm-registry-client": "8.5.1", - "npm-registry-fetch": "1.1.0", - "npm-user-validate": "1.0.0", - "npmlog": "4.1.2", - "once": "1.4.0", - "opener": "1.4.3", - "osenv": "0.1.5", - "pacote": "7.6.1", - "path-is-inside": "1.0.2", - "promise-inflight": "1.0.1", - "qrcode-terminal": "0.12.0", - "query-string": "6.1.0", - "qw": "1.0.1", - "read": "1.0.7", - "read-cmd-shim": "1.0.1", - "read-installed": "4.0.3", - "read-package-json": "2.0.13", - "read-package-tree": "5.2.1", - "readable-stream": "2.3.6", - "readdir-scoped-modules": "1.0.2", - "request": "2.85.0", - "retry": "0.12.0", - "rimraf": "2.6.2", - "safe-buffer": "5.1.2", - "semver": "5.5.0", - "sha": "2.0.1", - "slide": "1.1.6", - "sorted-object": "2.0.1", - "sorted-union-stream": "2.1.3", - "ssri": "5.3.0", - "strip-ansi": "4.0.0", - "tar": "4.4.2", - "text-table": "0.2.0", - "tiny-relative-date": "1.3.0", - "uid-number": "0.0.6", - "umask": "1.1.0", - "unique-filename": "1.1.0", - "unpipe": "1.0.0", - "update-notifier": "2.5.0", - "uuid": "3.2.1", - "validate-npm-package-license": "3.0.3", - "validate-npm-package-name": "3.0.0", - "which": "1.3.0", - "worker-farm": "1.6.0", - "wrappy": "1.0.2", - "write-file-atomic": "2.3.0" - }, - "dependencies": { - "JSONStream": { - "version": "1.3.2", - "bundled": true, - "requires": { - "jsonparse": "1.3.1", - "through": "2.3.8" - }, - "dependencies": { - "jsonparse": { - "version": "1.3.1", - "bundled": true - }, - "through": { - "version": "2.3.8", - "bundled": true - } - } - }, - "abbrev": { - "version": "1.1.1", - "bundled": true - }, - "ansi-regex": { - "version": "3.0.0", - "bundled": true - }, - "ansicolors": { - "version": "0.3.2", - "bundled": true - }, - "ansistyles": { - "version": "0.1.3", - "bundled": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true - }, - "archy": { - "version": "1.0.0", - "bundled": true - }, - "bin-links": { - "version": "1.1.0", - "bundled": true, - "requires": { - "bluebird": "3.5.1", - "cmd-shim": "2.0.2", - "fs-write-stream-atomic": "1.0.10", - "gentle-fs": "2.0.1", - "graceful-fs": "4.1.11", - "slide": "1.1.6" - } - }, - "bluebird": { - "version": "3.5.1", - "bundled": true - }, - "byte-size": { - "version": "4.0.2", - "bundled": true - }, - "cacache": { - "version": "10.0.4", - "bundled": true, - "requires": { - "bluebird": "3.5.1", - "chownr": "1.0.1", - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "lru-cache": "4.1.2", - "mississippi": "2.0.0", - "mkdirp": "0.5.1", - "move-concurrently": "1.0.1", - "promise-inflight": "1.0.1", - "rimraf": "2.6.2", - "ssri": "5.3.0", - "unique-filename": "1.1.0", - "y18n": "4.0.0" - }, - "dependencies": { - "mississippi": { - "version": "2.0.0", - "bundled": true, - "requires": { - "concat-stream": "1.6.1", - "duplexify": "3.5.4", - "end-of-stream": "1.4.1", - "flush-write-stream": "1.0.2", - "from2": "2.3.0", - "parallel-transform": "1.1.0", - "pump": "2.0.1", - "pumpify": "1.4.0", - "stream-each": "1.2.2", - "through2": "2.0.3" - }, - "dependencies": { - "concat-stream": { - "version": "1.6.1", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "typedarray": "0.0.6" - }, - "dependencies": { - "typedarray": { - "version": "0.0.6", - "bundled": true - } - } - }, - "duplexify": { - "version": "3.5.4", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "stream-shift": "1.0.0" - }, - "dependencies": { - "stream-shift": { - "version": "1.0.0", - "bundled": true - } - } - }, - "end-of-stream": { - "version": "1.4.1", - "bundled": true, - "requires": { - "once": "1.4.0" - } - }, - "flush-write-stream": { - "version": "1.0.2", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" - } - }, - "from2": { - "version": "2.3.0", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" - } - }, - "parallel-transform": { - "version": "1.1.0", - "bundled": true, - "requires": { - "cyclist": "0.2.2", - "inherits": "2.0.3", - "readable-stream": "2.3.6" - }, - "dependencies": { - "cyclist": { - "version": "0.2.2", - "bundled": true - } - } - }, - "pump": { - "version": "2.0.1", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" - } - }, - "pumpify": { - "version": "1.4.0", - "bundled": true, - "requires": { - "duplexify": "3.5.4", - "inherits": "2.0.3", - "pump": "2.0.1" - } - }, - "stream-each": { - "version": "1.2.2", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "stream-shift": "1.0.0" - }, - "dependencies": { - "stream-shift": { - "version": "1.0.0", - "bundled": true - } - } - }, - "through2": { - "version": "2.0.3", - "bundled": true, - "requires": { - "readable-stream": "2.3.6", - "xtend": "4.0.1" - }, - "dependencies": { - "xtend": { - "version": "4.0.1", - "bundled": true - } - } - } - } - }, - "y18n": { - "version": "4.0.0", - "bundled": true - } - } - }, - "call-limit": { - "version": "1.1.0", - "bundled": true - }, - "chownr": { - "version": "1.0.1", - "bundled": true - }, - "cli-columns": { - "version": "3.1.2", - "bundled": true, - "requires": { - "string-width": "2.1.1", - "strip-ansi": "3.0.1" - }, - "dependencies": { - "string-width": { - "version": "2.1.1", - "bundled": true, - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "2.0.0", - "bundled": true - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "requires": { - "ansi-regex": "3.0.0" - } - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "2.1.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "bundled": true - } - } - } - } - }, - "cli-table2": { - "version": "0.2.0", - "bundled": true, - "requires": { - "colors": "1.1.2", - "lodash": "3.10.1", - "string-width": "1.0.2" - }, - "dependencies": { - "colors": { - "version": "1.1.2", - "bundled": true, - "optional": true - }, - "lodash": { - "version": "3.10.1", - "bundled": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - }, - "dependencies": { - "code-point-at": { - "version": "1.1.0", - "bundled": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "requires": { - "number-is-nan": "1.0.1" - }, - "dependencies": { - "number-is-nan": { - "version": "1.0.1", - "bundled": true - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "2.1.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "bundled": true - } - } - } - } - } - } - }, - "cmd-shim": { - "version": "2.0.2", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11", - "mkdirp": "0.5.1" - } - }, - "columnify": { - "version": "1.5.4", - "bundled": true, - "requires": { - "strip-ansi": "3.0.1", - "wcwidth": "1.0.1" - }, - "dependencies": { - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "2.1.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "bundled": true - } - } - }, - "wcwidth": { - "version": "1.0.1", - "bundled": true, - "requires": { - "defaults": "1.0.3" - }, - "dependencies": { - "defaults": { - "version": "1.0.3", - "bundled": true, - "requires": { - "clone": "1.0.2" - }, - "dependencies": { - "clone": { - "version": "1.0.2", - "bundled": true - } - } - } - } - } - } - }, - "config-chain": { - "version": "1.1.11", - "bundled": true, - "requires": { - "ini": "1.3.5", - "proto-list": "1.2.4" - }, - "dependencies": { - "proto-list": { - "version": "1.2.4", - "bundled": true - } - } - }, - "debuglog": { - "version": "1.0.1", - "bundled": true - }, - "detect-indent": { - "version": "5.0.0", - "bundled": true - }, - "detect-newline": { - "version": "2.1.0", - "bundled": true - }, - "dezalgo": { - "version": "1.0.3", - "bundled": true, - "requires": { - "asap": "2.0.5", - "wrappy": "1.0.2" - }, - "dependencies": { - "asap": { - "version": "2.0.5", - "bundled": true - } - } - }, - "editor": { - "version": "1.0.0", - "bundled": true - }, - "find-npm-prefix": { - "version": "1.0.2", - "bundled": true - }, - "fs-vacuum": { - "version": "1.2.10", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11", - "path-is-inside": "1.0.2", - "rimraf": "2.6.2" - } - }, - "fs-write-stream-atomic": { - "version": "1.0.10", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11", - "iferr": "0.1.5", - "imurmurhash": "0.1.4", - "readable-stream": "2.3.6" - } - }, - "gentle-fs": { - "version": "2.0.1", - "bundled": true, - "requires": { - "aproba": "1.2.0", - "fs-vacuum": "1.2.10", - "graceful-fs": "4.1.11", - "iferr": "0.1.5", - "mkdirp": "0.5.1", - "path-is-inside": "1.0.2", - "read-cmd-shim": "1.0.1", - "slide": "1.1.6" - } - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - }, - "dependencies": { - "fs.realpath": { - "version": "1.0.0", - "bundled": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "requires": { - "brace-expansion": "1.1.8" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.8", - "bundled": true, - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - }, - "dependencies": { - "balanced-match": { - "version": "1.0.0", - "bundled": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true - } - } - } - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true - } - } - }, - "graceful-fs": { - "version": "4.1.11", - "bundled": true - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true - }, - "hosted-git-info": { - "version": "2.6.0", - "bundled": true - }, - "iferr": { - "version": "0.1.5", - "bundled": true - }, - "imurmurhash": { - "version": "0.1.4", - "bundled": true - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true - }, - "ini": { - "version": "1.3.5", - "bundled": true - }, - "init-package-json": { - "version": "1.10.3", - "bundled": true, - "requires": { - "glob": "7.1.2", - "npm-package-arg": "6.1.0", - "promzard": "0.3.0", - "read": "1.0.7", - "read-package-json": "2.0.13", - "semver": "5.5.0", - "validate-npm-package-license": "3.0.3", - "validate-npm-package-name": "3.0.0" - }, - "dependencies": { - "promzard": { - "version": "0.3.0", - "bundled": true, - "requires": { - "read": "1.0.7" - } - } - } - }, - "is-cidr": { - "version": "1.0.0", - "bundled": true, - "requires": { - "cidr-regex": "1.0.6" - }, - "dependencies": { - "cidr-regex": { - "version": "1.0.6", - "bundled": true - } - } - }, - "json-parse-better-errors": { - "version": "1.0.2", - "bundled": true - }, - "lazy-property": { - "version": "1.0.0", - "bundled": true - }, - "libcipm": { - "version": "1.6.2", - "bundled": true, - "requires": { - "bin-links": "1.1.0", - "bluebird": "3.5.1", - "find-npm-prefix": "1.0.2", - "graceful-fs": "4.1.11", - "lock-verify": "2.0.1", - "npm-lifecycle": "2.0.1", - "npm-logical-tree": "1.2.1", - "npm-package-arg": "6.1.0", - "pacote": "7.6.1", - "protoduck": "5.0.0", - "read-package-json": "2.0.13", - "rimraf": "2.6.2", - "worker-farm": "1.6.0" - }, - "dependencies": { - "lock-verify": { - "version": "2.0.1", - "bundled": true, - "requires": { - "npm-package-arg": "5.1.2", - "semver": "5.5.0" - }, - "dependencies": { - "npm-package-arg": { - "version": "5.1.2", - "bundled": true, - "requires": { - "hosted-git-info": "2.6.0", - "osenv": "0.1.5", - "semver": "5.5.0", - "validate-npm-package-name": "3.0.0" - } - } - } - }, - "npm-logical-tree": { - "version": "1.2.1", - "bundled": true - }, - "protoduck": { - "version": "5.0.0", - "bundled": true, - "requires": { - "genfun": "4.0.1" - }, - "dependencies": { - "genfun": { - "version": "4.0.1", - "bundled": true - } - } - } - } - }, - "libnpx": { - "version": "10.2.0", - "bundled": true, - "requires": { - "dotenv": "5.0.1", - "npm-package-arg": "6.1.0", - "rimraf": "2.6.2", - "safe-buffer": "5.1.2", - "update-notifier": "2.5.0", - "which": "1.3.0", - "y18n": "4.0.0", - "yargs": "11.0.0" - }, - "dependencies": { - "dotenv": { - "version": "5.0.1", - "bundled": true - }, - "y18n": { - "version": "4.0.0", - "bundled": true - }, - "yargs": { - "version": "11.0.0", - "bundled": true, - "requires": { - "cliui": "4.1.0", - "decamelize": "1.2.0", - "find-up": "2.1.0", - "get-caller-file": "1.0.2", - "os-locale": "2.1.0", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", - "y18n": "3.2.1", - "yargs-parser": "9.0.2" - }, - "dependencies": { - "cliui": { - "version": "4.1.0", - "bundled": true, - "requires": { - "string-width": "2.1.1", - "strip-ansi": "4.0.0", - "wrap-ansi": "2.1.0" - }, - "dependencies": { - "wrap-ansi": { - "version": "2.1.0", - "bundled": true, - "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" - }, - "dependencies": { - "string-width": { - "version": "1.0.2", - "bundled": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - }, - "dependencies": { - "code-point-at": { - "version": "1.1.0", - "bundled": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "requires": { - "number-is-nan": "1.0.1" - }, - "dependencies": { - "number-is-nan": { - "version": "1.0.1", - "bundled": true - } - } - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "2.1.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "bundled": true - } - } - } - } - } - } - }, - "decamelize": { - "version": "1.2.0", - "bundled": true - }, - "find-up": { - "version": "2.1.0", - "bundled": true, - "requires": { - "locate-path": "2.0.0" - }, - "dependencies": { - "locate-path": { - "version": "2.0.0", - "bundled": true, - "requires": { - "p-locate": "2.0.0", - "path-exists": "3.0.0" - }, - "dependencies": { - "p-locate": { - "version": "2.0.0", - "bundled": true, - "requires": { - "p-limit": "1.2.0" - }, - "dependencies": { - "p-limit": { - "version": "1.2.0", - "bundled": true, - "requires": { - "p-try": "1.0.0" - }, - "dependencies": { - "p-try": { - "version": "1.0.0", - "bundled": true - } - } - } - } - }, - "path-exists": { - "version": "3.0.0", - "bundled": true - } - } - } - } - }, - "get-caller-file": { - "version": "1.0.2", - "bundled": true - }, - "os-locale": { - "version": "2.1.0", - "bundled": true, - "requires": { - "execa": "0.7.0", - "lcid": "1.0.0", - "mem": "1.1.0" - }, - "dependencies": { - "execa": { - "version": "0.7.0", - "bundled": true, - "requires": { - "cross-spawn": "5.1.0", - "get-stream": "3.0.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "bundled": true, - "requires": { - "lru-cache": "4.1.2", - "shebang-command": "1.2.0", - "which": "1.3.0" - }, - "dependencies": { - "shebang-command": { - "version": "1.2.0", - "bundled": true, - "requires": { - "shebang-regex": "1.0.0" - }, - "dependencies": { - "shebang-regex": { - "version": "1.0.0", - "bundled": true - } - } - } - } - }, - "get-stream": { - "version": "3.0.0", - "bundled": true - }, - "is-stream": { - "version": "1.1.0", - "bundled": true - }, - "npm-run-path": { - "version": "2.0.2", - "bundled": true, - "requires": { - "path-key": "2.0.1" - }, - "dependencies": { - "path-key": { - "version": "2.0.1", - "bundled": true - } - } - }, - "p-finally": { - "version": "1.0.0", - "bundled": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true - }, - "strip-eof": { - "version": "1.0.0", - "bundled": true - } - } - }, - "lcid": { - "version": "1.0.0", - "bundled": true, - "requires": { - "invert-kv": "1.0.0" - }, - "dependencies": { - "invert-kv": { - "version": "1.0.0", - "bundled": true - } - } - }, - "mem": { - "version": "1.1.0", - "bundled": true, - "requires": { - "mimic-fn": "1.2.0" - }, - "dependencies": { - "mimic-fn": { - "version": "1.2.0", - "bundled": true - } - } - } - } - }, - "require-directory": { - "version": "2.1.1", - "bundled": true - }, - "require-main-filename": { - "version": "1.0.1", - "bundled": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true - }, - "string-width": { - "version": "2.1.1", - "bundled": true, - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "2.0.0", - "bundled": true - } - } - }, - "which-module": { - "version": "2.0.0", - "bundled": true - }, - "y18n": { - "version": "3.2.1", - "bundled": true - }, - "yargs-parser": { - "version": "9.0.2", - "bundled": true, - "requires": { - "camelcase": "4.1.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "bundled": true - } - } - } - } - } - } - }, - "lock-verify": { - "version": "2.0.2", - "bundled": true, - "requires": { - "npm-package-arg": "6.1.0", - "semver": "5.5.0" - } - }, - "lockfile": { - "version": "1.0.4", - "bundled": true, - "requires": { - "signal-exit": "3.0.2" - }, - "dependencies": { - "signal-exit": { - "version": "3.0.2", - "bundled": true - } - } - }, - "lodash._baseindexof": { - "version": "3.1.0", - "bundled": true - }, - "lodash._baseuniq": { - "version": "4.6.0", - "bundled": true, - "requires": { - "lodash._createset": "4.0.3", - "lodash._root": "3.0.1" - }, - "dependencies": { - "lodash._createset": { - "version": "4.0.3", - "bundled": true - }, - "lodash._root": { - "version": "3.0.1", - "bundled": true - } - } - }, - "lodash._bindcallback": { - "version": "3.0.1", - "bundled": true - }, - "lodash._cacheindexof": { - "version": "3.0.2", - "bundled": true - }, - "lodash._createcache": { - "version": "3.1.2", - "bundled": true, - "requires": { - "lodash._getnative": "3.9.1" - } - }, - "lodash._getnative": { - "version": "3.9.1", - "bundled": true - }, - "lodash.clonedeep": { - "version": "4.5.0", - "bundled": true - }, - "lodash.restparam": { - "version": "3.6.1", - "bundled": true - }, - "lodash.union": { - "version": "4.6.0", - "bundled": true - }, - "lodash.uniq": { - "version": "4.5.0", - "bundled": true - }, - "lodash.without": { - "version": "4.4.0", - "bundled": true - }, - "lru-cache": { - "version": "4.1.2", - "bundled": true, - "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" - }, - "dependencies": { - "pseudomap": { - "version": "1.0.2", - "bundled": true - }, - "yallist": { - "version": "2.1.2", - "bundled": true - } - } - }, - "meant": { - "version": "1.0.1", - "bundled": true - }, - "mississippi": { - "version": "3.0.0", - "bundled": true, - "requires": { - "concat-stream": "1.6.1", - "duplexify": "3.5.4", - "end-of-stream": "1.4.1", - "flush-write-stream": "1.0.2", - "from2": "2.3.0", - "parallel-transform": "1.1.0", - "pump": "3.0.0", - "pumpify": "1.4.0", - "stream-each": "1.2.2", - "through2": "2.0.3" - }, - "dependencies": { - "concat-stream": { - "version": "1.6.1", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "typedarray": "0.0.6" - }, - "dependencies": { - "typedarray": { - "version": "0.0.6", - "bundled": true - } - } - }, - "duplexify": { - "version": "3.5.4", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "stream-shift": "1.0.0" - }, - "dependencies": { - "stream-shift": { - "version": "1.0.0", - "bundled": true - } - } - }, - "end-of-stream": { - "version": "1.4.1", - "bundled": true, - "requires": { - "once": "1.4.0" - } - }, - "flush-write-stream": { - "version": "1.0.2", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" - } - }, - "from2": { - "version": "2.3.0", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" - } - }, - "parallel-transform": { - "version": "1.1.0", - "bundled": true, - "requires": { - "cyclist": "0.2.2", - "inherits": "2.0.3", - "readable-stream": "2.3.6" - }, - "dependencies": { - "cyclist": { - "version": "0.2.2", - "bundled": true - } - } - }, - "pump": { - "version": "3.0.0", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" - } - }, - "pumpify": { - "version": "1.4.0", - "bundled": true, - "requires": { - "duplexify": "3.5.4", - "inherits": "2.0.3", - "pump": "2.0.1" - }, - "dependencies": { - "pump": { - "version": "2.0.1", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" - } - } - } - }, - "stream-each": { - "version": "1.2.2", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "stream-shift": "1.0.0" - }, - "dependencies": { - "stream-shift": { - "version": "1.0.0", - "bundled": true - } - } - }, - "through2": { - "version": "2.0.3", - "bundled": true, - "requires": { - "readable-stream": "2.3.6", - "xtend": "4.0.1" - }, - "dependencies": { - "xtend": { - "version": "4.0.1", - "bundled": true - } - } - } - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "bundled": true - } - } - }, - "move-concurrently": { - "version": "1.0.1", - "bundled": true, - "requires": { - "aproba": "1.2.0", - "copy-concurrently": "1.0.5", - "fs-write-stream-atomic": "1.0.10", - "mkdirp": "0.5.1", - "rimraf": "2.6.2", - "run-queue": "1.0.3" - }, - "dependencies": { - "copy-concurrently": { - "version": "1.0.5", - "bundled": true, - "requires": { - "aproba": "1.2.0", - "fs-write-stream-atomic": "1.0.10", - "iferr": "0.1.5", - "mkdirp": "0.5.1", - "rimraf": "2.6.2", - "run-queue": "1.0.3" - } - }, - "run-queue": { - "version": "1.0.3", - "bundled": true, - "requires": { - "aproba": "1.2.0" - } - } - } - }, - "node-gyp": { - "version": "3.6.2", - "bundled": true, - "requires": { - "fstream": "1.0.11", - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "nopt": "3.0.6", - "npmlog": "4.1.2", - "osenv": "0.1.5", - "request": "2.85.0", - "rimraf": "2.6.2", - "semver": "5.3.0", - "tar": "2.2.1", - "which": "1.3.0" - }, - "dependencies": { - "fstream": { - "version": "1.0.11", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.2" - } - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "requires": { - "brace-expansion": "1.1.11" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - }, - "dependencies": { - "balanced-match": { - "version": "1.0.0", - "bundled": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true - } - } - } - } - }, - "nopt": { - "version": "3.0.6", - "bundled": true, - "requires": { - "abbrev": "1.1.1" - } - }, - "semver": { - "version": "5.3.0", - "bundled": true - }, - "tar": { - "version": "2.2.1", - "bundled": true, - "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" - }, - "dependencies": { - "block-stream": { - "version": "0.0.9", - "bundled": true, - "requires": { - "inherits": "2.0.3" - } - } - } - } - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "requires": { - "abbrev": "1.1.1", - "osenv": "0.1.5" - } - }, - "normalize-package-data": { - "version": "2.4.0", - "bundled": true, - "requires": { - "hosted-git-info": "2.6.0", - "is-builtin-module": "1.0.0", - "semver": "5.5.0", - "validate-npm-package-license": "3.0.3" - }, - "dependencies": { - "is-builtin-module": { - "version": "1.0.0", - "bundled": true, - "requires": { - "builtin-modules": "1.1.1" - }, - "dependencies": { - "builtin-modules": { - "version": "1.1.1", - "bundled": true - } - } - } - } - }, - "npm-audit-report": { - "version": "1.0.9", - "bundled": true, - "requires": { - "cli-table2": "0.2.0", - "console-control-strings": "1.1.0" - }, - "dependencies": { - "console-control-strings": { - "version": "1.1.0", - "bundled": true - } - } - }, - "npm-cache-filename": { - "version": "1.0.2", - "bundled": true - }, - "npm-install-checks": { - "version": "3.0.0", - "bundled": true, - "requires": { - "semver": "5.5.0" - } - }, - "npm-lifecycle": { - "version": "2.0.1", - "bundled": true, - "requires": { - "byline": "5.0.0", - "graceful-fs": "4.1.11", - "node-gyp": "3.6.2", - "resolve-from": "4.0.0", - "slide": "1.1.6", - "uid-number": "0.0.6", - "umask": "1.1.0", - "which": "1.3.0" - }, - "dependencies": { - "byline": { - "version": "5.0.0", - "bundled": true - }, - "resolve-from": { - "version": "4.0.0", - "bundled": true - } - } - }, - "npm-package-arg": { - "version": "6.1.0", - "bundled": true, - "requires": { - "hosted-git-info": "2.6.0", - "osenv": "0.1.5", - "semver": "5.5.0", - "validate-npm-package-name": "3.0.0" - } - }, - "npm-packlist": { - "version": "1.1.10", - "bundled": true, - "requires": { - "ignore-walk": "3.0.1", - "npm-bundled": "1.0.3" - }, - "dependencies": { - "ignore-walk": { - "version": "3.0.1", - "bundled": true, - "requires": { - "minimatch": "3.0.4" - }, - "dependencies": { - "minimatch": { - "version": "3.0.4", - "bundled": true, - "requires": { - "brace-expansion": "1.1.8" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.8", - "bundled": true, - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - }, - "dependencies": { - "balanced-match": { - "version": "1.0.0", - "bundled": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true - } - } - } - } - } - } - }, - "npm-bundled": { - "version": "1.0.3", - "bundled": true - } - } - }, - "npm-profile": { - "version": "3.0.1", - "bundled": true, - "requires": { - "aproba": "1.2.0", - "make-fetch-happen": "2.6.0" - }, - "dependencies": { - "make-fetch-happen": { - "version": "2.6.0", - "bundled": true, - "requires": { - "agentkeepalive": "3.3.0", - "cacache": "10.0.4", - "http-cache-semantics": "3.8.1", - "http-proxy-agent": "2.0.0", - "https-proxy-agent": "2.1.1", - "lru-cache": "4.1.2", - "mississippi": "1.3.1", - "node-fetch-npm": "2.0.2", - "promise-retry": "1.1.1", - "socks-proxy-agent": "3.0.1", - "ssri": "5.3.0" - }, - "dependencies": { - "agentkeepalive": { - "version": "3.3.0", - "bundled": true, - "requires": { - "humanize-ms": "1.2.1" - }, - "dependencies": { - "humanize-ms": { - "version": "1.2.1", - "bundled": true, - "requires": { - "ms": "2.1.1" - }, - "dependencies": { - "ms": { - "version": "2.1.1", - "bundled": true - } - } - } - } - }, - "http-cache-semantics": { - "version": "3.8.1", - "bundled": true - }, - "http-proxy-agent": { - "version": "2.0.0", - "bundled": true, - "requires": { - "agent-base": "4.2.0", - "debug": "2.6.9" - }, - "dependencies": { - "agent-base": { - "version": "4.2.0", - "bundled": true, - "requires": { - "es6-promisify": "5.0.0" - }, - "dependencies": { - "es6-promisify": { - "version": "5.0.0", - "bundled": true, - "requires": { - "es6-promise": "4.2.4" - }, - "dependencies": { - "es6-promise": { - "version": "4.2.4", - "bundled": true - } - } - } - } - }, - "debug": { - "version": "2.6.9", - "bundled": true, - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "bundled": true - } - } - } - } - }, - "https-proxy-agent": { - "version": "2.1.1", - "bundled": true, - "requires": { - "agent-base": "4.2.0", - "debug": "3.1.0" - }, - "dependencies": { - "agent-base": { - "version": "4.2.0", - "bundled": true, - "requires": { - "es6-promisify": "5.0.0" - }, - "dependencies": { - "es6-promisify": { - "version": "5.0.0", - "bundled": true, - "requires": { - "es6-promise": "4.2.4" - }, - "dependencies": { - "es6-promise": { - "version": "4.2.4", - "bundled": true - } - } - } - } - }, - "debug": { - "version": "3.1.0", - "bundled": true, - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "bundled": true - } - } - } - } - }, - "mississippi": { - "version": "1.3.1", - "bundled": true, - "requires": { - "concat-stream": "1.6.0", - "duplexify": "3.5.3", - "end-of-stream": "1.4.1", - "flush-write-stream": "1.0.2", - "from2": "2.3.0", - "parallel-transform": "1.1.0", - "pump": "1.0.3", - "pumpify": "1.4.0", - "stream-each": "1.2.2", - "through2": "2.0.3" - }, - "dependencies": { - "concat-stream": { - "version": "1.6.0", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "typedarray": "0.0.6" - }, - "dependencies": { - "typedarray": { - "version": "0.0.6", - "bundled": true - } - } - }, - "duplexify": { - "version": "3.5.3", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "stream-shift": "1.0.0" - }, - "dependencies": { - "stream-shift": { - "version": "1.0.0", - "bundled": true - } - } - }, - "end-of-stream": { - "version": "1.4.1", - "bundled": true, - "requires": { - "once": "1.4.0" - } - }, - "flush-write-stream": { - "version": "1.0.2", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" - } - }, - "from2": { - "version": "2.3.0", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" - } - }, - "parallel-transform": { - "version": "1.1.0", - "bundled": true, - "requires": { - "cyclist": "0.2.2", - "inherits": "2.0.3", - "readable-stream": "2.3.6" - }, - "dependencies": { - "cyclist": { - "version": "0.2.2", - "bundled": true - } - } - }, - "pump": { - "version": "1.0.3", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" - } - }, - "pumpify": { - "version": "1.4.0", - "bundled": true, - "requires": { - "duplexify": "3.5.3", - "inherits": "2.0.3", - "pump": "2.0.1" - }, - "dependencies": { - "pump": { - "version": "2.0.1", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" - } - } - } - }, - "stream-each": { - "version": "1.2.2", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "stream-shift": "1.0.0" - }, - "dependencies": { - "stream-shift": { - "version": "1.0.0", - "bundled": true - } - } - }, - "through2": { - "version": "2.0.3", - "bundled": true, - "requires": { - "readable-stream": "2.3.6", - "xtend": "4.0.1" - }, - "dependencies": { - "xtend": { - "version": "4.0.1", - "bundled": true - } - } - } - } - }, - "node-fetch-npm": { - "version": "2.0.2", - "bundled": true, - "requires": { - "encoding": "0.1.12", - "json-parse-better-errors": "1.0.1", - "safe-buffer": "5.1.2" - }, - "dependencies": { - "encoding": { - "version": "0.1.12", - "bundled": true, - "requires": { - "iconv-lite": "0.4.19" - }, - "dependencies": { - "iconv-lite": { - "version": "0.4.19", - "bundled": true - } - } - }, - "json-parse-better-errors": { - "version": "1.0.1", - "bundled": true - } - } - }, - "promise-retry": { - "version": "1.1.1", - "bundled": true, - "requires": { - "err-code": "1.1.2", - "retry": "0.10.1" - }, - "dependencies": { - "err-code": { - "version": "1.1.2", - "bundled": true - }, - "retry": { - "version": "0.10.1", - "bundled": true - } - } - }, - "socks-proxy-agent": { - "version": "3.0.1", - "bundled": true, - "requires": { - "agent-base": "4.2.0", - "socks": "1.1.10" - }, - "dependencies": { - "agent-base": { - "version": "4.2.0", - "bundled": true, - "requires": { - "es6-promisify": "5.0.0" - }, - "dependencies": { - "es6-promisify": { - "version": "5.0.0", - "bundled": true, - "requires": { - "es6-promise": "4.2.4" - }, - "dependencies": { - "es6-promise": { - "version": "4.2.4", - "bundled": true - } - } - } - } - }, - "socks": { - "version": "1.1.10", - "bundled": true, - "requires": { - "ip": "1.1.5", - "smart-buffer": "1.1.15" - }, - "dependencies": { - "ip": { - "version": "1.1.5", - "bundled": true - }, - "smart-buffer": { - "version": "1.1.15", - "bundled": true - } - } - } - } - } - } - } - } - }, - "npm-registry-client": { - "version": "8.5.1", - "bundled": true, - "requires": { - "concat-stream": "1.6.1", - "graceful-fs": "4.1.11", - "normalize-package-data": "2.4.0", - "npm-package-arg": "6.1.0", - "npmlog": "4.1.2", - "once": "1.4.0", - "request": "2.85.0", - "retry": "0.10.1", - "safe-buffer": "5.1.2", - "semver": "5.5.0", - "slide": "1.1.6", - "ssri": "5.3.0" - }, - "dependencies": { - "concat-stream": { - "version": "1.6.1", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "typedarray": "0.0.6" - }, - "dependencies": { - "typedarray": { - "version": "0.0.6", - "bundled": true - } - } - }, - "retry": { - "version": "0.10.1", - "bundled": true - } - } - }, - "npm-registry-fetch": { - "version": "1.1.0", - "bundled": true, - "requires": { - "bluebird": "3.5.1", - "figgy-pudding": "2.0.1", - "lru-cache": "4.1.2", - "make-fetch-happen": "3.0.0", - "npm-package-arg": "6.1.0", - "safe-buffer": "5.1.2" - }, - "dependencies": { - "figgy-pudding": { - "version": "2.0.1", - "bundled": true - }, - "make-fetch-happen": { - "version": "3.0.0", - "bundled": true, - "requires": { - "agentkeepalive": "3.4.1", - "cacache": "10.0.4", - "http-cache-semantics": "3.8.1", - "http-proxy-agent": "2.1.0", - "https-proxy-agent": "2.2.1", - "lru-cache": "4.1.2", - "mississippi": "3.0.0", - "node-fetch-npm": "2.0.2", - "promise-retry": "1.1.1", - "socks-proxy-agent": "3.0.1", - "ssri": "5.3.0" - }, - "dependencies": { - "agentkeepalive": { - "version": "3.4.1", - "bundled": true, - "requires": { - "humanize-ms": "1.2.1" - }, - "dependencies": { - "humanize-ms": { - "version": "1.2.1", - "bundled": true, - "requires": { - "ms": "2.1.1" - }, - "dependencies": { - "ms": { - "version": "2.1.1", - "bundled": true - } - } - } - } - }, - "http-cache-semantics": { - "version": "3.8.1", - "bundled": true - }, - "http-proxy-agent": { - "version": "2.1.0", - "bundled": true, - "requires": { - "agent-base": "4.2.0", - "debug": "3.1.0" - }, - "dependencies": { - "agent-base": { - "version": "4.2.0", - "bundled": true, - "requires": { - "es6-promisify": "5.0.0" - }, - "dependencies": { - "es6-promisify": { - "version": "5.0.0", - "bundled": true, - "requires": { - "es6-promise": "4.2.4" - }, - "dependencies": { - "es6-promise": { - "version": "4.2.4", - "bundled": true - } - } - } - } - }, - "debug": { - "version": "3.1.0", - "bundled": true, - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "bundled": true - } - } - } - } - }, - "https-proxy-agent": { - "version": "2.2.1", - "bundled": true, - "requires": { - "agent-base": "4.2.0", - "debug": "3.1.0" - }, - "dependencies": { - "agent-base": { - "version": "4.2.0", - "bundled": true, - "requires": { - "es6-promisify": "5.0.0" - }, - "dependencies": { - "es6-promisify": { - "version": "5.0.0", - "bundled": true, - "requires": { - "es6-promise": "4.2.4" - }, - "dependencies": { - "es6-promise": { - "version": "4.2.4", - "bundled": true - } - } - } - } - }, - "debug": { - "version": "3.1.0", - "bundled": true, - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "bundled": true - } - } - } - } - }, - "node-fetch-npm": { - "version": "2.0.2", - "bundled": true, - "requires": { - "encoding": "0.1.12", - "json-parse-better-errors": "1.0.2", - "safe-buffer": "5.1.2" - }, - "dependencies": { - "encoding": { - "version": "0.1.12", - "bundled": true, - "requires": { - "iconv-lite": "0.4.21" - }, - "dependencies": { - "iconv-lite": { - "version": "0.4.21", - "bundled": true, - "requires": { - "safer-buffer": "2.1.2" - }, - "dependencies": { - "safer-buffer": { - "version": "2.1.2", - "bundled": true - } - } - } - } - } - } - }, - "promise-retry": { - "version": "1.1.1", - "bundled": true, - "requires": { - "err-code": "1.1.2", - "retry": "0.10.1" - }, - "dependencies": { - "err-code": { - "version": "1.1.2", - "bundled": true - }, - "retry": { - "version": "0.10.1", - "bundled": true - } - } - }, - "socks-proxy-agent": { - "version": "3.0.1", - "bundled": true, - "requires": { - "agent-base": "4.2.0", - "socks": "1.1.10" - }, - "dependencies": { - "agent-base": { - "version": "4.2.0", - "bundled": true, - "requires": { - "es6-promisify": "5.0.0" - }, - "dependencies": { - "es6-promisify": { - "version": "5.0.0", - "bundled": true, - "requires": { - "es6-promise": "4.2.4" - }, - "dependencies": { - "es6-promise": { - "version": "4.2.4", - "bundled": true - } - } - } - } - }, - "socks": { - "version": "1.1.10", - "bundled": true, - "requires": { - "ip": "1.1.5", - "smart-buffer": "1.1.15" - }, - "dependencies": { - "ip": { - "version": "1.1.5", - "bundled": true - }, - "smart-buffer": { - "version": "1.1.15", - "bundled": true - } - } - } - } - } - } - } - } - }, - "npm-user-validate": { - "version": "1.0.0", - "bundled": true - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "requires": { - "are-we-there-yet": "1.1.4", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" - }, - "dependencies": { - "are-we-there-yet": { - "version": "1.1.4", - "bundled": true, - "requires": { - "delegates": "1.0.0", - "readable-stream": "2.3.6" - }, - "dependencies": { - "delegates": { - "version": "1.0.0", - "bundled": true - } - } - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "requires": { - "aproba": "1.2.0", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.1", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.2" - }, - "dependencies": { - "object-assign": { - "version": "4.1.1", - "bundled": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - }, - "dependencies": { - "code-point-at": { - "version": "1.1.0", - "bundled": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "requires": { - "number-is-nan": "1.0.1" - }, - "dependencies": { - "number-is-nan": { - "version": "1.0.1", - "bundled": true - } - } - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "2.1.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "bundled": true - } - } - }, - "wide-align": { - "version": "1.1.2", - "bundled": true, - "requires": { - "string-width": "1.0.2" - } - } - } - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true - } - } - }, - "once": { - "version": "1.4.0", - "bundled": true, - "requires": { - "wrappy": "1.0.2" - } - }, - "opener": { - "version": "1.4.3", - "bundled": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" - }, - "dependencies": { - "os-homedir": { - "version": "1.0.2", - "bundled": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true - } - } - }, - "pacote": { - "version": "7.6.1", - "bundled": true, - "requires": { - "bluebird": "3.5.1", - "cacache": "10.0.4", - "get-stream": "3.0.0", - "glob": "7.1.2", - "lru-cache": "4.1.2", - "make-fetch-happen": "2.6.0", - "minimatch": "3.0.4", - "mississippi": "3.0.0", - "mkdirp": "0.5.1", - "normalize-package-data": "2.4.0", - "npm-package-arg": "6.1.0", - "npm-packlist": "1.1.10", - "npm-pick-manifest": "2.1.0", - "osenv": "0.1.5", - "promise-inflight": "1.0.1", - "promise-retry": "1.1.1", - "protoduck": "5.0.0", - "rimraf": "2.6.2", - "safe-buffer": "5.1.2", - "semver": "5.5.0", - "ssri": "5.3.0", - "tar": "4.4.2", - "unique-filename": "1.1.0", - "which": "1.3.0" - }, - "dependencies": { - "get-stream": { - "version": "3.0.0", - "bundled": true - }, - "make-fetch-happen": { - "version": "2.6.0", - "bundled": true, - "requires": { - "agentkeepalive": "3.4.0", - "cacache": "10.0.4", - "http-cache-semantics": "3.8.1", - "http-proxy-agent": "2.1.0", - "https-proxy-agent": "2.2.0", - "lru-cache": "4.1.2", - "mississippi": "1.3.1", - "node-fetch-npm": "2.0.2", - "promise-retry": "1.1.1", - "socks-proxy-agent": "3.0.1", - "ssri": "5.3.0" - }, - "dependencies": { - "agentkeepalive": { - "version": "3.4.0", - "bundled": true, - "requires": { - "humanize-ms": "1.2.1" - }, - "dependencies": { - "humanize-ms": { - "version": "1.2.1", - "bundled": true, - "requires": { - "ms": "2.1.1" - }, - "dependencies": { - "ms": { - "version": "2.1.1", - "bundled": true - } - } - } - } - }, - "http-cache-semantics": { - "version": "3.8.1", - "bundled": true - }, - "http-proxy-agent": { - "version": "2.1.0", - "bundled": true, - "requires": { - "agent-base": "4.2.0", - "debug": "3.1.0" - }, - "dependencies": { - "agent-base": { - "version": "4.2.0", - "bundled": true, - "requires": { - "es6-promisify": "5.0.0" - }, - "dependencies": { - "es6-promisify": { - "version": "5.0.0", - "bundled": true, - "requires": { - "es6-promise": "4.2.4" - }, - "dependencies": { - "es6-promise": { - "version": "4.2.4", - "bundled": true - } - } - } - } - }, - "debug": { - "version": "3.1.0", - "bundled": true, - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "bundled": true - } - } - } - } - }, - "https-proxy-agent": { - "version": "2.2.0", - "bundled": true, - "requires": { - "agent-base": "4.2.0", - "debug": "3.1.0" - }, - "dependencies": { - "agent-base": { - "version": "4.2.0", - "bundled": true, - "requires": { - "es6-promisify": "5.0.0" - }, - "dependencies": { - "es6-promisify": { - "version": "5.0.0", - "bundled": true, - "requires": { - "es6-promise": "4.2.4" - }, - "dependencies": { - "es6-promise": { - "version": "4.2.4", - "bundled": true - } - } - } - } - }, - "debug": { - "version": "3.1.0", - "bundled": true, - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "bundled": true - } - } - } - } - }, - "mississippi": { - "version": "1.3.1", - "bundled": true, - "requires": { - "concat-stream": "1.6.1", - "duplexify": "3.5.4", - "end-of-stream": "1.4.1", - "flush-write-stream": "1.0.2", - "from2": "2.3.0", - "parallel-transform": "1.1.0", - "pump": "1.0.3", - "pumpify": "1.4.0", - "stream-each": "1.2.2", - "through2": "2.0.3" - }, - "dependencies": { - "concat-stream": { - "version": "1.6.1", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "typedarray": "0.0.6" - }, - "dependencies": { - "typedarray": { - "version": "0.0.6", - "bundled": true - } - } - }, - "duplexify": { - "version": "3.5.4", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "stream-shift": "1.0.0" - }, - "dependencies": { - "stream-shift": { - "version": "1.0.0", - "bundled": true - } - } - }, - "end-of-stream": { - "version": "1.4.1", - "bundled": true, - "requires": { - "once": "1.4.0" - } - }, - "flush-write-stream": { - "version": "1.0.2", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" - } - }, - "from2": { - "version": "2.3.0", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" - } - }, - "parallel-transform": { - "version": "1.1.0", - "bundled": true, - "requires": { - "cyclist": "0.2.2", - "inherits": "2.0.3", - "readable-stream": "2.3.6" - }, - "dependencies": { - "cyclist": { - "version": "0.2.2", - "bundled": true - } - } - }, - "pump": { - "version": "1.0.3", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" - } - }, - "pumpify": { - "version": "1.4.0", - "bundled": true, - "requires": { - "duplexify": "3.5.4", - "inherits": "2.0.3", - "pump": "2.0.1" - }, - "dependencies": { - "pump": { - "version": "2.0.1", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" - } - } - } - }, - "stream-each": { - "version": "1.2.2", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "stream-shift": "1.0.0" - }, - "dependencies": { - "stream-shift": { - "version": "1.0.0", - "bundled": true - } - } - }, - "through2": { - "version": "2.0.3", - "bundled": true, - "requires": { - "readable-stream": "2.3.6", - "xtend": "4.0.1" - }, - "dependencies": { - "xtend": { - "version": "4.0.1", - "bundled": true - } - } - } - } - }, - "node-fetch-npm": { - "version": "2.0.2", - "bundled": true, - "requires": { - "encoding": "0.1.12", - "json-parse-better-errors": "1.0.1", - "safe-buffer": "5.1.2" - }, - "dependencies": { - "encoding": { - "version": "0.1.12", - "bundled": true, - "requires": { - "iconv-lite": "0.4.19" - }, - "dependencies": { - "iconv-lite": { - "version": "0.4.19", - "bundled": true - } - } - }, - "json-parse-better-errors": { - "version": "1.0.1", - "bundled": true - } - } - }, - "socks-proxy-agent": { - "version": "3.0.1", - "bundled": true, - "requires": { - "agent-base": "4.2.0", - "socks": "1.1.10" - }, - "dependencies": { - "agent-base": { - "version": "4.2.0", - "bundled": true, - "requires": { - "es6-promisify": "5.0.0" - }, - "dependencies": { - "es6-promisify": { - "version": "5.0.0", - "bundled": true, - "requires": { - "es6-promise": "4.2.4" - }, - "dependencies": { - "es6-promise": { - "version": "4.2.4", - "bundled": true - } - } - } - } - }, - "socks": { - "version": "1.1.10", - "bundled": true, - "requires": { - "ip": "1.1.5", - "smart-buffer": "1.1.15" - }, - "dependencies": { - "ip": { - "version": "1.1.5", - "bundled": true - }, - "smart-buffer": { - "version": "1.1.15", - "bundled": true - } - } - } - } - } - } - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "requires": { - "brace-expansion": "1.1.11" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - }, - "dependencies": { - "balanced-match": { - "version": "1.0.0", - "bundled": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true - } - } - } - } - }, - "npm-pick-manifest": { - "version": "2.1.0", - "bundled": true, - "requires": { - "npm-package-arg": "6.1.0", - "semver": "5.5.0" - } - }, - "promise-retry": { - "version": "1.1.1", - "bundled": true, - "requires": { - "err-code": "1.1.2", - "retry": "0.10.1" - }, - "dependencies": { - "err-code": { - "version": "1.1.2", - "bundled": true - }, - "retry": { - "version": "0.10.1", - "bundled": true - } - } - }, - "protoduck": { - "version": "5.0.0", - "bundled": true, - "requires": { - "genfun": "4.0.1" - }, - "dependencies": { - "genfun": { - "version": "4.0.1", - "bundled": true - } - } - } - } - }, - "path-is-inside": { - "version": "1.0.2", - "bundled": true - }, - "promise-inflight": { - "version": "1.0.1", - "bundled": true - }, - "qrcode-terminal": { - "version": "0.12.0", - "bundled": true - }, - "query-string": { - "version": "6.1.0", - "bundled": true, - "requires": { - "decode-uri-component": "0.2.0", - "strict-uri-encode": "2.0.0" - }, - "dependencies": { - "decode-uri-component": { - "version": "0.2.0", - "bundled": true - }, - "strict-uri-encode": { - "version": "2.0.0", - "bundled": true - } - } - }, - "qw": { - "version": "1.0.1", - "bundled": true - }, - "read": { - "version": "1.0.7", - "bundled": true, - "requires": { - "mute-stream": "0.0.7" - }, - "dependencies": { - "mute-stream": { - "version": "0.0.7", - "bundled": true - } - } - }, - "read-cmd-shim": { - "version": "1.0.1", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11" - } - }, - "read-installed": { - "version": "4.0.3", - "bundled": true, - "requires": { - "debuglog": "1.0.1", - "graceful-fs": "4.1.11", - "read-package-json": "2.0.13", - "readdir-scoped-modules": "1.0.2", - "semver": "5.5.0", - "slide": "1.1.6", - "util-extend": "1.0.3" - }, - "dependencies": { - "util-extend": { - "version": "1.0.3", - "bundled": true - } - } - }, - "read-package-json": { - "version": "2.0.13", - "bundled": true, - "requires": { - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "json-parse-better-errors": "1.0.1", - "normalize-package-data": "2.4.0", - "slash": "1.0.0" - }, - "dependencies": { - "json-parse-better-errors": { - "version": "1.0.1", - "bundled": true - }, - "slash": { - "version": "1.0.0", - "bundled": true - } - } - }, - "read-package-tree": { - "version": "5.2.1", - "bundled": true, - "requires": { - "debuglog": "1.0.1", - "dezalgo": "1.0.3", - "once": "1.4.0", - "read-package-json": "2.0.13", - "readdir-scoped-modules": "1.0.2" - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.2", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" - }, - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "bundled": true - }, - "isarray": { - "version": "1.0.0", - "bundled": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "requires": { - "safe-buffer": "5.1.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true - } - } - }, - "readdir-scoped-modules": { - "version": "1.0.2", - "bundled": true, - "requires": { - "debuglog": "1.0.1", - "dezalgo": "1.0.3", - "graceful-fs": "4.1.11", - "once": "1.4.0" - } - }, - "request": { - "version": "2.85.0", - "bundled": true, - "requires": { - "aws-sign2": "0.7.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.6", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.3.2", - "har-validator": "5.0.3", - "hawk": "6.0.2", - "http-signature": "1.2.0", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.18", - "oauth-sign": "0.8.2", - "performance-now": "2.1.0", - "qs": "6.5.1", - "safe-buffer": "5.1.2", - "stringstream": "0.0.5", - "tough-cookie": "2.3.4", - "tunnel-agent": "0.6.0", - "uuid": "3.2.1" - }, - "dependencies": { - "aws-sign2": { - "version": "0.7.0", - "bundled": true - }, - "aws4": { - "version": "1.6.0", - "bundled": true - }, - "caseless": { - "version": "0.12.0", - "bundled": true - }, - "combined-stream": { - "version": "1.0.6", - "bundled": true, - "requires": { - "delayed-stream": "1.0.0" - }, - "dependencies": { - "delayed-stream": { - "version": "1.0.0", - "bundled": true - } - } - }, - "extend": { - "version": "3.0.1", - "bundled": true - }, - "forever-agent": { - "version": "0.6.1", - "bundled": true - }, - "form-data": { - "version": "2.3.2", - "bundled": true, - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.6", - "mime-types": "2.1.18" - }, - "dependencies": { - "asynckit": { - "version": "0.4.0", - "bundled": true - } - } - }, - "har-validator": { - "version": "5.0.3", - "bundled": true, - "requires": { - "ajv": "5.5.2", - "har-schema": "2.0.0" - }, - "dependencies": { - "ajv": { - "version": "5.5.2", - "bundled": true, - "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.1.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" - }, - "dependencies": { - "co": { - "version": "4.6.0", - "bundled": true - }, - "fast-deep-equal": { - "version": "1.1.0", - "bundled": true - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "bundled": true - }, - "json-schema-traverse": { - "version": "0.3.1", - "bundled": true - } - } - }, - "har-schema": { - "version": "2.0.0", - "bundled": true - } - } - }, - "hawk": { - "version": "6.0.2", - "bundled": true, - "requires": { - "boom": "4.3.1", - "cryptiles": "3.1.2", - "hoek": "4.2.1", - "sntp": "2.1.0" - }, - "dependencies": { - "boom": { - "version": "4.3.1", - "bundled": true, - "requires": { - "hoek": "4.2.1" - } - }, - "cryptiles": { - "version": "3.1.2", - "bundled": true, - "requires": { - "boom": "5.2.0" - }, - "dependencies": { - "boom": { - "version": "5.2.0", - "bundled": true, - "requires": { - "hoek": "4.2.1" - } - } - } - }, - "hoek": { - "version": "4.2.1", - "bundled": true - }, - "sntp": { - "version": "2.1.0", - "bundled": true, - "requires": { - "hoek": "4.2.1" - } - } - } - }, - "http-signature": { - "version": "1.2.0", - "bundled": true, - "requires": { - "assert-plus": "1.0.0", - "jsprim": "1.4.1", - "sshpk": "1.14.1" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true - }, - "jsprim": { - "version": "1.4.1", - "bundled": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - }, - "dependencies": { - "extsprintf": { - "version": "1.3.0", - "bundled": true - }, - "json-schema": { - "version": "0.2.3", - "bundled": true - }, - "verror": { - "version": "1.10.0", - "bundled": true, - "requires": { - "assert-plus": "1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "1.3.0" - }, - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "bundled": true - } - } - } - } - }, - "sshpk": { - "version": "1.14.1", - "bundled": true, - "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" - }, - "dependencies": { - "asn1": { - "version": "0.2.3", - "bundled": true - }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "bundled": true, - "optional": true, - "requires": { - "tweetnacl": "0.14.5" - } - }, - "dashdash": { - "version": "1.14.1", - "bundled": true, - "requires": { - "assert-plus": "1.0.0" - } - }, - "ecc-jsbn": { - "version": "0.1.1", - "bundled": true, - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "getpass": { - "version": "0.1.7", - "bundled": true, - "requires": { - "assert-plus": "1.0.0" - } - }, - "jsbn": { - "version": "0.1.1", - "bundled": true, - "optional": true - }, - "tweetnacl": { - "version": "0.14.5", - "bundled": true, - "optional": true - } - } - } - } - }, - "is-typedarray": { - "version": "1.0.0", - "bundled": true - }, - "isstream": { - "version": "0.1.2", - "bundled": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "bundled": true - }, - "mime-types": { - "version": "2.1.18", - "bundled": true, - "requires": { - "mime-db": "1.33.0" - }, - "dependencies": { - "mime-db": { - "version": "1.33.0", - "bundled": true - } - } - }, - "oauth-sign": { - "version": "0.8.2", - "bundled": true - }, - "performance-now": { - "version": "2.1.0", - "bundled": true - }, - "qs": { - "version": "6.5.1", - "bundled": true - }, - "stringstream": { - "version": "0.0.5", - "bundled": true - }, - "tough-cookie": { - "version": "2.3.4", - "bundled": true, - "requires": { - "punycode": "1.4.1" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "bundled": true - } - } - }, - "tunnel-agent": { - "version": "0.6.0", - "bundled": true, - "requires": { - "safe-buffer": "5.1.2" - } - } - } - }, - "retry": { - "version": "0.12.0", - "bundled": true - }, - "rimraf": { - "version": "2.6.2", - "bundled": true, - "requires": { - "glob": "7.1.2" - } - }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true - }, - "semver": { - "version": "5.5.0", - "bundled": true - }, - "sha": { - "version": "2.0.1", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11", - "readable-stream": "2.3.6" - } - }, - "slide": { - "version": "1.1.6", - "bundled": true - }, - "sorted-object": { - "version": "2.0.1", - "bundled": true - }, - "sorted-union-stream": { - "version": "2.1.3", - "bundled": true, - "requires": { - "from2": "1.3.0", - "stream-iterate": "1.2.0" - }, - "dependencies": { - "from2": { - "version": "1.3.0", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "1.1.14" - }, - "dependencies": { - "readable-stream": { - "version": "1.1.14", - "bundled": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - }, - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "bundled": true - }, - "isarray": { - "version": "0.0.1", - "bundled": true - }, - "string_decoder": { - "version": "0.10.31", - "bundled": true - } - } - } - } - }, - "stream-iterate": { - "version": "1.2.0", - "bundled": true, - "requires": { - "readable-stream": "2.3.6", - "stream-shift": "1.0.0" - }, - "dependencies": { - "stream-shift": { - "version": "1.0.0", - "bundled": true - } - } - } - } - }, - "ssri": { - "version": "5.3.0", - "bundled": true, - "requires": { - "safe-buffer": "5.1.2" - } - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "requires": { - "ansi-regex": "3.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true - } - } - }, - "tar": { - "version": "4.4.2", - "bundled": true, - "requires": { - "chownr": "1.0.1", - "fs-minipass": "1.2.5", - "minipass": "2.2.4", - "minizlib": "1.1.0", - "mkdirp": "0.5.1", - "safe-buffer": "5.1.2", - "yallist": "3.0.2" - }, - "dependencies": { - "fs-minipass": { - "version": "1.2.5", - "bundled": true, - "requires": { - "minipass": "2.2.4" - } - }, - "minipass": { - "version": "2.2.4", - "bundled": true, - "requires": { - "safe-buffer": "5.1.2", - "yallist": "3.0.2" - } - }, - "minizlib": { - "version": "1.1.0", - "bundled": true, - "requires": { - "minipass": "2.2.4" - } - }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true - }, - "yallist": { - "version": "3.0.2", - "bundled": true - } - } - }, - "text-table": { - "version": "0.2.0", - "bundled": true - }, - "tiny-relative-date": { - "version": "1.3.0", - "bundled": true - }, - "uid-number": { - "version": "0.0.6", - "bundled": true - }, - "umask": { - "version": "1.1.0", - "bundled": true - }, - "unique-filename": { - "version": "1.1.0", - "bundled": true, - "requires": { - "unique-slug": "2.0.0" - }, - "dependencies": { - "unique-slug": { - "version": "2.0.0", - "bundled": true, - "requires": { - "imurmurhash": "0.1.4" - } - } - } - }, - "unpipe": { - "version": "1.0.0", - "bundled": true - }, - "update-notifier": { - "version": "2.5.0", - "bundled": true, - "requires": { - "boxen": "1.3.0", - "chalk": "2.4.1", - "configstore": "3.1.2", - "import-lazy": "2.1.0", - "is-ci": "1.1.0", - "is-installed-globally": "0.1.0", - "is-npm": "1.0.0", - "latest-version": "3.1.0", - "semver-diff": "2.1.0", - "xdg-basedir": "3.0.0" - }, - "dependencies": { - "boxen": { - "version": "1.3.0", - "bundled": true, - "requires": { - "ansi-align": "2.0.0", - "camelcase": "4.1.0", - "chalk": "2.4.1", - "cli-boxes": "1.0.0", - "string-width": "2.1.1", - "term-size": "1.2.0", - "widest-line": "2.0.0" - }, - "dependencies": { - "ansi-align": { - "version": "2.0.0", - "bundled": true, - "requires": { - "string-width": "2.1.1" - } - }, - "camelcase": { - "version": "4.1.0", - "bundled": true - }, - "cli-boxes": { - "version": "1.0.0", - "bundled": true - }, - "string-width": { - "version": "2.1.1", - "bundled": true, - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "2.0.0", - "bundled": true - } - } - }, - "term-size": { - "version": "1.2.0", - "bundled": true, - "requires": { - "execa": "0.7.0" - }, - "dependencies": { - "execa": { - "version": "0.7.0", - "bundled": true, - "requires": { - "cross-spawn": "5.1.0", - "get-stream": "3.0.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "bundled": true, - "requires": { - "lru-cache": "4.1.2", - "shebang-command": "1.2.0", - "which": "1.3.0" - }, - "dependencies": { - "shebang-command": { - "version": "1.2.0", - "bundled": true, - "requires": { - "shebang-regex": "1.0.0" - }, - "dependencies": { - "shebang-regex": { - "version": "1.0.0", - "bundled": true - } - } - } - } - }, - "get-stream": { - "version": "3.0.0", - "bundled": true - }, - "is-stream": { - "version": "1.1.0", - "bundled": true - }, - "npm-run-path": { - "version": "2.0.2", - "bundled": true, - "requires": { - "path-key": "2.0.1" - }, - "dependencies": { - "path-key": { - "version": "2.0.1", - "bundled": true - } - } - }, - "p-finally": { - "version": "1.0.0", - "bundled": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true - }, - "strip-eof": { - "version": "1.0.0", - "bundled": true - } - } - } - } - }, - "widest-line": { - "version": "2.0.0", - "bundled": true, - "requires": { - "string-width": "2.1.1" - } - } - } - }, - "chalk": { - "version": "2.4.1", - "bundled": true, - "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "bundled": true, - "requires": { - "color-convert": "1.9.1" - }, - "dependencies": { - "color-convert": { - "version": "1.9.1", - "bundled": true, - "requires": { - "color-name": "1.1.3" - }, - "dependencies": { - "color-name": { - "version": "1.1.3", - "bundled": true - } - } - } - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "bundled": true - }, - "supports-color": { - "version": "5.4.0", - "bundled": true, - "requires": { - "has-flag": "3.0.0" - }, - "dependencies": { - "has-flag": { - "version": "3.0.0", - "bundled": true - } - } - } - } - }, - "configstore": { - "version": "3.1.2", - "bundled": true, - "requires": { - "dot-prop": "4.2.0", - "graceful-fs": "4.1.11", - "make-dir": "1.2.0", - "unique-string": "1.0.0", - "write-file-atomic": "2.3.0", - "xdg-basedir": "3.0.0" - }, - "dependencies": { - "dot-prop": { - "version": "4.2.0", - "bundled": true, - "requires": { - "is-obj": "1.0.1" - }, - "dependencies": { - "is-obj": { - "version": "1.0.1", - "bundled": true - } - } - }, - "make-dir": { - "version": "1.2.0", - "bundled": true, - "requires": { - "pify": "3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "bundled": true - } - } - }, - "unique-string": { - "version": "1.0.0", - "bundled": true, - "requires": { - "crypto-random-string": "1.0.0" - }, - "dependencies": { - "crypto-random-string": { - "version": "1.0.0", - "bundled": true - } - } - } - } - }, - "import-lazy": { - "version": "2.1.0", - "bundled": true - }, - "is-ci": { - "version": "1.1.0", - "bundled": true, - "requires": { - "ci-info": "1.1.3" - }, - "dependencies": { - "ci-info": { - "version": "1.1.3", - "bundled": true - } - } - }, - "is-installed-globally": { - "version": "0.1.0", - "bundled": true, - "requires": { - "global-dirs": "0.1.1", - "is-path-inside": "1.0.1" - }, - "dependencies": { - "global-dirs": { - "version": "0.1.1", - "bundled": true, - "requires": { - "ini": "1.3.5" - } - }, - "is-path-inside": { - "version": "1.0.1", - "bundled": true, - "requires": { - "path-is-inside": "1.0.2" - } - } - } - }, - "is-npm": { - "version": "1.0.0", - "bundled": true - }, - "latest-version": { - "version": "3.1.0", - "bundled": true, - "requires": { - "package-json": "4.0.1" - }, - "dependencies": { - "package-json": { - "version": "4.0.1", - "bundled": true, - "requires": { - "got": "6.7.1", - "registry-auth-token": "3.3.2", - "registry-url": "3.1.0", - "semver": "5.5.0" - }, - "dependencies": { - "got": { - "version": "6.7.1", - "bundled": true, - "requires": { - "create-error-class": "3.0.2", - "duplexer3": "0.1.4", - "get-stream": "3.0.0", - "is-redirect": "1.0.0", - "is-retry-allowed": "1.1.0", - "is-stream": "1.1.0", - "lowercase-keys": "1.0.1", - "safe-buffer": "5.1.2", - "timed-out": "4.0.1", - "unzip-response": "2.0.1", - "url-parse-lax": "1.0.0" - }, - "dependencies": { - "create-error-class": { - "version": "3.0.2", - "bundled": true, - "requires": { - "capture-stack-trace": "1.0.0" - }, - "dependencies": { - "capture-stack-trace": { - "version": "1.0.0", - "bundled": true - } - } - }, - "duplexer3": { - "version": "0.1.4", - "bundled": true - }, - "get-stream": { - "version": "3.0.0", - "bundled": true - }, - "is-redirect": { - "version": "1.0.0", - "bundled": true - }, - "is-retry-allowed": { - "version": "1.1.0", - "bundled": true - }, - "is-stream": { - "version": "1.1.0", - "bundled": true - }, - "lowercase-keys": { - "version": "1.0.1", - "bundled": true - }, - "timed-out": { - "version": "4.0.1", - "bundled": true - }, - "unzip-response": { - "version": "2.0.1", - "bundled": true - }, - "url-parse-lax": { - "version": "1.0.0", - "bundled": true, - "requires": { - "prepend-http": "1.0.4" - }, - "dependencies": { - "prepend-http": { - "version": "1.0.4", - "bundled": true - } - } - } - } - }, - "registry-auth-token": { - "version": "3.3.2", - "bundled": true, - "requires": { - "rc": "1.2.7", - "safe-buffer": "5.1.2" - }, - "dependencies": { - "rc": { - "version": "1.2.7", - "bundled": true, - "requires": { - "deep-extend": "0.5.1", - "ini": "1.3.5", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" - }, - "dependencies": { - "deep-extend": { - "version": "0.5.1", - "bundled": true - }, - "minimist": { - "version": "1.2.0", - "bundled": true - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true - } - } - } - } - }, - "registry-url": { - "version": "3.1.0", - "bundled": true, - "requires": { - "rc": "1.2.7" - }, - "dependencies": { - "rc": { - "version": "1.2.7", - "bundled": true, - "requires": { - "deep-extend": "0.5.1", - "ini": "1.3.5", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" - }, - "dependencies": { - "deep-extend": { - "version": "0.5.1", - "bundled": true - }, - "minimist": { - "version": "1.2.0", - "bundled": true - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true - } - } - } - } - } - } - } - } - }, - "semver-diff": { - "version": "2.1.0", - "bundled": true, - "requires": { - "semver": "5.5.0" - } - }, - "xdg-basedir": { - "version": "3.0.0", - "bundled": true - } - } - }, - "uuid": { - "version": "3.2.1", - "bundled": true - }, - "validate-npm-package-license": { - "version": "3.0.3", - "bundled": true, - "requires": { - "spdx-correct": "3.0.0", - "spdx-expression-parse": "3.0.0" - }, - "dependencies": { - "spdx-correct": { - "version": "3.0.0", - "bundled": true, - "requires": { - "spdx-expression-parse": "3.0.0", - "spdx-license-ids": "3.0.0" - }, - "dependencies": { - "spdx-license-ids": { - "version": "3.0.0", - "bundled": true - } - } - }, - "spdx-expression-parse": { - "version": "3.0.0", - "bundled": true, - "requires": { - "spdx-exceptions": "2.1.0", - "spdx-license-ids": "3.0.0" - }, - "dependencies": { - "spdx-exceptions": { - "version": "2.1.0", - "bundled": true - }, - "spdx-license-ids": { - "version": "3.0.0", - "bundled": true - } - } - } - } - }, - "validate-npm-package-name": { - "version": "3.0.0", - "bundled": true, - "requires": { - "builtins": "1.0.3" - }, - "dependencies": { - "builtins": { - "version": "1.0.3", - "bundled": true - } - } - }, - "which": { - "version": "1.3.0", - "bundled": true, - "requires": { - "isexe": "2.0.0" - }, - "dependencies": { - "isexe": { - "version": "2.0.0", - "bundled": true - } - } - }, - "worker-farm": { - "version": "1.6.0", - "bundled": true, - "requires": { - "errno": "0.1.7" - }, - "dependencies": { - "errno": { - "version": "0.1.7", - "bundled": true, - "requires": { - "prr": "1.0.1" - }, - "dependencies": { - "prr": { - "version": "1.0.1", - "bundled": true - } - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true - }, - "write-file-atomic": { - "version": "2.3.0", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11", - "imurmurhash": "0.1.4", - "signal-exit": "3.0.2" - }, - "dependencies": { - "signal-exit": { - "version": "3.0.2", - "bundled": true - } - } - } - } - } - } - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "dev": true, - "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" - } - }, - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true, - "requires": { - "is-glob": "2.0.1" - } - }, - "glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", - "dev": true - }, - "glob2base": { - "version": "0.0.12", - "resolved": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz", - "integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=", - "dev": true, - "requires": { - "find-index": "0.1.1" - } - }, - "global": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz", - "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", - "requires": { - "min-document": "2.19.0", - "process": "0.5.2" - }, - "dependencies": { - "process": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", - "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=" - } - } - }, - "global-dirs": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", - "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", - "dev": true, - "requires": { - "ini": "1.3.5" - } - }, - "global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "dev": true, - "requires": { - "global-prefix": "1.0.2", - "is-windows": "1.0.2", - "resolve-dir": "1.0.1" - } - }, - "global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", - "dev": true, - "requires": { - "expand-tilde": "2.0.2", - "homedir-polyfill": "1.0.1", - "ini": "1.3.5", - "is-windows": "1.0.2", - "which": "1.3.0" - } - }, - "globals": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.5.0.tgz", - "integrity": "sha512-hYyf+kI8dm3nORsiiXUQigOU62hDLfJ9G01uyGMxhc6BKsircrUhC4uJPQPUSuq2GrTmiiEt7ewxlMdBewfmKQ==", - "dev": true - }, - "globby": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", - "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", - "dev": true, - "requires": { - "array-union": "1.0.2", - "dir-glob": "2.0.0", - "glob": "7.1.2", - "ignore": "3.3.8", - "pify": "3.0.0", - "slash": "1.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, - "globjoin": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", - "integrity": "sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=", - "dev": true - }, - "gonzales-pe": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.2.3.tgz", - "integrity": "sha512-Kjhohco0esHQnOiqqdJeNz/5fyPkOMD/d6XVjwTAoPGUFh0mCollPUTUTa2OZy4dYNAqlPIQdTiNzJTWdd9Htw==", - "dev": true, - "requires": { - "minimist": "1.1.3" - }, - "dependencies": { - "minimist": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.1.3.tgz", - "integrity": "sha1-O+39kaktOQFvz6ocaB6Pqhoe/ag=", - "dev": true - } - } - }, - "got": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", - "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", - "dev": true, - "requires": { - "create-error-class": "3.0.2", - "duplexer3": "0.1.4", - "get-stream": "3.0.0", - "is-redirect": "1.0.0", - "is-retry-allowed": "1.1.0", - "is-stream": "1.1.0", - "lowercase-keys": "1.0.1", - "safe-buffer": "5.1.1", - "timed-out": "4.0.1", - "unzip-response": "2.0.1", - "url-parse-lax": "1.0.0" - } - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - }, - "graceful-process": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/graceful-process/-/graceful-process-1.2.0.tgz", - "integrity": "sha512-sH5WMY74gxObrKf+5SaqyI1sYv4AF1W5odeW+rA+kHuvKEiqaRgVIUKV2O/CT1NQr6zIhgbtEGOgJORjEHEcdw==", - "dev": true, - "requires": { - "is-type-of": "1.2.0", - "once": "1.4.0" - } - }, - "graceful-readlink": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", - "dev": true - }, - "graphlib": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.5.tgz", - "integrity": "sha512-XvtbqCcw+EM5SqQrIetIKKD+uZVNQtDPD1goIg7K73RuRZtVI5rYMdcCVSHm/AS1sCBZ7vt0p5WgXouucHQaOA==", - "requires": { - "lodash": "4.17.4" - } - }, - "growly": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", - "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", - "dev": true - }, - "gzip-size": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-3.0.0.tgz", - "integrity": "sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA=", - "dev": true, - "requires": { - "duplexer": "0.1.1" - } - }, - "hammerjs": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", - "integrity": "sha1-BO93hiz/K7edMPdpIJWTAiK/YPE=" - }, - "handle-thing": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz", - "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=", - "dev": true - }, - "handlebars": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", - "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", - "dev": true, - "requires": { - "async": "1.5.2", - "optimist": "0.6.1", - "source-map": "0.4.4", - "uglify-js": "2.8.29" - }, - "dependencies": { - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - }, - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "dev": true, - "requires": { - "amdefine": "1.0.1" - } - } - } - }, - "har-schema": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", - "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", - "dev": true, - "optional": true - }, - "har-validator": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", - "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", - "dev": true, - "optional": true, - "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" - }, - "dependencies": { - "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "dev": true, - "optional": true, - "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" - } - } - } - }, - "harmony-reflect": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.0.tgz", - "integrity": "sha512-0kZ1XcoelFOLEjEtvWAZyq/1S55eDSieWEJwme311MNVNcRpvjlr2zA66kBV6WAB8C1XI1p1cXCnFPqd1BxlPg==", - "dev": true - }, - "has": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", - "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", - "requires": { - "function-bind": "1.1.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "requires": { - "ansi-regex": "2.1.1" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", - "dev": true - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "requires": { - "get-value": "2.0.6", - "has-values": "1.0.0", - "isobject": "3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.1.1" - } - }, - "hash.js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", - "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", - "dev": true, - "requires": { - "inherits": "2.0.3", - "minimalistic-assert": "1.0.1" - } - }, - "hawk": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", - "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", - "dev": true, - "optional": true, - "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" - } - }, - "he": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", - "dev": true - }, - "history": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/history/-/history-4.7.2.tgz", - "integrity": "sha512-1zkBRWW6XweO0NBcjiphtVJVsIQ+SXF29z9DVkceeaSLVMFXHool+fdCZD4spDCfZJCILPILc3bm7Bc+HRi0nA==", - "requires": { - "invariant": "2.2.2", - "loose-envify": "1.3.1", - "resolve-pathname": "2.2.0", - "value-equal": "0.4.0", - "warning": "3.0.0" - } - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "requires": { - "hash.js": "1.1.3", - "minimalistic-assert": "1.0.1", - "minimalistic-crypto-utils": "1.0.1" - } - }, - "hoek": { - "version": "2.16.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", - "dev": true - }, - "hoist-non-react-statics": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.0.tgz", - "integrity": "sha512-6Bl6XsDT1ntE0lHbIhr4Kp2PGcleGZ66qu5Jqk8lc0Xc/IeG6gVLmwUGs/K0Us+L8VWoKgj0uWdPMataOsm31w==" - }, - "home-or-tmp": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-3.0.0.tgz", - "integrity": "sha1-V6j+JM8zzdUkhgoVgh3cJchmcfs=", - "dev": true - }, - "homedir-polyfill": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", - "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", - "dev": true, - "requires": { - "parse-passwd": "1.0.0" - } - }, - "hosted-git-info": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", - "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", - "dev": true - }, - "hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "obuf": "1.1.2", - "readable-stream": "2.3.6", - "wbuf": "1.7.3" - } - }, - "html-comment-regex": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.1.tgz", - "integrity": "sha1-ZouTd26q5V696POtRkswekljYl4=", - "dev": true - }, - "html-encoding-sniffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", - "dev": true, - "requires": { - "whatwg-encoding": "1.0.3" - } - }, - "html-entities": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", - "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", - "dev": true - }, - "html-minifier": { - "version": "3.5.15", - "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.15.tgz", - "integrity": "sha512-OZa4rfb6tZOZ3Z8Xf0jKxXkiDcFWldQePGYFDcgKqES2sXeWaEv9y6QQvWUtX3ySI3feApQi5uCsHLINQ6NoAw==", - "dev": true, - "requires": { - "camel-case": "3.0.0", - "clean-css": "4.1.11", - "commander": "2.15.1", - "he": "1.1.1", - "param-case": "2.1.1", - "relateurl": "0.2.7", - "uglify-js": "3.3.25" - }, - "dependencies": { - "commander": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "uglify-js": { - "version": "3.3.25", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.25.tgz", - "integrity": "sha512-hobogryjDV36VrLK3Y69ou4REyrTApzUblVFmdQOYRe8cYaSmFJXMb4dR9McdvYDSbeNdzUgYr2YVukJaErJcA==", - "dev": true, - "requires": { - "commander": "2.15.1", - "source-map": "0.6.1" - } - } - } - }, - "html-tags": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", - "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=", - "dev": true - }, - "html-webpack-plugin": { - "version": "2.30.1", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-2.30.1.tgz", - "integrity": "sha1-f5xCG36pHsRg9WUn1430hO51N9U=", - "dev": true, - "requires": { - "bluebird": "3.5.1", - "html-minifier": "3.5.15", - "loader-utils": "0.2.17", - "lodash": "4.17.4", - "pretty-error": "2.1.1", - "toposort": "1.0.7" - }, - "dependencies": { - "loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", - "dev": true, - "requires": { - "big.js": "3.2.0", - "emojis-list": "2.1.0", - "json5": "0.5.1", - "object-assign": "4.1.1" - } - } - } - }, - "htmlparser2": { - "version": "3.9.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", - "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", - "dev": true, - "requires": { - "domelementtype": "1.3.0", - "domhandler": "2.4.1", - "domutils": "1.5.1", - "entities": "1.1.1", - "inherits": "2.0.3", - "readable-stream": "2.3.3" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" - } - }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "dev": true, - "requires": { - "safe-buffer": "5.1.1" - } - } - } - }, - "http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", - "dev": true - }, - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "dev": true, - "requires": { - "depd": "1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": "1.4.0" - } - }, - "http-parser-js": { - "version": "0.4.12", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.12.tgz", - "integrity": "sha1-uc+/Sizybw/DSxDKFImid3HjR08=", - "dev": true - }, - "http-proxy": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz", - "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==", - "dev": true, - "requires": { - "eventemitter3": "3.1.0", - "follow-redirects": "1.2.5", - "requires-port": "1.0.0" - } - }, - "http-proxy-middleware": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz", - "integrity": "sha1-ZC6ISIUdZvCdTxJJEoRtuutBuDM=", - "dev": true, - "requires": { - "http-proxy": "1.17.0", - "is-glob": "3.1.0", - "lodash": "4.17.4", - "micromatch": "2.3.11" - }, - "dependencies": { - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "2.1.1" - } - } - } - }, - "http-signature": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", - "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", - "dev": true, - "optional": true, - "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.1", - "sshpk": "1.14.1" - } - }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "dev": true - }, - "https-proxy-agent": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz", - "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==", - "optional": true, - "requires": { - "agent-base": "4.2.0", - "debug": "3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "optional": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "husky": { - "version": "0.14.3", - "resolved": "https://registry.npmjs.org/husky/-/husky-0.14.3.tgz", - "integrity": "sha512-e21wivqHpstpoiWA/Yi8eFti8E+sQDSS53cpJsPptPs295QTOQR0ZwnHo2TXy1XOpZFD9rPOd3NpmqTK6uMLJA==", - "dev": true, - "requires": { - "is-ci": "1.0.10", - "normalize-path": "1.0.0", - "strip-indent": "2.0.0" - }, - "dependencies": { - "normalize-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-1.0.0.tgz", - "integrity": "sha1-MtDkcvkf80VwHBWoMRAY07CpA3k=", - "dev": true - }, - "strip-indent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", - "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", - "dev": true - } - } - }, - "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" - }, - "icss-replace-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", - "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", - "dev": true - }, - "icss-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", - "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", - "dev": true, - "requires": { - "postcss": "6.0.22" - } - }, - "identity-obj-proxy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", - "integrity": "sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ=", - "dev": true, - "requires": { - "harmony-reflect": "1.6.0" - } - }, - "ieee754": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.11.tgz", - "integrity": "sha512-VhDzCKN7K8ufStx/CLj5/PDTMgph+qwN5Pkd5i0sGnVwk56zJ0lkT8Qzi1xqWLS0Wp29DgDtNeS7v8/wMoZeHg==", - "dev": true - }, - "iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", - "dev": true - }, - "ignore": { - "version": "3.3.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.8.tgz", - "integrity": "sha512-pUh+xUQQhQzevjRHHFqqcTy0/dP/kS9I8HSrUydhihjuD09W6ldVWFtIrwhXdUJHis3i2rZNqEHpZH/cbinFbg==", - "dev": true - }, - "image-size": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", - "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", - "dev": true, - "optional": true - }, - "immutable": { - "version": "3.7.6", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.7.6.tgz", - "integrity": "sha1-E7TTyxK++hVIKib+Gy665kAHHks=" - }, - "import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", - "dev": true - }, - "import-local": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz", - "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==", - "dev": true, - "requires": { - "pkg-dir": "2.0.0", - "resolve-cwd": "2.0.0" - }, - "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "2.0.0" - } - }, - "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "dev": true, - "requires": { - "find-up": "2.1.0" - } - } - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "dev": true, - "requires": { - "repeating": "2.0.1" - } - }, - "indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", - "dev": true - }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", - "dev": true - }, - "inquirer": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", - "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", - "dev": true, - "requires": { - "ansi-escapes": "3.1.0", - "chalk": "2.4.1", - "cli-cursor": "2.1.0", - "cli-width": "2.2.0", - "external-editor": "2.2.0", - "figures": "2.0.0", - "lodash": "4.17.4", - "mute-stream": "0.0.7", - "run-async": "2.3.0", - "rx-lite": "4.0.8", - "rx-lite-aggregates": "4.0.8", - "string-width": "2.1.1", - "strip-ansi": "4.0.0", - "through": "2.3.8" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "3.0.0" - } - } - } - }, - "internal-ip": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-1.2.0.tgz", - "integrity": "sha1-rp+/k7mEh4eF1QqN4bNWlWBYz1w=", - "dev": true, - "requires": { - "meow": "3.7.0" - } - }, - "interpret": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", - "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", - "dev": true - }, - "invariant": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", - "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", - "requires": { - "loose-envify": "1.3.1" - } - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true - }, - "ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", - "dev": true - }, - "ipaddr.js": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.6.0.tgz", - "integrity": "sha1-4/o1e3c9phnybpXwSdBVxyeW+Gs=", - "dev": true - }, - "is-absolute-url": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", - "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", - "dev": true - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "is-ali-env": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-ali-env/-/is-ali-env-0.1.3.tgz", - "integrity": "sha512-shgfrdy8XKTUCAT5vWBgP+DisuV87+eVVBuDoIwy0PIq/HtDDijsV5cCEuzzzJZvI8zkkjuZrkBQvpjeib0YIQ==", - "dev": true - }, - "is-alphabetical": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.1.tgz", - "integrity": "sha1-x3B5zJHU76x3W+EDS/LSQ/lebwg=", - "dev": true - }, - "is-alphanumeric": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz", - "integrity": "sha1-Spzvcdr0wAHB2B1j0UDPU/1oifQ=", - "dev": true - }, - "is-alphanumerical": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.1.tgz", - "integrity": "sha1-37SqTRCF4zvbYcLe6cgOnGwZ9Ts=", - "dev": true, - "requires": { - "is-alphabetical": "1.0.1", - "is-decimal": "1.0.1" - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "requires": { - "binary-extensions": "1.11.0" - } - }, - "is-boolean-object": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.0.0.tgz", - "integrity": "sha1-mPiygDBoQhmpXzdc+9iM40Bd/5M=", - "dev": true - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "dev": true, - "requires": { - "builtin-modules": "1.1.1" - } - }, - "is-callable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", - "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=" - }, - "is-ci": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.0.10.tgz", - "integrity": "sha1-9zkzayYyNlBhqdSCcM1WrjNpMY4=", - "dev": true, - "requires": { - "ci-info": "1.1.1" - } - }, - "is-class": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/is-class/-/is-class-0.0.4.tgz", - "integrity": "sha1-4FdFFwW7NOOePjNZjJOpg3KWtzY=", - "dev": true - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" - }, - "is-decimal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.1.tgz", - "integrity": "sha1-9ftqlJlq2ejjdh+/vQkfH8qMToI=", - "dev": true - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", - "dev": true - }, - "is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", - "dev": true - }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "dev": true, - "requires": { - "is-primitive": "2.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "is-function": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.1.tgz", - "integrity": "sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU=" - }, - "is-generator-fn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-1.0.0.tgz", - "integrity": "sha1-lp1J4bszKfa7fwkIm+JleLLd1Go=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "1.0.0" - } - }, - "is-hexadecimal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.1.tgz", - "integrity": "sha1-bghLvJIGH7sJcexYts5tQE4k2mk=", - "dev": true - }, - "is-installed-globally": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", - "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", - "dev": true, - "requires": { - "global-dirs": "0.1.1", - "is-path-inside": "1.0.1" - } - }, - "is-negative-zero": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.0.tgz", - "integrity": "sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=" - }, - "is-npm": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", - "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", - "dev": true - }, - "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "is-number-object": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.3.tgz", - "integrity": "sha1-8mWrian0RQNO9q/xWo8AsA9VF5k=", - "dev": true - }, - "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", - "dev": true - }, - "is-observable": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-0.2.0.tgz", - "integrity": "sha1-s2ExHYPG5dcmyr9eJQsCNxBvWuI=", - "dev": true, - "requires": { - "symbol-observable": "0.2.4" - }, - "dependencies": { - "symbol-observable": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-0.2.4.tgz", - "integrity": "sha1-lag9smGG1q9+ehjb2XYKL4bQj0A=", - "dev": true - } - } - }, - "is-odd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", - "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", - "dev": true, - "requires": { - "is-number": "4.0.0" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true - } - } - }, - "is-path-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", - "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", - "dev": true - }, - "is-path-in-cwd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", - "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", - "dev": true, - "requires": { - "is-path-inside": "1.0.1" - } - }, - "is-path-inside": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", - "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", - "dev": true, - "requires": { - "path-is-inside": "1.0.2" - } - }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "requires": { - "isobject": "3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } - } - }, - "is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", - "dev": true - }, - "is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", - "dev": true - }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", - "dev": true - }, - "is-redirect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", - "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", - "dev": true - }, - "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", - "requires": { - "has": "1.0.1" - } - }, - "is-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", - "dev": true - }, - "is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", - "dev": true - }, - "is-retry-allowed": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", - "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", - "dev": true - }, - "is-root": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-root/-/is-root-1.0.0.tgz", - "integrity": "sha1-B7bCM7w5TNnQK6FclmvWZg1jQtU=", - "dev": true - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" - }, - "is-string": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.4.tgz", - "integrity": "sha1-zDqbaYV9Yh6WNyWiTK7shzuCbmQ=", - "dev": true - }, - "is-subset": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz", - "integrity": "sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY=", - "dev": true - }, - "is-supported-regexp-flag": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-supported-regexp-flag/-/is-supported-regexp-flag-1.0.1.tgz", - "integrity": "sha512-3vcJecUUrpgCqc/ca0aWeNu64UGgxcvO60K/Fkr1N6RSvfGCTU60UKN68JDmKokgba0rFFJs12EnzOQa14ubKQ==", - "dev": true - }, - "is-svg": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", - "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=", - "dev": true, - "requires": { - "html-comment-regex": "1.1.1" - } - }, - "is-symbol": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", - "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=" - }, - "is-type-of": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-type-of/-/is-type-of-1.2.0.tgz", - "integrity": "sha512-10ezBXuEDp3Fp/jPCaVd4hSrAEj2lPyr1LT7+cWi9HCLd15wbh9X8dJfTDB+ZgkZSCGTG2TF6f61ugI5mSlhDA==", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "is-class": "0.0.4", - "isstream": "0.1.2" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, - "is-whitespace-character": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.1.tgz", - "integrity": "sha1-muAXbzKCtlRXoZks2whPil+DPjs=", - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, - "is-word-character": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.1.tgz", - "integrity": "sha1-WgP6HqkazopusMfNdw64bWXIvvs=", - "dev": true - }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true - }, - "is_js": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/is_js/-/is_js-0.9.0.tgz", - "integrity": "sha1-CrlFQFArp6+iTIVqqYVWFmnpxS0=" - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - }, - "isomorphic-fetch": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", - "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", - "requires": { - "node-fetch": "1.7.3", - "whatwg-fetch": "2.0.3" - } - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true - }, - "istanbul-api": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.3.1.tgz", - "integrity": "sha512-duj6AlLcsWNwUpfyfHt0nWIeRiZpuShnP40YTxOGQgtaN8fd6JYSxsvxUphTDy8V5MfDXo4s/xVCIIvVCO808g==", - "dev": true, - "requires": { - "async": "2.1.4", - "compare-versions": "3.2.1", - "fileset": "2.0.3", - "istanbul-lib-coverage": "1.2.0", - "istanbul-lib-hook": "1.2.0", - "istanbul-lib-instrument": "1.10.1", - "istanbul-lib-report": "1.1.4", - "istanbul-lib-source-maps": "1.2.4", - "istanbul-reports": "1.3.0", - "js-yaml": "3.7.0", - "mkdirp": "0.5.1", - "once": "1.4.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "istanbul-lib-source-maps": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.4.tgz", - "integrity": "sha512-UzuK0g1wyQijiaYQxj/CdNycFhAd2TLtO2obKQMTZrZ1jzEMRY3rvpASEKkaxbRR6brvdovfA03znPa/pXcejg==", - "dev": true, - "requires": { - "debug": "3.1.0", - "istanbul-lib-coverage": "1.2.0", - "mkdirp": "0.5.1", - "rimraf": "2.6.2", - "source-map": "0.5.7" - } - } - } - }, - "istanbul-lib-coverage": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz", - "integrity": "sha512-GvgM/uXRwm+gLlvkWHTjDAvwynZkL9ns15calTrmhGgowlwJBbWMYzWbKqE2DT6JDP1AFXKa+Zi0EkqNCUqY0A==", - "dev": true - }, - "istanbul-lib-hook": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.2.0.tgz", - "integrity": "sha512-p3En6/oGkFQV55Up8ZPC2oLxvgSxD8CzA0yBrhRZSh3pfv3OFj9aSGVC0yoerAi/O4u7jUVnOGVX1eVFM+0tmQ==", - "dev": true, - "requires": { - "append-transform": "0.4.0" - } - }, - "istanbul-lib-instrument": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.1.tgz", - "integrity": "sha512-1dYuzkOCbuR5GRJqySuZdsmsNKPL3PTuyPevQfoCXJePT9C8y1ga75neU+Tuy9+yS3G/dgx8wgOmp2KLpgdoeQ==", - "dev": true, - "requires": { - "babel-generator": "6.26.1", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "istanbul-lib-coverage": "1.2.0", - "semver": "5.4.1" - }, - "dependencies": { - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - } - } - }, - "istanbul-lib-report": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.4.tgz", - "integrity": "sha512-Azqvq5tT0U09nrncK3q82e/Zjkxa4tkFZv7E6VcqP0QCPn6oNljDPfrZEC/umNXds2t7b8sRJfs6Kmpzt8m2kA==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "1.2.0", - "mkdirp": "0.5.1", - "path-parse": "1.0.5", - "supports-color": "3.2.3" - }, - "dependencies": { - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "istanbul-lib-source-maps": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.3.tgz", - "integrity": "sha512-fDa0hwU/5sDXwAklXgAoCJCOsFsBplVQ6WBldz5UwaqOzmDhUK4nfuR7/G//G2lERlblUNJB8P6e8cXq3a7MlA==", - "dev": true, - "requires": { - "debug": "3.1.0", - "istanbul-lib-coverage": "1.2.0", - "mkdirp": "0.5.1", - "rimraf": "2.6.2", - "source-map": "0.5.7" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "istanbul-reports": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.3.0.tgz", - "integrity": "sha512-y2Z2IMqE1gefWUaVjrBm0mSKvUkaBy9Vqz8iwr/r40Y9hBbIteH5wqHG/9DLTfJ9xUnUT2j7A3+VVJ6EaYBllA==", - "dev": true, - "requires": { - "handlebars": "4.0.11" - } - }, - "jest-changed-files": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-22.4.3.tgz", - "integrity": "sha512-83Dh0w1aSkUNFhy5d2dvqWxi/y6weDwVVLU6vmK0cV9VpRxPzhTeGimbsbRDSnEoszhF937M4sDLLeS7Cu/Tmw==", - "dev": true, - "requires": { - "throat": "4.1.0" - } - }, - "jest-cli": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-22.4.3.tgz", - "integrity": "sha512-IiHybF0DJNqZPsbjn4Cy4vcqcmImpoFwNFnkehzVw8lTUSl4axZh5DHewu5bdpZF2Y5gUqFKYzH0FH4Qx2k+UA==", - "dev": true, - "requires": { - "ansi-escapes": "3.1.0", - "chalk": "2.4.1", - "exit": "0.1.2", - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "import-local": "1.0.0", - "is-ci": "1.0.10", - "istanbul-api": "1.3.1", - "istanbul-lib-coverage": "1.2.0", - "istanbul-lib-instrument": "1.10.1", - "istanbul-lib-source-maps": "1.2.3", - "jest-changed-files": "22.4.3", - "jest-config": "22.4.3", - "jest-environment-jsdom": "22.4.3", - "jest-get-type": "22.4.3", - "jest-haste-map": "22.4.3", - "jest-message-util": "22.4.3", - "jest-regex-util": "22.4.3", - "jest-resolve-dependencies": "22.4.3", - "jest-runner": "22.4.3", - "jest-runtime": "22.4.3", - "jest-snapshot": "22.4.3", - "jest-util": "22.4.3", - "jest-validate": "22.4.3", - "jest-worker": "22.4.3", - "micromatch": "2.3.11", - "node-notifier": "5.2.1", - "realpath-native": "1.0.0", - "rimraf": "2.6.2", - "slash": "1.0.0", - "string-length": "2.0.0", - "strip-ansi": "4.0.0", - "which": "1.3.0", - "yargs": "10.1.2" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" - } - }, - "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", - "dev": true, - "requires": { - "string-width": "2.1.1", - "strip-ansi": "4.0.0", - "wrap-ansi": "2.1.0" - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "2.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "3.0.0" - } - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true - }, - "yargs": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.1.2.tgz", - "integrity": "sha512-ivSoxqBGYOqQVruxD35+EyCFDYNEFL/Uo6FcOnz+9xZdZzK0Zzw4r4KhbrME1Oo2gOggwJod2MnsdamSG7H9ig==", - "dev": true, - "requires": { - "cliui": "4.1.0", - "decamelize": "1.2.0", - "find-up": "2.1.0", - "get-caller-file": "1.0.2", - "os-locale": "2.1.0", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", - "y18n": "3.2.1", - "yargs-parser": "8.1.0" - } - }, - "yargs-parser": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz", - "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==", - "dev": true, - "requires": { - "camelcase": "4.1.0" - } - } - } - }, - "jest-config": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-22.4.3.tgz", - "integrity": "sha512-KSg3EOToCgkX+lIvenKY7J8s426h6ahXxaUFJxvGoEk0562Z6inWj1TnKoGycTASwiLD+6kSYFALcjdosq9KIQ==", - "dev": true, - "requires": { - "chalk": "2.4.1", - "glob": "7.1.2", - "jest-environment-jsdom": "22.4.3", - "jest-environment-node": "22.4.3", - "jest-get-type": "22.4.3", - "jest-jasmine2": "22.4.3", - "jest-regex-util": "22.4.3", - "jest-resolve": "22.4.3", - "jest-util": "22.4.3", - "jest-validate": "22.4.3", - "pretty-format": "22.4.3" - }, - "dependencies": { - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" - } - } - } - }, - "jest-diff": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-22.4.3.tgz", - "integrity": "sha512-/QqGvCDP5oZOF6PebDuLwrB2BMD8ffJv6TAGAdEVuDx1+uEgrHpSFrfrOiMRx2eJ1hgNjlQrOQEHetVwij90KA==", - "dev": true, - "requires": { - "chalk": "2.4.1", - "diff": "3.5.0", - "jest-get-type": "22.4.3", - "pretty-format": "22.4.3" - }, - "dependencies": { - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" - } - } - } - }, - "jest-docblock": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-22.4.3.tgz", - "integrity": "sha512-uPKBEAw7YrEMcXueMKZXn/rbMxBiSv48fSqy3uEnmgOlQhSX+lthBqHb1fKWNVmFqAp9E/RsSdBfiV31LbzaOg==", - "dev": true, - "requires": { - "detect-newline": "2.1.0" - } - }, - "jest-environment-jsdom": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-22.4.3.tgz", - "integrity": "sha512-FviwfR+VyT3Datf13+ULjIMO5CSeajlayhhYQwpzgunswoaLIPutdbrnfUHEMyJCwvqQFaVtTmn9+Y8WCt6n1w==", - "dev": true, - "requires": { - "jest-mock": "22.4.3", - "jest-util": "22.4.3", - "jsdom": "11.10.0" - } - }, - "jest-environment-node": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-22.4.3.tgz", - "integrity": "sha512-reZl8XF6t/lMEuPWwo9OLfttyC26A5AMgDyEQ6DBgZuyfyeNUzYT8BFo6uxCCP/Av/b7eb9fTi3sIHFPBzmlRA==", - "dev": true, - "requires": { - "jest-mock": "22.4.3", - "jest-util": "22.4.3" - } - }, - "jest-get-type": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-22.4.3.tgz", - "integrity": "sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w==", - "dev": true - }, - "jest-haste-map": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-22.4.3.tgz", - "integrity": "sha512-4Q9fjzuPVwnaqGKDpIsCSoTSnG3cteyk2oNVjBX12HHOaF1oxql+uUiqZb5Ndu7g/vTZfdNwwy4WwYogLh29DQ==", - "dev": true, - "requires": { - "fb-watchman": "2.0.0", - "graceful-fs": "4.1.11", - "jest-docblock": "22.4.3", - "jest-serializer": "22.4.3", - "jest-worker": "22.4.3", - "micromatch": "2.3.11", - "sane": "2.5.2" - } - }, - "jest-jasmine2": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-22.4.3.tgz", - "integrity": "sha512-yZCPCJUcEY6R5KJB/VReo1AYI2b+5Ky+C+JA1v34jndJsRcLpU4IZX4rFJn7yDTtdNbO/nNqg+3SDIPNH2ecnw==", - "dev": true, - "requires": { - "chalk": "2.4.1", - "co": "4.6.0", - "expect": "22.4.3", - "graceful-fs": "4.1.11", - "is-generator-fn": "1.0.0", - "jest-diff": "22.4.3", - "jest-matcher-utils": "22.4.3", - "jest-message-util": "22.4.3", - "jest-snapshot": "22.4.3", - "jest-util": "22.4.3", - "source-map-support": "0.5.6" - }, - "dependencies": { - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-support": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.6.tgz", - "integrity": "sha512-N4KXEz7jcKqPf2b2vZF11lQIz9W5ZMuUcIOGj243lduidkf2fjkVKJS9vNxVWn3u/uxX38AcE8U9nnH9FPcq+g==", - "dev": true, - "requires": { - "buffer-from": "1.0.0", - "source-map": "0.6.1" - } - } - } - }, - "jest-leak-detector": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-22.4.3.tgz", - "integrity": "sha512-NZpR/Ls7+ndO57LuXROdgCGz2RmUdC541tTImL9bdUtU3WadgFGm0yV+Ok4Fuia/1rLAn5KaJ+i76L6e3zGJYQ==", - "dev": true, - "requires": { - "pretty-format": "22.4.3" - } - }, - "jest-matcher-utils": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-22.4.3.tgz", - "integrity": "sha512-lsEHVaTnKzdAPR5t4B6OcxXo9Vy4K+kRRbG5gtddY8lBEC+Mlpvm1CJcsMESRjzUhzkz568exMV1hTB76nAKbA==", - "dev": true, - "requires": { - "chalk": "2.4.1", - "jest-get-type": "22.4.3", - "pretty-format": "22.4.3" - }, - "dependencies": { - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" - } - } - } - }, - "jest-message-util": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-22.4.3.tgz", - "integrity": "sha512-iAMeKxhB3Se5xkSjU0NndLLCHtP4n+GtCqV0bISKA5dmOXQfEbdEmYiu2qpnWBDCQdEafNDDU6Q+l6oBMd/+BA==", - "dev": true, - "requires": { - "@babel/code-frame": "7.0.0-beta.47", - "chalk": "2.4.1", - "micromatch": "2.3.11", - "slash": "1.0.0", - "stack-utils": "1.0.1" - }, - "dependencies": { - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" - } - } - } - }, - "jest-mock": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-22.4.3.tgz", - "integrity": "sha512-+4R6mH5M1G4NK16CKg9N1DtCaFmuxhcIqF4lQK/Q1CIotqMs/XBemfpDPeVZBFow6iyUNu6EBT9ugdNOTT5o5Q==", - "dev": true - }, - "jest-regex-util": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-22.4.3.tgz", - "integrity": "sha512-LFg1gWr3QinIjb8j833bq7jtQopiwdAs67OGfkPrvy7uNUbVMfTXXcOKXJaeY5GgjobELkKvKENqq1xrUectWg==", - "dev": true - }, - "jest-resolve": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-22.4.3.tgz", - "integrity": "sha512-u3BkD/MQBmwrOJDzDIaxpyqTxYH+XqAXzVJP51gt29H8jpj3QgKof5GGO2uPGKGeA1yTMlpbMs1gIQ6U4vcRhw==", - "dev": true, - "requires": { - "browser-resolve": "1.11.2", - "chalk": "2.4.1" - }, - "dependencies": { - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" - } - } - } - }, - "jest-resolve-dependencies": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-22.4.3.tgz", - "integrity": "sha512-06czCMVToSN8F2U4EvgSB1Bv/56gc7MpCftZ9z9fBgUQM7dzHGCMBsyfVA6dZTx8v0FDcnALf7hupeQxaBCvpA==", - "dev": true, - "requires": { - "jest-regex-util": "22.4.3" - } - }, - "jest-runner": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-22.4.3.tgz", - "integrity": "sha512-U7PLlQPRlWNbvOHWOrrVay9sqhBJmiKeAdKIkvX4n1G2tsvzLlf77nBD28GL1N6tGv4RmuTfI8R8JrkvCa+IBg==", - "dev": true, - "requires": { - "exit": "0.1.2", - "jest-config": "22.4.3", - "jest-docblock": "22.4.3", - "jest-haste-map": "22.4.3", - "jest-jasmine2": "22.4.3", - "jest-leak-detector": "22.4.3", - "jest-message-util": "22.4.3", - "jest-runtime": "22.4.3", - "jest-util": "22.4.3", - "jest-worker": "22.4.3", - "throat": "4.1.0" - } - }, - "jest-runtime": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-22.4.3.tgz", - "integrity": "sha512-Eat/esQjevhx9BgJEC8udye+FfoJ2qvxAZfOAWshYGS22HydHn5BgsvPdTtt9cp0fSl5LxYOFA1Pja9Iz2Zt8g==", - "dev": true, - "requires": { - "babel-core": "6.26.3", - "babel-jest": "22.4.3", - "babel-plugin-istanbul": "4.1.6", - "chalk": "2.4.1", - "convert-source-map": "1.5.1", - "exit": "0.1.2", - "graceful-fs": "4.1.11", - "jest-config": "22.4.3", - "jest-haste-map": "22.4.3", - "jest-regex-util": "22.4.3", - "jest-resolve": "22.4.3", - "jest-util": "22.4.3", - "jest-validate": "22.4.3", - "json-stable-stringify": "1.0.1", - "micromatch": "2.3.11", - "realpath-native": "1.0.0", - "slash": "1.0.0", - "strip-bom": "3.0.0", - "write-file-atomic": "2.3.0", - "yargs": "10.1.2" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "babel-core": { - "version": "6.26.3", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", - "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", - "dev": true, - "requires": { - "babel-code-frame": "6.26.0", - "babel-generator": "6.26.1", - "babel-helpers": "6.24.1", - "babel-messages": "6.23.0", - "babel-register": "6.26.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "convert-source-map": "1.5.1", - "debug": "2.6.9", - "json5": "0.5.1", - "lodash": "4.17.4", - "minimatch": "3.0.4", - "path-is-absolute": "1.0.1", - "private": "0.1.8", - "slash": "1.0.0", - "source-map": "0.5.7" - } - }, - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" - } - }, - "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", - "dev": true, - "requires": { - "string-width": "2.1.1", - "strip-ansi": "4.0.0", - "wrap-ansi": "2.1.0" - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "2.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "3.0.0" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true - }, - "yargs": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.1.2.tgz", - "integrity": "sha512-ivSoxqBGYOqQVruxD35+EyCFDYNEFL/Uo6FcOnz+9xZdZzK0Zzw4r4KhbrME1Oo2gOggwJod2MnsdamSG7H9ig==", - "dev": true, - "requires": { - "cliui": "4.1.0", - "decamelize": "1.2.0", - "find-up": "2.1.0", - "get-caller-file": "1.0.2", - "os-locale": "2.1.0", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", - "y18n": "3.2.1", - "yargs-parser": "8.1.0" - } - }, - "yargs-parser": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz", - "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==", - "dev": true, - "requires": { - "camelcase": "4.1.0" - } - } - } - }, - "jest-serializer": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-22.4.3.tgz", - "integrity": "sha512-uPaUAppx4VUfJ0QDerpNdF43F68eqKWCzzhUlKNDsUPhjOon7ZehR4C809GCqh765FoMRtTVUVnGvIoskkYHiw==", - "dev": true - }, - "jest-snapshot": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-22.4.3.tgz", - "integrity": "sha512-JXA0gVs5YL0HtLDCGa9YxcmmV2LZbwJ+0MfyXBBc5qpgkEYITQFJP7XNhcHFbUvRiniRpRbGVfJrOoYhhGE0RQ==", - "dev": true, - "requires": { - "chalk": "2.4.1", - "jest-diff": "22.4.3", - "jest-matcher-utils": "22.4.3", - "mkdirp": "0.5.1", - "natural-compare": "1.4.0", - "pretty-format": "22.4.3" - }, - "dependencies": { - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" - } - } - } - }, - "jest-util": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-22.4.3.tgz", - "integrity": "sha512-rfDfG8wyC5pDPNdcnAlZgwKnzHvZDu8Td2NJI/jAGKEGxJPYiE4F0ss/gSAkG4778Y23Hvbz+0GMrDJTeo7RjQ==", - "dev": true, - "requires": { - "callsites": "2.0.0", - "chalk": "2.4.1", - "graceful-fs": "4.1.11", - "is-ci": "1.0.10", - "jest-message-util": "22.4.3", - "mkdirp": "0.5.1", - "source-map": "0.6.1" - }, - "dependencies": { - "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", - "dev": true - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "jest-validate": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-22.4.3.tgz", - "integrity": "sha512-CfFM18W3GSP/xgmA4UouIx0ljdtfD2mjeBC6c89Gg17E44D4tQhAcTrZmf9djvipwU30kSTnk6CzcxdCCeSXfA==", - "dev": true, - "requires": { - "chalk": "2.4.1", - "jest-config": "22.4.3", - "jest-get-type": "22.4.3", - "leven": "2.1.0", - "pretty-format": "22.4.3" - }, - "dependencies": { - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" - } - } - } - }, - "jest-worker": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-22.4.3.tgz", - "integrity": "sha512-B1ucW4fI8qVAuZmicFxI1R3kr2fNeYJyvIQ1rKcuLYnenFV5K5aMbxFj6J0i00Ju83S8jP2d7Dz14+AvbIHRYQ==", - "dev": true, - "requires": { - "merge-stream": "1.0.1" - } - }, - "js-base64": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.3.tgz", - "integrity": "sha512-H7ErYLM34CvDMto3GbD6xD0JLUGYXR3QTcH6B/tr4Hi/QpSThnCsIp+Sy5FRTw3B0d6py4HcNkW7nO/wdtGWEw==", - "dev": true - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" - }, - "js-yaml": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", - "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", - "dev": true, - "requires": { - "argparse": "1.0.10", - "esprima": "2.7.3" - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true, - "optional": true - }, - "jsdom": { - "version": "11.10.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.10.0.tgz", - "integrity": "sha512-x5No5FpJgBg3j5aBwA8ka6eGuS5IxbC8FOkmyccKvObtFT0bDMict/LOxINZsZGZSfGdNomLZ/qRV9Bpq/GIBA==", - "dev": true, - "requires": { - "abab": "1.0.4", - "acorn": "5.5.3", - "acorn-globals": "4.1.0", - "array-equal": "1.0.0", - "cssom": "0.3.2", - "cssstyle": "0.2.37", - "data-urls": "1.0.0", - "domexception": "1.0.1", - "escodegen": "1.9.1", - "html-encoding-sniffer": "1.0.2", - "left-pad": "1.3.0", - "nwmatcher": "1.4.4", - "parse5": "4.0.0", - "pn": "1.1.0", - "request": "2.86.0", - "request-promise-native": "1.0.5", - "sax": "1.2.4", - "symbol-tree": "3.2.2", - "tough-cookie": "2.3.4", - "w3c-hr-time": "1.0.1", - "webidl-conversions": "4.0.2", - "whatwg-encoding": "1.0.3", - "whatwg-mimetype": "2.1.0", - "whatwg-url": "6.4.1", - "ws": "4.1.0", - "xml-name-validator": "3.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true - }, - "boom": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", - "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", - "dev": true, - "requires": { - "hoek": "4.2.1" - } - }, - "cryptiles": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", - "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", - "dev": true, - "requires": { - "boom": "5.2.0" - }, - "dependencies": { - "boom": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", - "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", - "dev": true, - "requires": { - "hoek": "4.2.1" - } - } - } - }, - "form-data": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", - "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", - "dev": true, - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.6", - "mime-types": "2.1.18" - } - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true - }, - "har-validator": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", - "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", - "dev": true, - "requires": { - "ajv": "5.5.2", - "har-schema": "2.0.0" - } - }, - "hawk": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", - "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", - "dev": true, - "requires": { - "boom": "4.3.1", - "cryptiles": "3.1.2", - "hoek": "4.2.1", - "sntp": "2.1.0" - } - }, - "hoek": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", - "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", - "dev": true - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "jsprim": "1.4.1", - "sshpk": "1.14.1" - } - }, - "parse5": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", - "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", - "dev": true - }, - "request": { - "version": "2.86.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.86.0.tgz", - "integrity": "sha512-BQZih67o9r+Ys94tcIW4S7Uu8pthjrQVxhsZ/weOwHbDfACxvIyvnAbzFQxjy1jMtvFSzv5zf4my6cZsJBbVzw==", - "dev": true, - "requires": { - "aws-sign2": "0.7.0", - "aws4": "1.7.0", - "caseless": "0.12.0", - "combined-stream": "1.0.6", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.3.2", - "har-validator": "5.0.3", - "hawk": "6.0.2", - "http-signature": "1.2.0", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.18", - "oauth-sign": "0.8.2", - "performance-now": "2.1.0", - "qs": "6.5.1", - "safe-buffer": "5.1.1", - "tough-cookie": "2.3.4", - "tunnel-agent": "0.6.0", - "uuid": "3.2.1" - } - }, - "sntp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", - "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", - "dev": true, - "requires": { - "hoek": "4.2.1" - } - } - } - }, - "jsesc": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.1.tgz", - "integrity": "sha1-5CGiqOINawgZ3yiQj3glJrlt0f4=", - "dev": true - }, - "json-loader": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", - "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==", - "dev": true - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true - }, - "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", - "dev": true - }, - "json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "dev": true, - "requires": { - "jsonify": "0.0.0" - } - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" - }, - "json2module": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/json2module/-/json2module-0.0.3.tgz", - "integrity": "sha1-APtfSpt638PwZHwpyxe80Zeb6bI=", - "requires": { - "rw": "1.3.3" - } - }, - "json2mq": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/json2mq/-/json2mq-0.2.0.tgz", - "integrity": "sha1-tje9O6nqvhIsg+lyBIOusQ0skEo=", - "requires": { - "string-convert": "0.2.1" - } - }, - "json3": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", - "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", - "dev": true - }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true - }, - "jsonfile": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11" - } - }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } - } - }, - "jsx-ast-utils": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz", - "integrity": "sha1-OGchPo3Xm/Ho8jAMDPwe+xgsDfE=", - "dev": true - }, - "keymaster": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/keymaster/-/keymaster-1.6.2.tgz", - "integrity": "sha1-4a5U0OqUiPn2C2a2aPAumhlGxus=" - }, - "keypress": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/keypress/-/keypress-0.1.0.tgz", - "integrity": "sha1-SjGI1CkbZrT2XtuZ+AaqmuKTWSo=", - "dev": true - }, - "killable": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.0.tgz", - "integrity": "sha1-2ouEvUfeU5WHj5XWTQLyRJ/gXms=", - "dev": true - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.6" - } - }, - "klaw": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", - "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11" - } - }, - "known-css-properties": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.5.0.tgz", - "integrity": "sha512-LOS0CoS8zcZnB1EjLw4LLqDXw8nvt3AGH5dXLQP3D9O1nLLA+9GC5GnPl5mmF+JiQAtSX4VyZC7KvEtcA4kUtA==", - "dev": true - }, - "latest-version": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", - "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", - "dev": true, - "requires": { - "package-json": "4.0.1" - } - }, - "lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true, - "requires": { - "invert-kv": "1.0.0" - } - }, - "left-pad": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", - "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==", - "dev": true - }, - "less": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/less/-/less-2.7.3.tgz", - "integrity": "sha512-KPdIJKWcEAb02TuJtaLrhue0krtRLoRoo7x6BNJIBelO00t/CCdJQUnHW5V34OnHMWzIktSalJxRO+FvytQlCQ==", - "dev": true, - "requires": { - "errno": "0.1.7", - "graceful-fs": "4.1.11", - "image-size": "0.5.5", - "mime": "1.6.0", - "mkdirp": "0.5.1", - "promise": "7.3.1", - "request": "2.81.0", - "source-map": "0.5.7" - } - }, - "less-loader": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-4.1.0.tgz", - "integrity": "sha512-KNTsgCE9tMOM70+ddxp9yyt9iHqgmSs0yTZc5XH5Wo+g80RWRIYNqE58QJKm/yMud5wZEvz50ugRDuzVIkyahg==", - "dev": true, - "requires": { - "clone": "2.1.1", - "loader-utils": "1.1.0", - "pify": "3.0.0" - }, - "dependencies": { - "clone": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz", - "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=", - "dev": true - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, - "leven": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", - "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", - "dev": true - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "requires": { - "prelude-ls": "1.1.2", - "type-check": "0.3.2" - } - }, - "lint-staged": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-6.1.1.tgz", - "integrity": "sha512-M/7bwLdXbeG7ZNLcasGeLMBDg60/w6obj3KOtINwJyxAxb53XGY0yH5FSZlWklEzuVbTtqtIfAajh6jYIN90AA==", - "dev": true, - "requires": { - "app-root-path": "2.0.1", - "chalk": "2.4.1", - "commander": "2.15.1", - "cosmiconfig": "4.0.0", - "debug": "3.1.0", - "dedent": "0.7.0", - "execa": "0.8.0", - "find-parent-dir": "0.3.0", - "is-glob": "4.0.0", - "jest-validate": "21.2.1", - "listr": "0.13.0", - "lodash": "4.17.4", - "log-symbols": "2.2.0", - "minimatch": "3.0.4", - "npm-which": "3.0.1", - "p-map": "1.2.0", - "path-is-inside": "1.0.2", - "pify": "3.0.0", - "staged-git-files": "1.0.0", - "stringify-object": "3.2.2" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" - } - }, - "commander": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", - "dev": true - }, - "cosmiconfig": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-4.0.0.tgz", - "integrity": "sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ==", - "dev": true, - "requires": { - "is-directory": "0.3.1", - "js-yaml": "3.11.0", - "parse-json": "4.0.0", - "require-from-string": "2.0.2" - } - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", - "dev": true - }, - "execa": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", - "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=", - "dev": true, - "requires": { - "cross-spawn": "5.1.0", - "get-stream": "3.0.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", - "dev": true, - "requires": { - "is-extglob": "2.1.1" - } - }, - "jest-get-type": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-21.2.0.tgz", - "integrity": "sha512-y2fFw3C+D0yjNSDp7ab1kcd6NUYfy3waPTlD8yWkAtiocJdBRQqNoRqVfMNxgj+IjT0V5cBIHJO0z9vuSSZ43Q==", - "dev": true - }, - "jest-validate": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-21.2.1.tgz", - "integrity": "sha512-k4HLI1rZQjlU+EC682RlQ6oZvLrE5SCh3brseQc24vbZTxzT/k/3urar5QMCVgjadmSO7lECeGdc6YxnM3yEGg==", - "dev": true, - "requires": { - "chalk": "2.4.1", - "jest-get-type": "21.2.0", - "leven": "2.1.0", - "pretty-format": "21.2.1" - } - }, - "js-yaml": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz", - "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==", - "dev": true, - "requires": { - "argparse": "1.0.10", - "esprima": "4.0.0" - } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "1.3.1", - "json-parse-better-errors": "1.0.2" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "pretty-format": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-21.2.1.tgz", - "integrity": "sha512-ZdWPGYAnYfcVP8yKA3zFjCn8s4/17TeYH28MXuC8vTp0o21eXjbFGcOAXZEaDaOFJjc3h2qa7HQNHNshhvoh2A==", - "dev": true, - "requires": { - "ansi-regex": "3.0.0", - "ansi-styles": "3.2.1" - } - }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true - } - } - }, - "listr": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/listr/-/listr-0.13.0.tgz", - "integrity": "sha1-ILsLowuuZg7oTMBQPfS+PVYjiH0=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "cli-truncate": "0.2.1", - "figures": "1.7.0", - "indent-string": "2.1.0", - "is-observable": "0.2.0", - "is-promise": "2.1.0", - "is-stream": "1.1.0", - "listr-silent-renderer": "1.1.1", - "listr-update-renderer": "0.4.0", - "listr-verbose-renderer": "0.4.1", - "log-symbols": "1.0.2", - "log-update": "1.0.2", - "ora": "0.2.3", - "p-map": "1.2.0", - "rxjs": "5.5.10", - "stream-to-observable": "0.2.0", - "strip-ansi": "3.0.1" - }, - "dependencies": { - "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "dev": true, - "requires": { - "escape-string-regexp": "1.0.5", - "object-assign": "4.1.1" - } - }, - "log-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", - "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", - "dev": true, - "requires": { - "chalk": "1.1.3" - } - } - } - }, - "listr-silent-renderer": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", - "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=", - "dev": true - }, - "listr-update-renderer": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.4.0.tgz", - "integrity": "sha1-NE2YDaLKLosUW6MFkI8yrj9MyKc=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "cli-truncate": "0.2.1", - "elegant-spinner": "1.0.1", - "figures": "1.7.0", - "indent-string": "3.2.0", - "log-symbols": "1.0.2", - "log-update": "1.0.2", - "strip-ansi": "3.0.1" - }, - "dependencies": { - "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "dev": true, - "requires": { - "escape-string-regexp": "1.0.5", - "object-assign": "4.1.1" - } - }, - "indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", - "dev": true - }, - "log-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", - "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", - "dev": true, - "requires": { - "chalk": "1.1.3" - } - } - } - }, - "listr-verbose-renderer": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz", - "integrity": "sha1-ggb0z21S3cWCfl/RSYng6WWTOjU=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "cli-cursor": "1.0.2", - "date-fns": "1.29.0", - "figures": "1.7.0" - }, - "dependencies": { - "cli-cursor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", - "dev": true, - "requires": { - "restore-cursor": "1.0.1" - } - }, - "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "dev": true, - "requires": { - "escape-string-regexp": "1.0.5", - "object-assign": "4.1.1" - } - }, - "onetime": { - "version": "1.1.0", - "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", - "dev": true - }, - "restore-cursor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", - "dev": true, - "requires": { - "exit-hook": "1.1.1", - "onetime": "1.1.0" - } - } - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "strip-bom": "2.0.0" - } - }, - "loader-fs-cache": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.1.tgz", - "integrity": "sha1-VuC/CL2XCLJqdltoUJhAyN7J/bw=", - "dev": true, - "requires": { - "find-cache-dir": "0.1.1", - "mkdirp": "0.5.1" - }, - "dependencies": { - "find-cache-dir": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", - "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", - "dev": true, - "requires": { - "commondir": "1.0.1", - "mkdirp": "0.5.1", - "pkg-dir": "1.0.0" - } - } - } - }, - "loader-runner": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", - "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=", - "dev": true - }, - "loader-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", - "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", - "dev": true, - "requires": { - "big.js": "3.2.0", - "emojis-list": "2.1.0", - "json5": "0.5.1" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "2.0.0", - "path-exists": "3.0.0" - }, - "dependencies": { - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - } - } - }, - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" - }, - "lodash-decorators": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash-decorators/-/lodash-decorators-4.5.0.tgz", - "integrity": "sha512-isfVBBSzzXu7Z6abY/Bit5hCbM+gPhQx/DluTPAmzUPF3KRtvLLRNBgVFUxw6B8vwTMGyQFRVqbvQBli9hsXZA==", - "requires": { - "tslib": "1.8.0" - } - }, - "lodash-es": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.10.tgz", - "integrity": "sha512-iesFYPmxYYGTcmQK0sL8bX3TGHyM6b2qREaB4kamHfQyfPJP0xgoGxp19nsH16nsfquLdiyKyX3mQkfiSGV8Rg==" - }, - "lodash._getnative": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", - "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=" - }, - "lodash._reinterpolate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", - "dev": true - }, - "lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", - "dev": true - }, - "lodash.cond": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/lodash.cond/-/lodash.cond-4.5.2.tgz", - "integrity": "sha1-9HGh2khr5g9quVXRcRVSPdHSVdU=", - "dev": true - }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" - }, - "lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=", - "dev": true - }, - "lodash.endswith": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/lodash.endswith/-/lodash.endswith-4.2.1.tgz", - "integrity": "sha1-/tWawXOO0+I27dcGTsRWRIs3vAk=", - "dev": true - }, - "lodash.escaperegexp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", - "integrity": "sha1-ZHYsSGGAglGKw99Mz11YhtriA0c=", - "dev": true - }, - "lodash.flattendeep": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", - "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", - "dev": true - }, - "lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=" - }, - "lodash.isarray": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=" - }, - "lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", - "dev": true - }, - "lodash.isfunction": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", - "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==", - "dev": true - }, - "lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=", - "dev": true - }, - "lodash.keys": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", - "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", - "requires": { - "lodash._getnative": "3.9.1", - "lodash.isarguments": "3.1.0", - "lodash.isarray": "3.0.4" - } - }, - "lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", - "dev": true - }, - "lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", - "dev": true - }, - "lodash.startswith": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/lodash.startswith/-/lodash.startswith-4.2.1.tgz", - "integrity": "sha1-xZjErc4YiiflMUVzHNxsDnF3YAw=", - "dev": true - }, - "lodash.template": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.4.0.tgz", - "integrity": "sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A=", - "dev": true, - "requires": { - "lodash._reinterpolate": "3.0.0", - "lodash.templatesettings": "4.1.0" - } - }, - "lodash.templatesettings": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz", - "integrity": "sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=", - "dev": true, - "requires": { - "lodash._reinterpolate": "3.0.0" - } - }, - "lodash.throttle": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", - "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=" - }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", - "dev": true - }, - "log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", - "dev": true, - "requires": { - "chalk": "2.4.1" - }, - "dependencies": { - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" - } - } - } - }, - "log-update": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-1.0.2.tgz", - "integrity": "sha1-GZKfZMQJPS0ucHWh2tivWcKWuNE=", - "dev": true, - "requires": { - "ansi-escapes": "1.4.0", - "cli-cursor": "1.0.2" - }, - "dependencies": { - "ansi-escapes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", - "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", - "dev": true - }, - "cli-cursor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", - "dev": true, - "requires": { - "restore-cursor": "1.0.1" - } - }, - "onetime": { - "version": "1.1.0", - "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", - "dev": true - }, - "restore-cursor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", - "dev": true, - "requires": { - "exit-hook": "1.1.1", - "onetime": "1.1.0" - } - } - } - }, - "loglevel": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz", - "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=", - "dev": true - }, - "longest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" - }, - "longest-streak": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.2.tgz", - "integrity": "sha512-TmYTeEYxiAmSVdpbnQDXGtvYOIRsCMg89CVZzwzc2o7GFL1CjoiRPjH5ec0NFAVlAx3fVof9dX/t6KKRAo2OWA==", - "dev": true - }, - "loose-envify": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", - "requires": { - "js-tokens": "3.0.2" - } - }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "dev": true, - "requires": { - "currently-unhandled": "0.4.1", - "signal-exit": "3.0.2" - } - }, - "lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", - "dev": true - }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true - }, - "lru-cache": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", - "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", - "dev": true, - "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" - } - }, - "macaddress": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/macaddress/-/macaddress-0.2.8.tgz", - "integrity": "sha1-WQTcU3w57G2+/q6QIycTX6hRHxI=", - "dev": true - }, - "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "dev": true, - "requires": { - "pify": "3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, - "makeerror": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", - "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", - "dev": true, - "requires": { - "tmpl": "1.0.4" - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "requires": { - "object-visit": "1.0.1" - } - }, - "markdown-escapes": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.1.tgz", - "integrity": "sha1-GZTfLTr0gR3lmmcUk0wrIpJzRRg=", - "dev": true - }, - "markdown-table": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.2.tgz", - "integrity": "sha512-NcWuJFHDA8V3wkDgR/j4+gZx+YQwstPgfQDV8ndUeWWzta3dnDTBxpVzqS9lkmJAuV5YX35lmyojl6HO5JXAgw==", - "dev": true - }, - "math-expression-evaluator": { - "version": "1.2.17", - "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz", - "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=", - "dev": true - }, - "math-random": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", - "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=", - "dev": true - }, - "mathml-tag-names": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.0.tgz", - "integrity": "sha512-3Zs9P/0zzwTob2pdgT0CHZuMbnSUSp8MB1bddfm+HDmnFWHGT4jvEZRf+2RuPoa+cjdn/z25SEt5gFTqdhvJAg==", - "dev": true - }, - "md5.js": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", - "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", - "dev": true, - "requires": { - "hash-base": "3.0.4", - "inherits": "2.0.3" - } - }, - "mdast-util-compact": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-1.0.1.tgz", - "integrity": "sha1-zbX4TitqLTEU3zO9BdnLMuPECDo=", - "dev": true, - "requires": { - "unist-util-modify-children": "1.1.2", - "unist-util-visit": "1.1.3" - } - }, - "mdn-browser-compat-data": { - "version": "0.0.20", - "resolved": "https://registry.npmjs.org/mdn-browser-compat-data/-/mdn-browser-compat-data-0.0.20.tgz", - "integrity": "sha512-DImQhKtc7umi/LI0licM3GVnKTxYoYmFUKnMjomfIvW8dO4B6UeQLWYQhf1jDTfEV9WZGjFTz3DOfcsnZO6WdA==", - "dev": true, - "requires": { - "extend": "3.0.1" - } - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", - "dev": true - }, - "mem": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", - "dev": true, - "requires": { - "mimic-fn": "1.2.0" - } - }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "dev": true, - "requires": { - "errno": "0.1.7", - "readable-stream": "2.3.6" - } - }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", - "dev": true, - "requires": { - "camelcase-keys": "2.1.0", - "decamelize": "1.2.0", - "loud-rejection": "1.6.0", - "map-obj": "1.0.1", - "minimist": "1.2.0", - "normalize-package-data": "2.4.0", - "object-assign": "4.1.1", - "read-pkg-up": "1.0.1", - "redent": "1.0.0", - "trim-newlines": "1.0.0" - } - }, - "merge": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.0.tgz", - "integrity": "sha1-dTHjnUlJwoGma4xabgJl6LBYlNo=", - "dev": true - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", - "dev": true - }, - "merge-stream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", - "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", - "dev": true, - "requires": { - "readable-stream": "2.3.6" - } - }, - "merge2": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.2.tgz", - "integrity": "sha512-bgM8twH86rWni21thii6WCMQMRMmwqqdW3sGWi9IipnVAszdLXRjwDwAnyrVXo6DuP3AjRMMttZKUB48QWIFGg==", - "dev": true - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", - "dev": true - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.4" - } - }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "brorand": "1.1.0" - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true - }, - "mime-db": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", - "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", - "dev": true - }, - "mime-types": { - "version": "2.1.18", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", - "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", - "dev": true, - "requires": { - "mime-db": "1.33.0" - } - }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true - }, - "min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", - "requires": { - "dom-walk": "0.1.1" - } - }, - "mini-store": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mini-store/-/mini-store-1.1.0.tgz", - "integrity": "sha512-/Ou2jdD7/CDyJBjHnpRuc8aehh2WHxBpUpVvVHn0XhvLHk35YOiUlOYhX55NX00/e4phr1F3aNnhWKkGMqLUfQ==", - "requires": { - "hoist-non-react-statics": "2.5.0", - "prop-types": "15.6.0", - "shallowequal": "1.0.2" - } - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "1.1.8" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" - }, - "minimist-options": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", - "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", - "dev": true, - "requires": { - "arrify": "1.0.1", - "is-plain-obj": "1.1.0" - } - }, - "mississippi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz", - "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", - "dev": true, - "requires": { - "concat-stream": "1.6.2", - "duplexify": "3.6.0", - "end-of-stream": "1.4.1", - "flush-write-stream": "1.0.3", - "from2": "2.3.0", - "parallel-transform": "1.1.0", - "pump": "2.0.1", - "pumpify": "1.5.0", - "stream-each": "1.2.2", - "through2": "2.0.3" - } - }, - "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", - "dev": true, - "requires": { - "for-in": "1.0.2", - "is-extendable": "1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "2.0.4" - } - } - } - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - } - } - }, - "mockjs": { - "version": "1.0.1-beta3", - "resolved": "https://registry.npmjs.org/mockjs/-/mockjs-1.0.1-beta3.tgz", - "integrity": "sha1-0jTzwnJWOXVk8slVFC6JGQlTcgk=", - "dev": true, - "requires": { - "commander": "1.0.4" - } - }, - "moment": { - "version": "2.19.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.19.1.tgz", - "integrity": "sha1-VtoaLRy/AdOLfhr8McELz6GSkWc=" - }, - "move-concurrently": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", - "dev": true, - "requires": { - "aproba": "1.2.0", - "copy-concurrently": "1.0.5", - "fs-write-stream-atomic": "1.0.10", - "mkdirp": "0.5.1", - "rimraf": "2.6.2", - "run-queue": "1.0.3" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "multicast-dns": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", - "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", - "dev": true, - "requires": { - "dns-packet": "1.3.1", - "thunky": "1.0.2" - } - }, - "multicast-dns-service-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", - "dev": true - }, - "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", - "dev": true - }, - "nan": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", - "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", - "dev": true, - "optional": true - }, - "nanomatch": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", - "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", - "dev": true, - "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "fragment-cache": "0.2.1", - "is-odd": "2.0.0", - "is-windows": "1.0.2", - "kind-of": "6.0.2", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } - } - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "nearley": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.11.0.tgz", - "integrity": "sha512-clqqhEuP0ZCJQ85Xv2I/4o2Gs/fvSR6fCg5ZHVE2c8evWyNk2G++ih4JOO3lMb/k/09x6ihQ2nzKUlB/APCWjg==", - "dev": true, - "requires": { - "nomnom": "1.6.2", - "railroad-diagrams": "1.0.0", - "randexp": "0.4.6" - } - }, - "negotiator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", - "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", - "dev": true - }, - "neo-async": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.1.tgz", - "integrity": "sha512-3KL3fvuRkZ7s4IFOMfztb7zJp3QaVWnBeGoJlgB38XnCRPj/0tLzzLG5IB8NYOHbJ8g8UGrgZv44GLDk6CxTxA==", - "dev": true - }, - "next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", - "dev": true - }, - "no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", - "dev": true, - "requires": { - "lower-case": "1.1.4" - } - }, - "node": { - "version": "8.1.4", - "resolved": "https://registry.npmjs.org/node/-/node-8.1.4.tgz", - "integrity": "sha512-Sc2JS9s23XgMaUkMgNPIlB77+xMLyFlgqcRXf0Li0U9xY+oV8tWmawQIltZszApRxz0lWCGc/dzH+mEN+poHNw==", - "requires": { - "node-bin-setup": "1.0.6" - } - }, - "node-bin-setup": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/node-bin-setup/-/node-bin-setup-1.0.6.tgz", - "integrity": "sha512-uPIxXNis1CRbv1DwqAxkgBk5NFV3s7cMN/Gf556jSw6jBvV7ca4F9lRL/8cALcZecRibeqU+5dFYqFFmzv5a0Q==" - }, - "node-fetch": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", - "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", - "requires": { - "encoding": "0.1.12", - "is-stream": "1.1.0" - } - }, - "node-forge": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz", - "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==", - "dev": true - }, - "node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", - "dev": true - }, - "node-libs-browser": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", - "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", - "dev": true, - "requires": { - "assert": "1.4.1", - "browserify-zlib": "0.2.0", - "buffer": "4.9.1", - "console-browserify": "1.1.0", - "constants-browserify": "1.0.0", - "crypto-browserify": "3.12.0", - "domain-browser": "1.2.0", - "events": "1.1.1", - "https-browserify": "1.0.0", - "os-browserify": "0.3.0", - "path-browserify": "0.0.0", - "process": "0.11.10", - "punycode": "1.4.1", - "querystring-es3": "0.2.1", - "readable-stream": "2.3.6", - "stream-browserify": "2.0.1", - "stream-http": "2.8.2", - "string_decoder": "1.1.1", - "timers-browserify": "2.0.10", - "tty-browserify": "0.0.0", - "url": "0.11.0", - "util": "0.10.3", - "vm-browserify": "0.0.4" - } - }, - "node-modules-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", - "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", - "dev": true - }, - "node-notifier": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.2.1.tgz", - "integrity": "sha512-MIBs+AAd6dJ2SklbbE8RUDRlIVhU8MaNLh1A9SUZDUHPiZkWLFde6UNwG41yQHZEToHgJMXqyVZ9UcS/ReOVTg==", - "dev": true, - "requires": { - "growly": "1.3.0", - "semver": "5.4.1", - "shellwords": "0.1.1", - "which": "1.3.0" - } - }, - "nomnom": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.6.2.tgz", - "integrity": "sha1-hKZqJgF0QI/Ft3oY+IjszET7aXE=", - "dev": true, - "requires": { - "colors": "0.5.1", - "underscore": "1.4.4" - } - }, - "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", - "dev": true, - "requires": { - "hosted-git-info": "2.5.0", - "is-builtin-module": "1.0.0", - "semver": "5.4.1", - "validate-npm-package-license": "3.0.1" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "1.1.0" - } - }, - "normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", - "dev": true - }, - "normalize-selector": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/normalize-selector/-/normalize-selector-0.2.0.tgz", - "integrity": "sha1-0LFF62kRicY6eNIB3E/bEpPvDAM=", - "dev": true - }, - "normalize-url": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", - "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", - "dev": true, - "requires": { - "object-assign": "4.1.1", - "prepend-http": "1.0.4", - "query-string": "4.3.4", - "sort-keys": "1.1.2" - } - }, - "npm": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/npm/-/npm-6.0.1.tgz", - "integrity": "sha512-N3uW8jeIXIBp5G3Q6Yu3TTN1ss6BUWuDTHk2JkdTUGaUf0AwKdtVs63O5B75C9NNn7y/7tMpkMCE++xpRhjUBw==", - "requires": { - "JSONStream": "1.3.2", - "abbrev": "1.1.1", - "ansi-regex": "3.0.0", - "ansicolors": "0.3.2", - "ansistyles": "0.1.3", - "aproba": "1.2.0", - "archy": "1.0.0", - "bin-links": "1.1.2", - "bluebird": "3.5.1", - "byte-size": "4.0.2", - "cacache": "11.0.1", - "call-limit": "1.1.0", - "chownr": "1.0.1", - "cli-columns": "3.1.2", - "cli-table2": "0.2.0", - "cmd-shim": "2.0.2", - "columnify": "1.5.4", - "config-chain": "1.1.11", - "debuglog": "1.0.1", - "detect-indent": "5.0.0", - "detect-newline": "2.1.0", - "dezalgo": "1.0.3", - "editor": "1.0.0", - "figgy-pudding": "3.1.0", - "find-npm-prefix": "1.0.2", - "fs-vacuum": "1.2.10", - "fs-write-stream-atomic": "1.0.10", - "gentle-fs": "2.0.1", - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "has-unicode": "2.0.1", - "hosted-git-info": "2.6.0", - "iferr": "1.0.0", - "imurmurhash": "0.1.4", - "inflight": "1.0.6", - "inherits": "2.0.3", - "ini": "1.3.5", - "init-package-json": "1.10.3", - "is-cidr": "2.0.5", - "json-parse-better-errors": "1.0.2", - "lazy-property": "1.0.0", - "libcipm": "1.6.2", - "libnpmhook": "4.0.1", - "libnpx": "10.2.0", - "lock-verify": "2.0.2", - "lockfile": "1.0.4", - "lodash._baseindexof": "3.1.0", - "lodash._baseuniq": "4.6.0", - "lodash._bindcallback": "3.0.1", - "lodash._cacheindexof": "3.0.2", - "lodash._createcache": "3.1.2", - "lodash._getnative": "3.9.1", - "lodash.clonedeep": "4.5.0", - "lodash.restparam": "3.6.1", - "lodash.union": "4.6.0", - "lodash.uniq": "4.5.0", - "lodash.without": "4.4.0", - "lru-cache": "4.1.2", - "meant": "1.0.1", - "mississippi": "3.0.0", - "mkdirp": "0.5.1", - "move-concurrently": "1.0.1", - "node-gyp": "3.6.2", - "nopt": "4.0.1", - "normalize-package-data": "2.4.0", - "npm-audit-report": "1.0.8", - "npm-cache-filename": "1.0.2", - "npm-install-checks": "3.0.0", - "npm-lifecycle": "2.0.1", - "npm-package-arg": "6.1.0", - "npm-packlist": "1.1.10", - "npm-pick-manifest": "2.1.0", - "npm-profile": "3.0.1", - "npm-registry-client": "8.5.1", - "npm-registry-fetch": "1.1.0", - "npm-user-validate": "1.0.0", - "npmlog": "4.1.2", - "once": "1.4.0", - "opener": "1.4.3", - "osenv": "0.1.5", - "pacote": "8.1.1", - "path-is-inside": "1.0.2", - "promise-inflight": "1.0.1", - "qrcode-terminal": "0.12.0", - "query-string": "6.1.0", - "qw": "1.0.1", - "read": "1.0.7", - "read-cmd-shim": "1.0.1", - "read-installed": "4.0.3", - "read-package-json": "2.0.13", - "read-package-tree": "5.2.1", - "readable-stream": "2.3.6", - "readdir-scoped-modules": "1.0.2", - "request": "2.85.0", - "retry": "0.12.0", - "rimraf": "2.6.2", - "safe-buffer": "5.1.2", - "semver": "5.5.0", - "sha": "2.0.1", - "slide": "1.1.6", - "sorted-object": "2.0.1", - "sorted-union-stream": "2.1.3", - "ssri": "6.0.0", - "strip-ansi": "4.0.0", - "tar": "4.4.2", - "text-table": "0.2.0", - "tiny-relative-date": "1.3.0", - "uid-number": "0.0.6", - "umask": "1.1.0", - "unique-filename": "1.1.0", - "unpipe": "1.0.0", - "update-notifier": "2.5.0", - "uuid": "3.2.1", - "validate-npm-package-license": "3.0.3", - "validate-npm-package-name": "3.0.0", - "which": "1.3.0", - "worker-farm": "1.6.0", - "wrappy": "1.0.2", - "write-file-atomic": "2.3.0" - }, - "dependencies": { - "JSONStream": { - "version": "1.3.2", - "bundled": true, - "requires": { - "jsonparse": "1.3.1", - "through": "2.3.8" - }, - "dependencies": { - "jsonparse": { - "version": "1.3.1", - "bundled": true - }, - "through": { - "version": "2.3.8", - "bundled": true - } - } - }, - "abbrev": { - "version": "1.1.1", - "bundled": true - }, - "ansi-regex": { - "version": "3.0.0", - "bundled": true - }, - "ansicolors": { - "version": "0.3.2", - "bundled": true - }, - "ansistyles": { - "version": "0.1.3", - "bundled": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true - }, - "archy": { - "version": "1.0.0", - "bundled": true - }, - "bin-links": { - "version": "1.1.2", - "bundled": true, - "requires": { - "bluebird": "3.5.1", - "cmd-shim": "2.0.2", - "gentle-fs": "2.0.1", - "graceful-fs": "4.1.11", - "write-file-atomic": "2.3.0" - } - }, - "bluebird": { - "version": "3.5.1", - "bundled": true - }, - "byte-size": { - "version": "4.0.2", - "bundled": true - }, - "cacache": { - "version": "11.0.1", - "bundled": true, - "requires": { - "bluebird": "3.5.1", - "chownr": "1.0.1", - "figgy-pudding": "3.1.0", - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "lru-cache": "4.1.2", - "mississippi": "3.0.0", - "mkdirp": "0.5.1", - "move-concurrently": "1.0.1", - "promise-inflight": "1.0.1", - "rimraf": "2.6.2", - "ssri": "6.0.0", - "unique-filename": "1.1.0", - "y18n": "4.0.0" - }, - "dependencies": { - "y18n": { - "version": "4.0.0", - "bundled": true - } - } - }, - "call-limit": { - "version": "1.1.0", - "bundled": true - }, - "chownr": { - "version": "1.0.1", - "bundled": true - }, - "cli-columns": { - "version": "3.1.2", - "bundled": true, - "requires": { - "string-width": "2.1.1", - "strip-ansi": "3.0.1" - }, - "dependencies": { - "string-width": { - "version": "2.1.1", - "bundled": true, - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "2.0.0", - "bundled": true - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "requires": { - "ansi-regex": "3.0.0" - } - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "2.1.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "bundled": true - } - } - } - } - }, - "cli-table2": { - "version": "0.2.0", - "bundled": true, - "requires": { - "colors": "1.1.2", - "lodash": "3.10.1", - "string-width": "1.0.2" - }, - "dependencies": { - "colors": { - "version": "1.1.2", - "bundled": true, - "optional": true - }, - "lodash": { - "version": "3.10.1", - "bundled": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - }, - "dependencies": { - "code-point-at": { - "version": "1.1.0", - "bundled": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "requires": { - "number-is-nan": "1.0.1" - }, - "dependencies": { - "number-is-nan": { - "version": "1.0.1", - "bundled": true - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "2.1.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "bundled": true - } - } - } - } - } - } - }, - "cmd-shim": { - "version": "2.0.2", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11", - "mkdirp": "0.5.1" - } - }, - "columnify": { - "version": "1.5.4", - "bundled": true, - "requires": { - "strip-ansi": "3.0.1", - "wcwidth": "1.0.1" - }, - "dependencies": { - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "2.1.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "bundled": true - } - } - }, - "wcwidth": { - "version": "1.0.1", - "bundled": true, - "requires": { - "defaults": "1.0.3" - }, - "dependencies": { - "defaults": { - "version": "1.0.3", - "bundled": true, - "requires": { - "clone": "1.0.2" - }, - "dependencies": { - "clone": { - "version": "1.0.2", - "bundled": true - } - } - } - } - } - } - }, - "config-chain": { - "version": "1.1.11", - "bundled": true, - "requires": { - "ini": "1.3.5", - "proto-list": "1.2.4" - }, - "dependencies": { - "proto-list": { - "version": "1.2.4", - "bundled": true - } - } - }, - "debuglog": { - "version": "1.0.1", - "bundled": true - }, - "detect-indent": { - "version": "5.0.0", - "bundled": true - }, - "detect-newline": { - "version": "2.1.0", - "bundled": true - }, - "dezalgo": { - "version": "1.0.3", - "bundled": true, - "requires": { - "asap": "2.0.5", - "wrappy": "1.0.2" - }, - "dependencies": { - "asap": { - "version": "2.0.5", - "bundled": true - } - } - }, - "editor": { - "version": "1.0.0", - "bundled": true - }, - "figgy-pudding": { - "version": "3.1.0", - "bundled": true - }, - "find-npm-prefix": { - "version": "1.0.2", - "bundled": true - }, - "fs-vacuum": { - "version": "1.2.10", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11", - "path-is-inside": "1.0.2", - "rimraf": "2.6.2" - } - }, - "fs-write-stream-atomic": { - "version": "1.0.10", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11", - "iferr": "0.1.5", - "imurmurhash": "0.1.4", - "readable-stream": "2.3.6" - }, - "dependencies": { - "iferr": { - "version": "0.1.5", - "bundled": true - } - } - }, - "gentle-fs": { - "version": "2.0.1", - "bundled": true, - "requires": { - "aproba": "1.2.0", - "fs-vacuum": "1.2.10", - "graceful-fs": "4.1.11", - "iferr": "0.1.5", - "mkdirp": "0.5.1", - "path-is-inside": "1.0.2", - "read-cmd-shim": "1.0.1", - "slide": "1.1.6" - }, - "dependencies": { - "iferr": { - "version": "0.1.5", - "bundled": true - } - } - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - }, - "dependencies": { - "fs.realpath": { - "version": "1.0.0", - "bundled": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "requires": { - "brace-expansion": "1.1.8" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.8", - "bundled": true, - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - }, - "dependencies": { - "balanced-match": { - "version": "1.0.0", - "bundled": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true - } - } - } - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true - } - } - }, - "graceful-fs": { - "version": "4.1.11", - "bundled": true - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true - }, - "hosted-git-info": { - "version": "2.6.0", - "bundled": true - }, - "iferr": { - "version": "1.0.0", - "bundled": true - }, - "imurmurhash": { - "version": "0.1.4", - "bundled": true - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true - }, - "ini": { - "version": "1.3.5", - "bundled": true - }, - "init-package-json": { - "version": "1.10.3", - "bundled": true, - "requires": { - "glob": "7.1.2", - "npm-package-arg": "6.1.0", - "promzard": "0.3.0", - "read": "1.0.7", - "read-package-json": "2.0.13", - "semver": "5.5.0", - "validate-npm-package-license": "3.0.3", - "validate-npm-package-name": "3.0.0" - }, - "dependencies": { - "promzard": { - "version": "0.3.0", - "bundled": true, - "requires": { - "read": "1.0.7" - } - } - } - }, - "is-cidr": { - "version": "2.0.5", - "bundled": true, - "requires": { - "cidr-regex": "2.0.8" - }, - "dependencies": { - "cidr-regex": { - "version": "2.0.8", - "bundled": true, - "requires": { - "ip-regex": "2.1.0" - }, - "dependencies": { - "ip-regex": { - "version": "2.1.0", - "bundled": true - } - } - } - } - }, - "json-parse-better-errors": { - "version": "1.0.2", - "bundled": true - }, - "lazy-property": { - "version": "1.0.0", - "bundled": true - }, - "libcipm": { - "version": "1.6.2", - "bundled": true, - "requires": { - "bin-links": "1.1.2", - "bluebird": "3.5.1", - "find-npm-prefix": "1.0.2", - "graceful-fs": "4.1.11", - "lock-verify": "2.0.2", - "npm-lifecycle": "2.0.1", - "npm-logical-tree": "1.2.1", - "npm-package-arg": "6.1.0", - "pacote": "7.6.1", - "protoduck": "5.0.0", - "read-package-json": "2.0.13", - "rimraf": "2.6.2", - "worker-farm": "1.6.0" - }, - "dependencies": { - "npm-logical-tree": { - "version": "1.2.1", - "bundled": true - }, - "pacote": { - "version": "7.6.1", - "bundled": true, - "requires": { - "bluebird": "3.5.1", - "cacache": "10.0.4", - "get-stream": "3.0.0", - "glob": "7.1.2", - "lru-cache": "4.1.2", - "make-fetch-happen": "2.6.0", - "minimatch": "3.0.4", - "mississippi": "3.0.0", - "mkdirp": "0.5.1", - "normalize-package-data": "2.4.0", - "npm-package-arg": "6.1.0", - "npm-packlist": "1.1.10", - "npm-pick-manifest": "2.1.0", - "osenv": "0.1.5", - "promise-inflight": "1.0.1", - "promise-retry": "1.1.1", - "protoduck": "5.0.0", - "rimraf": "2.6.2", - "safe-buffer": "5.1.2", - "semver": "5.5.0", - "ssri": "5.3.0", - "tar": "4.4.2", - "unique-filename": "1.1.0", - "which": "1.3.0" - }, - "dependencies": { - "cacache": { - "version": "10.0.4", - "bundled": true, - "requires": { - "bluebird": "3.5.1", - "chownr": "1.0.1", - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "lru-cache": "4.1.2", - "mississippi": "2.0.0", - "mkdirp": "0.5.1", - "move-concurrently": "1.0.1", - "promise-inflight": "1.0.1", - "rimraf": "2.6.2", - "ssri": "5.3.0", - "unique-filename": "1.1.0", - "y18n": "4.0.0" - }, - "dependencies": { - "mississippi": { - "version": "2.0.0", - "bundled": true, - "requires": { - "concat-stream": "1.6.2", - "duplexify": "3.5.4", - "end-of-stream": "1.4.1", - "flush-write-stream": "1.0.3", - "from2": "2.3.0", - "parallel-transform": "1.1.0", - "pump": "2.0.1", - "pumpify": "1.4.0", - "stream-each": "1.2.2", - "through2": "2.0.3" - }, - "dependencies": { - "concat-stream": { - "version": "1.6.2", - "bundled": true, - "requires": { - "buffer-from": "1.0.0", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "typedarray": "0.0.6" - }, - "dependencies": { - "buffer-from": { - "version": "1.0.0", - "bundled": true - }, - "typedarray": { - "version": "0.0.6", - "bundled": true - } - } - }, - "duplexify": { - "version": "3.5.4", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "stream-shift": "1.0.0" - }, - "dependencies": { - "stream-shift": { - "version": "1.0.0", - "bundled": true - } - } - }, - "end-of-stream": { - "version": "1.4.1", - "bundled": true, - "requires": { - "once": "1.4.0" - } - }, - "flush-write-stream": { - "version": "1.0.3", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" - } - }, - "from2": { - "version": "2.3.0", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" - } - }, - "parallel-transform": { - "version": "1.1.0", - "bundled": true, - "requires": { - "cyclist": "0.2.2", - "inherits": "2.0.3", - "readable-stream": "2.3.6" - }, - "dependencies": { - "cyclist": { - "version": "0.2.2", - "bundled": true - } - } - }, - "pump": { - "version": "2.0.1", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" - } - }, - "pumpify": { - "version": "1.4.0", - "bundled": true, - "requires": { - "duplexify": "3.5.4", - "inherits": "2.0.3", - "pump": "2.0.1" - } - }, - "stream-each": { - "version": "1.2.2", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "stream-shift": "1.0.0" - }, - "dependencies": { - "stream-shift": { - "version": "1.0.0", - "bundled": true - } - } - }, - "through2": { - "version": "2.0.3", - "bundled": true, - "requires": { - "readable-stream": "2.3.6", - "xtend": "4.0.1" - }, - "dependencies": { - "xtend": { - "version": "4.0.1", - "bundled": true - } - } - } - } - }, - "y18n": { - "version": "4.0.0", - "bundled": true - } - } - }, - "get-stream": { - "version": "3.0.0", - "bundled": true - }, - "make-fetch-happen": { - "version": "2.6.0", - "bundled": true, - "requires": { - "agentkeepalive": "3.4.1", - "cacache": "10.0.4", - "http-cache-semantics": "3.8.1", - "http-proxy-agent": "2.1.0", - "https-proxy-agent": "2.2.1", - "lru-cache": "4.1.2", - "mississippi": "1.3.1", - "node-fetch-npm": "2.0.2", - "promise-retry": "1.1.1", - "socks-proxy-agent": "3.0.1", - "ssri": "5.3.0" - }, - "dependencies": { - "agentkeepalive": { - "version": "3.4.1", - "bundled": true, - "requires": { - "humanize-ms": "1.2.1" - }, - "dependencies": { - "humanize-ms": { - "version": "1.2.1", - "bundled": true, - "requires": { - "ms": "2.1.1" - }, - "dependencies": { - "ms": { - "version": "2.1.1", - "bundled": true - } - } - } - } - }, - "http-cache-semantics": { - "version": "3.8.1", - "bundled": true - }, - "http-proxy-agent": { - "version": "2.1.0", - "bundled": true, - "requires": { - "agent-base": "4.2.0", - "debug": "3.1.0" - }, - "dependencies": { - "agent-base": { - "version": "4.2.0", - "bundled": true, - "requires": { - "es6-promisify": "5.0.0" - }, - "dependencies": { - "es6-promisify": { - "version": "5.0.0", - "bundled": true, - "requires": { - "es6-promise": "4.2.4" - }, - "dependencies": { - "es6-promise": { - "version": "4.2.4", - "bundled": true - } - } - } - } - }, - "debug": { - "version": "3.1.0", - "bundled": true, - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "bundled": true - } - } - } - } - }, - "https-proxy-agent": { - "version": "2.2.1", - "bundled": true, - "requires": { - "agent-base": "4.2.0", - "debug": "3.1.0" - }, - "dependencies": { - "agent-base": { - "version": "4.2.0", - "bundled": true, - "requires": { - "es6-promisify": "5.0.0" - }, - "dependencies": { - "es6-promisify": { - "version": "5.0.0", - "bundled": true, - "requires": { - "es6-promise": "4.2.4" - }, - "dependencies": { - "es6-promise": { - "version": "4.2.4", - "bundled": true - } - } - } - } - }, - "debug": { - "version": "3.1.0", - "bundled": true, - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "bundled": true - } - } - } - } - }, - "mississippi": { - "version": "1.3.1", - "bundled": true, - "requires": { - "concat-stream": "1.6.2", - "duplexify": "3.5.4", - "end-of-stream": "1.4.1", - "flush-write-stream": "1.0.3", - "from2": "2.3.0", - "parallel-transform": "1.1.0", - "pump": "1.0.3", - "pumpify": "1.4.0", - "stream-each": "1.2.2", - "through2": "2.0.3" - }, - "dependencies": { - "concat-stream": { - "version": "1.6.2", - "bundled": true, - "requires": { - "buffer-from": "1.0.0", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "typedarray": "0.0.6" - }, - "dependencies": { - "buffer-from": { - "version": "1.0.0", - "bundled": true - }, - "typedarray": { - "version": "0.0.6", - "bundled": true - } - } - }, - "duplexify": { - "version": "3.5.4", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "stream-shift": "1.0.0" - }, - "dependencies": { - "stream-shift": { - "version": "1.0.0", - "bundled": true - } - } - }, - "end-of-stream": { - "version": "1.4.1", - "bundled": true, - "requires": { - "once": "1.4.0" - } - }, - "flush-write-stream": { - "version": "1.0.3", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" - } - }, - "from2": { - "version": "2.3.0", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" - } - }, - "parallel-transform": { - "version": "1.1.0", - "bundled": true, - "requires": { - "cyclist": "0.2.2", - "inherits": "2.0.3", - "readable-stream": "2.3.6" - }, - "dependencies": { - "cyclist": { - "version": "0.2.2", - "bundled": true - } - } - }, - "pump": { - "version": "1.0.3", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" - } - }, - "pumpify": { - "version": "1.4.0", - "bundled": true, - "requires": { - "duplexify": "3.5.4", - "inherits": "2.0.3", - "pump": "2.0.1" - }, - "dependencies": { - "pump": { - "version": "2.0.1", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" - } - } - } - }, - "stream-each": { - "version": "1.2.2", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "stream-shift": "1.0.0" - }, - "dependencies": { - "stream-shift": { - "version": "1.0.0", - "bundled": true - } - } - }, - "through2": { - "version": "2.0.3", - "bundled": true, - "requires": { - "readable-stream": "2.3.6", - "xtend": "4.0.1" - }, - "dependencies": { - "xtend": { - "version": "4.0.1", - "bundled": true - } - } - } - } - }, - "node-fetch-npm": { - "version": "2.0.2", - "bundled": true, - "requires": { - "encoding": "0.1.12", - "json-parse-better-errors": "1.0.2", - "safe-buffer": "5.1.2" - }, - "dependencies": { - "encoding": { - "version": "0.1.12", - "bundled": true, - "requires": { - "iconv-lite": "0.4.21" - }, - "dependencies": { - "iconv-lite": { - "version": "0.4.21", - "bundled": true, - "requires": { - "safer-buffer": "2.1.2" - }, - "dependencies": { - "safer-buffer": { - "version": "2.1.2", - "bundled": true - } - } - } - } - } - } - }, - "socks-proxy-agent": { - "version": "3.0.1", - "bundled": true, - "requires": { - "agent-base": "4.2.0", - "socks": "1.1.10" - }, - "dependencies": { - "agent-base": { - "version": "4.2.0", - "bundled": true, - "requires": { - "es6-promisify": "5.0.0" - }, - "dependencies": { - "es6-promisify": { - "version": "5.0.0", - "bundled": true, - "requires": { - "es6-promise": "4.2.4" - }, - "dependencies": { - "es6-promise": { - "version": "4.2.4", - "bundled": true - } - } - } - } - }, - "socks": { - "version": "1.1.10", - "bundled": true, - "requires": { - "ip": "1.1.5", - "smart-buffer": "1.1.15" - }, - "dependencies": { - "ip": { - "version": "1.1.5", - "bundled": true - }, - "smart-buffer": { - "version": "1.1.15", - "bundled": true - } - } - } - } - } - } - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "requires": { - "brace-expansion": "1.1.11" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - }, - "dependencies": { - "balanced-match": { - "version": "1.0.0", - "bundled": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true - } - } - } - } - }, - "promise-retry": { - "version": "1.1.1", - "bundled": true, - "requires": { - "err-code": "1.1.2", - "retry": "0.10.1" - }, - "dependencies": { - "err-code": { - "version": "1.1.2", - "bundled": true - }, - "retry": { - "version": "0.10.1", - "bundled": true - } - } - }, - "ssri": { - "version": "5.3.0", - "bundled": true, - "requires": { - "safe-buffer": "5.1.2" - } - } - } - }, - "protoduck": { - "version": "5.0.0", - "bundled": true, - "requires": { - "genfun": "4.0.1" - }, - "dependencies": { - "genfun": { - "version": "4.0.1", - "bundled": true - } - } - } - } - }, - "libnpmhook": { - "version": "4.0.1", - "bundled": true, - "requires": { - "figgy-pudding": "3.1.0", - "npm-registry-fetch": "3.1.1" - }, - "dependencies": { - "npm-registry-fetch": { - "version": "3.1.1", - "bundled": true, - "requires": { - "bluebird": "3.5.1", - "figgy-pudding": "3.1.0", - "lru-cache": "4.1.2", - "make-fetch-happen": "4.0.1", - "npm-package-arg": "6.1.0" - }, - "dependencies": { - "make-fetch-happen": { - "version": "4.0.1", - "bundled": true, - "requires": { - "agentkeepalive": "3.4.1", - "cacache": "11.0.1", - "http-cache-semantics": "3.8.1", - "http-proxy-agent": "2.1.0", - "https-proxy-agent": "2.2.1", - "lru-cache": "4.1.2", - "mississippi": "3.0.0", - "node-fetch-npm": "2.0.2", - "promise-retry": "1.1.1", - "socks-proxy-agent": "4.0.0", - "ssri": "6.0.0" - }, - "dependencies": { - "agentkeepalive": { - "version": "3.4.1", - "bundled": true, - "requires": { - "humanize-ms": "1.2.1" - }, - "dependencies": { - "humanize-ms": { - "version": "1.2.1", - "bundled": true, - "requires": { - "ms": "2.1.1" - }, - "dependencies": { - "ms": { - "version": "2.1.1", - "bundled": true - } - } - } - } - }, - "http-cache-semantics": { - "version": "3.8.1", - "bundled": true - }, - "http-proxy-agent": { - "version": "2.1.0", - "bundled": true, - "requires": { - "agent-base": "4.2.0", - "debug": "3.1.0" - }, - "dependencies": { - "agent-base": { - "version": "4.2.0", - "bundled": true, - "requires": { - "es6-promisify": "5.0.0" - }, - "dependencies": { - "es6-promisify": { - "version": "5.0.0", - "bundled": true, - "requires": { - "es6-promise": "4.2.4" - }, - "dependencies": { - "es6-promise": { - "version": "4.2.4", - "bundled": true - } - } - } - } - }, - "debug": { - "version": "3.1.0", - "bundled": true, - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "bundled": true - } - } - } - } - }, - "https-proxy-agent": { - "version": "2.2.1", - "bundled": true, - "requires": { - "agent-base": "4.2.0", - "debug": "3.1.0" - }, - "dependencies": { - "agent-base": { - "version": "4.2.0", - "bundled": true, - "requires": { - "es6-promisify": "5.0.0" - }, - "dependencies": { - "es6-promisify": { - "version": "5.0.0", - "bundled": true, - "requires": { - "es6-promise": "4.2.4" - }, - "dependencies": { - "es6-promise": { - "version": "4.2.4", - "bundled": true - } - } - } - } - }, - "debug": { - "version": "3.1.0", - "bundled": true, - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "bundled": true - } - } - } - } - }, - "node-fetch-npm": { - "version": "2.0.2", - "bundled": true, - "requires": { - "encoding": "0.1.12", - "json-parse-better-errors": "1.0.2", - "safe-buffer": "5.1.2" - }, - "dependencies": { - "encoding": { - "version": "0.1.12", - "bundled": true, - "requires": { - "iconv-lite": "0.4.21" - }, - "dependencies": { - "iconv-lite": { - "version": "0.4.21", - "bundled": true, - "requires": { - "safer-buffer": "2.1.2" - }, - "dependencies": { - "safer-buffer": { - "version": "2.1.2", - "bundled": true - } - } - } - } - } - } - }, - "promise-retry": { - "version": "1.1.1", - "bundled": true, - "requires": { - "err-code": "1.1.2", - "retry": "0.10.1" - }, - "dependencies": { - "err-code": { - "version": "1.1.2", - "bundled": true - }, - "retry": { - "version": "0.10.1", - "bundled": true - } - } - }, - "socks-proxy-agent": { - "version": "4.0.0", - "bundled": true, - "requires": { - "agent-base": "4.1.2", - "socks": "2.1.6" - }, - "dependencies": { - "agent-base": { - "version": "4.1.2", - "bundled": true, - "requires": { - "es6-promisify": "5.0.0" - }, - "dependencies": { - "es6-promisify": { - "version": "5.0.0", - "bundled": true, - "requires": { - "es6-promise": "4.2.4" - }, - "dependencies": { - "es6-promise": { - "version": "4.2.4", - "bundled": true - } - } - } - } - }, - "socks": { - "version": "2.1.6", - "bundled": true, - "requires": { - "ip": "1.1.5", - "smart-buffer": "4.0.1" - }, - "dependencies": { - "ip": { - "version": "1.1.5", - "bundled": true - }, - "smart-buffer": { - "version": "4.0.1", - "bundled": true - } - } - } - } - } - } - } - } - } - } - }, - "libnpx": { - "version": "10.2.0", - "bundled": true, - "requires": { - "dotenv": "5.0.1", - "npm-package-arg": "6.1.0", - "rimraf": "2.6.2", - "safe-buffer": "5.1.2", - "update-notifier": "2.5.0", - "which": "1.3.0", - "y18n": "4.0.0", - "yargs": "11.0.0" - }, - "dependencies": { - "dotenv": { - "version": "5.0.1", - "bundled": true - }, - "y18n": { - "version": "4.0.0", - "bundled": true - }, - "yargs": { - "version": "11.0.0", - "bundled": true, - "requires": { - "cliui": "4.0.0", - "decamelize": "1.2.0", - "find-up": "2.1.0", - "get-caller-file": "1.0.2", - "os-locale": "2.1.0", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", - "y18n": "3.2.1", - "yargs-parser": "9.0.2" - }, - "dependencies": { - "cliui": { - "version": "4.0.0", - "bundled": true, - "requires": { - "string-width": "2.1.1", - "strip-ansi": "4.0.0", - "wrap-ansi": "2.1.0" - }, - "dependencies": { - "wrap-ansi": { - "version": "2.1.0", - "bundled": true, - "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" - }, - "dependencies": { - "string-width": { - "version": "1.0.2", - "bundled": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - }, - "dependencies": { - "code-point-at": { - "version": "1.1.0", - "bundled": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "requires": { - "number-is-nan": "1.0.1" - }, - "dependencies": { - "number-is-nan": { - "version": "1.0.1", - "bundled": true - } - } - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "2.1.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "bundled": true - } - } - } - } - } - } - }, - "decamelize": { - "version": "1.2.0", - "bundled": true - }, - "find-up": { - "version": "2.1.0", - "bundled": true, - "requires": { - "locate-path": "2.0.0" - }, - "dependencies": { - "locate-path": { - "version": "2.0.0", - "bundled": true, - "requires": { - "p-locate": "2.0.0", - "path-exists": "3.0.0" - }, - "dependencies": { - "p-locate": { - "version": "2.0.0", - "bundled": true, - "requires": { - "p-limit": "1.2.0" - }, - "dependencies": { - "p-limit": { - "version": "1.2.0", - "bundled": true, - "requires": { - "p-try": "1.0.0" - }, - "dependencies": { - "p-try": { - "version": "1.0.0", - "bundled": true - } - } - } - } - }, - "path-exists": { - "version": "3.0.0", - "bundled": true - } - } - } - } - }, - "get-caller-file": { - "version": "1.0.2", - "bundled": true - }, - "os-locale": { - "version": "2.1.0", - "bundled": true, - "requires": { - "execa": "0.7.0", - "lcid": "1.0.0", - "mem": "1.1.0" - }, - "dependencies": { - "execa": { - "version": "0.7.0", - "bundled": true, - "requires": { - "cross-spawn": "5.1.0", - "get-stream": "3.0.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "bundled": true, - "requires": { - "lru-cache": "4.1.2", - "shebang-command": "1.2.0", - "which": "1.3.0" - }, - "dependencies": { - "shebang-command": { - "version": "1.2.0", - "bundled": true, - "requires": { - "shebang-regex": "1.0.0" - }, - "dependencies": { - "shebang-regex": { - "version": "1.0.0", - "bundled": true - } - } - } - } - }, - "get-stream": { - "version": "3.0.0", - "bundled": true - }, - "is-stream": { - "version": "1.1.0", - "bundled": true - }, - "npm-run-path": { - "version": "2.0.2", - "bundled": true, - "requires": { - "path-key": "2.0.1" - }, - "dependencies": { - "path-key": { - "version": "2.0.1", - "bundled": true - } - } - }, - "p-finally": { - "version": "1.0.0", - "bundled": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true - }, - "strip-eof": { - "version": "1.0.0", - "bundled": true - } - } - }, - "lcid": { - "version": "1.0.0", - "bundled": true, - "requires": { - "invert-kv": "1.0.0" - }, - "dependencies": { - "invert-kv": { - "version": "1.0.0", - "bundled": true - } - } - }, - "mem": { - "version": "1.1.0", - "bundled": true, - "requires": { - "mimic-fn": "1.2.0" - }, - "dependencies": { - "mimic-fn": { - "version": "1.2.0", - "bundled": true - } - } - } - } - }, - "require-directory": { - "version": "2.1.1", - "bundled": true - }, - "require-main-filename": { - "version": "1.0.1", - "bundled": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true - }, - "string-width": { - "version": "2.1.1", - "bundled": true, - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "2.0.0", - "bundled": true - } - } - }, - "which-module": { - "version": "2.0.0", - "bundled": true - }, - "y18n": { - "version": "3.2.1", - "bundled": true - }, - "yargs-parser": { - "version": "9.0.2", - "bundled": true, - "requires": { - "camelcase": "4.1.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "bundled": true - } - } - } - } - } - } - }, - "lock-verify": { - "version": "2.0.2", - "bundled": true, - "requires": { - "npm-package-arg": "6.1.0", - "semver": "5.5.0" - } - }, - "lockfile": { - "version": "1.0.4", - "bundled": true, - "requires": { - "signal-exit": "3.0.2" - }, - "dependencies": { - "signal-exit": { - "version": "3.0.2", - "bundled": true - } - } - }, - "lodash._baseindexof": { - "version": "3.1.0", - "bundled": true - }, - "lodash._baseuniq": { - "version": "4.6.0", - "bundled": true, - "requires": { - "lodash._createset": "4.0.3", - "lodash._root": "3.0.1" - }, - "dependencies": { - "lodash._createset": { - "version": "4.0.3", - "bundled": true - }, - "lodash._root": { - "version": "3.0.1", - "bundled": true - } - } - }, - "lodash._bindcallback": { - "version": "3.0.1", - "bundled": true - }, - "lodash._cacheindexof": { - "version": "3.0.2", - "bundled": true - }, - "lodash._createcache": { - "version": "3.1.2", - "bundled": true, - "requires": { - "lodash._getnative": "3.9.1" - } - }, - "lodash._getnative": { - "version": "3.9.1", - "bundled": true - }, - "lodash.clonedeep": { - "version": "4.5.0", - "bundled": true - }, - "lodash.restparam": { - "version": "3.6.1", - "bundled": true - }, - "lodash.union": { - "version": "4.6.0", - "bundled": true - }, - "lodash.uniq": { - "version": "4.5.0", - "bundled": true - }, - "lodash.without": { - "version": "4.4.0", - "bundled": true - }, - "lru-cache": { - "version": "4.1.2", - "bundled": true, - "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" - }, - "dependencies": { - "pseudomap": { - "version": "1.0.2", - "bundled": true - }, - "yallist": { - "version": "2.1.2", - "bundled": true - } - } - }, - "meant": { - "version": "1.0.1", - "bundled": true - }, - "mississippi": { - "version": "3.0.0", - "bundled": true, - "requires": { - "concat-stream": "1.6.1", - "duplexify": "3.5.4", - "end-of-stream": "1.4.1", - "flush-write-stream": "1.0.2", - "from2": "2.3.0", - "parallel-transform": "1.1.0", - "pump": "3.0.0", - "pumpify": "1.4.0", - "stream-each": "1.2.2", - "through2": "2.0.3" - }, - "dependencies": { - "concat-stream": { - "version": "1.6.1", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "typedarray": "0.0.6" - }, - "dependencies": { - "typedarray": { - "version": "0.0.6", - "bundled": true - } - } - }, - "duplexify": { - "version": "3.5.4", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "stream-shift": "1.0.0" - }, - "dependencies": { - "stream-shift": { - "version": "1.0.0", - "bundled": true - } - } - }, - "end-of-stream": { - "version": "1.4.1", - "bundled": true, - "requires": { - "once": "1.4.0" - } - }, - "flush-write-stream": { - "version": "1.0.2", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" - } - }, - "from2": { - "version": "2.3.0", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" - } - }, - "parallel-transform": { - "version": "1.1.0", - "bundled": true, - "requires": { - "cyclist": "0.2.2", - "inherits": "2.0.3", - "readable-stream": "2.3.6" - }, - "dependencies": { - "cyclist": { - "version": "0.2.2", - "bundled": true - } - } - }, - "pump": { - "version": "3.0.0", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" - } - }, - "pumpify": { - "version": "1.4.0", - "bundled": true, - "requires": { - "duplexify": "3.5.4", - "inherits": "2.0.3", - "pump": "2.0.1" - }, - "dependencies": { - "pump": { - "version": "2.0.1", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" - } - } - } - }, - "stream-each": { - "version": "1.2.2", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "stream-shift": "1.0.0" - }, - "dependencies": { - "stream-shift": { - "version": "1.0.0", - "bundled": true - } - } - }, - "through2": { - "version": "2.0.3", - "bundled": true, - "requires": { - "readable-stream": "2.3.6", - "xtend": "4.0.1" - }, - "dependencies": { - "xtend": { - "version": "4.0.1", - "bundled": true - } - } - } - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "bundled": true - } - } - }, - "move-concurrently": { - "version": "1.0.1", - "bundled": true, - "requires": { - "aproba": "1.2.0", - "copy-concurrently": "1.0.5", - "fs-write-stream-atomic": "1.0.10", - "mkdirp": "0.5.1", - "rimraf": "2.6.2", - "run-queue": "1.0.3" - }, - "dependencies": { - "copy-concurrently": { - "version": "1.0.5", - "bundled": true, - "requires": { - "aproba": "1.2.0", - "fs-write-stream-atomic": "1.0.10", - "iferr": "0.1.5", - "mkdirp": "0.5.1", - "rimraf": "2.6.2", - "run-queue": "1.0.3" - }, - "dependencies": { - "iferr": { - "version": "0.1.5", - "bundled": true - } - } - }, - "run-queue": { - "version": "1.0.3", - "bundled": true, - "requires": { - "aproba": "1.2.0" - } - } - } - }, - "node-gyp": { - "version": "3.6.2", - "bundled": true, - "requires": { - "fstream": "1.0.11", - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "nopt": "3.0.6", - "npmlog": "4.1.2", - "osenv": "0.1.5", - "request": "2.85.0", - "rimraf": "2.6.2", - "semver": "5.3.0", - "tar": "2.2.1", - "which": "1.3.0" - }, - "dependencies": { - "fstream": { - "version": "1.0.11", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.2" - } - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "requires": { - "brace-expansion": "1.1.11" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - }, - "dependencies": { - "balanced-match": { - "version": "1.0.0", - "bundled": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true - } - } - } - } - }, - "nopt": { - "version": "3.0.6", - "bundled": true, - "requires": { - "abbrev": "1.1.1" - } - }, - "semver": { - "version": "5.3.0", - "bundled": true - }, - "tar": { - "version": "2.2.1", - "bundled": true, - "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" - }, - "dependencies": { - "block-stream": { - "version": "0.0.9", - "bundled": true, - "requires": { - "inherits": "2.0.3" - } - } - } - } - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "requires": { - "abbrev": "1.1.1", - "osenv": "0.1.5" - } - }, - "normalize-package-data": { - "version": "2.4.0", - "bundled": true, - "requires": { - "hosted-git-info": "2.6.0", - "is-builtin-module": "1.0.0", - "semver": "5.5.0", - "validate-npm-package-license": "3.0.3" - }, - "dependencies": { - "is-builtin-module": { - "version": "1.0.0", - "bundled": true, - "requires": { - "builtin-modules": "1.1.1" - }, - "dependencies": { - "builtin-modules": { - "version": "1.1.1", - "bundled": true - } - } - } - } - }, - "npm-audit-report": { - "version": "1.0.8", - "bundled": true, - "requires": { - "cli-table2": "0.2.0", - "console-control-strings": "1.1.0" - }, - "dependencies": { - "console-control-strings": { - "version": "1.1.0", - "bundled": true - } - } - }, - "npm-cache-filename": { - "version": "1.0.2", - "bundled": true - }, - "npm-install-checks": { - "version": "3.0.0", - "bundled": true, - "requires": { - "semver": "5.5.0" - } - }, - "npm-lifecycle": { - "version": "2.0.1", - "bundled": true, - "requires": { - "byline": "5.0.0", - "graceful-fs": "4.1.11", - "node-gyp": "3.6.2", - "resolve-from": "4.0.0", - "slide": "1.1.6", - "uid-number": "0.0.6", - "umask": "1.1.0", - "which": "1.3.0" - }, - "dependencies": { - "byline": { - "version": "5.0.0", - "bundled": true - }, - "resolve-from": { - "version": "4.0.0", - "bundled": true - } - } - }, - "npm-package-arg": { - "version": "6.1.0", - "bundled": true, - "requires": { - "hosted-git-info": "2.6.0", - "osenv": "0.1.5", - "semver": "5.5.0", - "validate-npm-package-name": "3.0.0" - } - }, - "npm-packlist": { - "version": "1.1.10", - "bundled": true, - "requires": { - "ignore-walk": "3.0.1", - "npm-bundled": "1.0.3" - }, - "dependencies": { - "ignore-walk": { - "version": "3.0.1", - "bundled": true, - "requires": { - "minimatch": "3.0.4" - }, - "dependencies": { - "minimatch": { - "version": "3.0.4", - "bundled": true, - "requires": { - "brace-expansion": "1.1.8" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.8", - "bundled": true, - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - }, - "dependencies": { - "balanced-match": { - "version": "1.0.0", - "bundled": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true - } - } - } - } - } - } - }, - "npm-bundled": { - "version": "1.0.3", - "bundled": true - } - } - }, - "npm-pick-manifest": { - "version": "2.1.0", - "bundled": true, - "requires": { - "npm-package-arg": "6.1.0", - "semver": "5.5.0" - } - }, - "npm-profile": { - "version": "3.0.1", - "bundled": true, - "requires": { - "aproba": "1.2.0", - "make-fetch-happen": "2.6.0" - }, - "dependencies": { - "make-fetch-happen": { - "version": "2.6.0", - "bundled": true, - "requires": { - "agentkeepalive": "3.3.0", - "cacache": "10.0.4", - "http-cache-semantics": "3.8.1", - "http-proxy-agent": "2.0.0", - "https-proxy-agent": "2.1.1", - "lru-cache": "4.1.2", - "mississippi": "1.3.1", - "node-fetch-npm": "2.0.2", - "promise-retry": "1.1.1", - "socks-proxy-agent": "3.0.1", - "ssri": "5.3.0" - }, - "dependencies": { - "agentkeepalive": { - "version": "3.3.0", - "bundled": true, - "requires": { - "humanize-ms": "1.2.1" - }, - "dependencies": { - "humanize-ms": { - "version": "1.2.1", - "bundled": true, - "requires": { - "ms": "2.1.1" - }, - "dependencies": { - "ms": { - "version": "2.1.1", - "bundled": true - } - } - } - } - }, - "cacache": { - "version": "10.0.4", - "bundled": true, - "requires": { - "bluebird": "3.5.1", - "chownr": "1.0.1", - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "lru-cache": "4.1.2", - "mississippi": "2.0.0", - "mkdirp": "0.5.1", - "move-concurrently": "1.0.1", - "promise-inflight": "1.0.1", - "rimraf": "2.6.2", - "ssri": "5.3.0", - "unique-filename": "1.1.0", - "y18n": "4.0.0" - }, - "dependencies": { - "mississippi": { - "version": "2.0.0", - "bundled": true, - "requires": { - "concat-stream": "1.6.2", - "duplexify": "3.5.4", - "end-of-stream": "1.4.1", - "flush-write-stream": "1.0.3", - "from2": "2.3.0", - "parallel-transform": "1.1.0", - "pump": "2.0.1", - "pumpify": "1.4.0", - "stream-each": "1.2.2", - "through2": "2.0.3" - }, - "dependencies": { - "concat-stream": { - "version": "1.6.2", - "bundled": true, - "requires": { - "buffer-from": "1.0.0", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "typedarray": "0.0.6" - }, - "dependencies": { - "buffer-from": { - "version": "1.0.0", - "bundled": true - }, - "typedarray": { - "version": "0.0.6", - "bundled": true - } - } - }, - "duplexify": { - "version": "3.5.4", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "stream-shift": "1.0.0" - }, - "dependencies": { - "stream-shift": { - "version": "1.0.0", - "bundled": true - } - } - }, - "end-of-stream": { - "version": "1.4.1", - "bundled": true, - "requires": { - "once": "1.4.0" - } - }, - "flush-write-stream": { - "version": "1.0.3", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" - } - }, - "from2": { - "version": "2.3.0", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" - } - }, - "parallel-transform": { - "version": "1.1.0", - "bundled": true, - "requires": { - "cyclist": "0.2.2", - "inherits": "2.0.3", - "readable-stream": "2.3.6" - }, - "dependencies": { - "cyclist": { - "version": "0.2.2", - "bundled": true - } - } - }, - "pump": { - "version": "2.0.1", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" - } - }, - "pumpify": { - "version": "1.4.0", - "bundled": true, - "requires": { - "duplexify": "3.5.4", - "inherits": "2.0.3", - "pump": "2.0.1" - } - }, - "stream-each": { - "version": "1.2.2", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "stream-shift": "1.0.0" - }, - "dependencies": { - "stream-shift": { - "version": "1.0.0", - "bundled": true - } - } - }, - "through2": { - "version": "2.0.3", - "bundled": true, - "requires": { - "readable-stream": "2.3.6", - "xtend": "4.0.1" - }, - "dependencies": { - "xtend": { - "version": "4.0.1", - "bundled": true - } - } - } - } - }, - "y18n": { - "version": "4.0.0", - "bundled": true - } - } - }, - "http-cache-semantics": { - "version": "3.8.1", - "bundled": true - }, - "http-proxy-agent": { - "version": "2.0.0", - "bundled": true, - "requires": { - "agent-base": "4.2.0", - "debug": "2.6.9" - }, - "dependencies": { - "agent-base": { - "version": "4.2.0", - "bundled": true, - "requires": { - "es6-promisify": "5.0.0" - }, - "dependencies": { - "es6-promisify": { - "version": "5.0.0", - "bundled": true, - "requires": { - "es6-promise": "4.2.4" - }, - "dependencies": { - "es6-promise": { - "version": "4.2.4", - "bundled": true - } - } - } - } - }, - "debug": { - "version": "2.6.9", - "bundled": true, - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "bundled": true - } - } - } - } - }, - "https-proxy-agent": { - "version": "2.1.1", - "bundled": true, - "requires": { - "agent-base": "4.2.0", - "debug": "3.1.0" - }, - "dependencies": { - "agent-base": { - "version": "4.2.0", - "bundled": true, - "requires": { - "es6-promisify": "5.0.0" - }, - "dependencies": { - "es6-promisify": { - "version": "5.0.0", - "bundled": true, - "requires": { - "es6-promise": "4.2.4" - }, - "dependencies": { - "es6-promise": { - "version": "4.2.4", - "bundled": true - } - } - } - } - }, - "debug": { - "version": "3.1.0", - "bundled": true, - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "bundled": true - } - } - } - } - }, - "mississippi": { - "version": "1.3.1", - "bundled": true, - "requires": { - "concat-stream": "1.6.0", - "duplexify": "3.5.3", - "end-of-stream": "1.4.1", - "flush-write-stream": "1.0.2", - "from2": "2.3.0", - "parallel-transform": "1.1.0", - "pump": "1.0.3", - "pumpify": "1.4.0", - "stream-each": "1.2.2", - "through2": "2.0.3" - }, - "dependencies": { - "concat-stream": { - "version": "1.6.0", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "typedarray": "0.0.6" - }, - "dependencies": { - "typedarray": { - "version": "0.0.6", - "bundled": true - } - } - }, - "duplexify": { - "version": "3.5.3", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "stream-shift": "1.0.0" - }, - "dependencies": { - "stream-shift": { - "version": "1.0.0", - "bundled": true - } - } - }, - "end-of-stream": { - "version": "1.4.1", - "bundled": true, - "requires": { - "once": "1.4.0" - } - }, - "flush-write-stream": { - "version": "1.0.2", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" - } - }, - "from2": { - "version": "2.3.0", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" - } - }, - "parallel-transform": { - "version": "1.1.0", - "bundled": true, - "requires": { - "cyclist": "0.2.2", - "inherits": "2.0.3", - "readable-stream": "2.3.6" - }, - "dependencies": { - "cyclist": { - "version": "0.2.2", - "bundled": true - } - } - }, - "pump": { - "version": "1.0.3", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" - } - }, - "pumpify": { - "version": "1.4.0", - "bundled": true, - "requires": { - "duplexify": "3.5.3", - "inherits": "2.0.3", - "pump": "2.0.1" - }, - "dependencies": { - "pump": { - "version": "2.0.1", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" - } - } - } - }, - "stream-each": { - "version": "1.2.2", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "stream-shift": "1.0.0" - }, - "dependencies": { - "stream-shift": { - "version": "1.0.0", - "bundled": true - } - } - }, - "through2": { - "version": "2.0.3", - "bundled": true, - "requires": { - "readable-stream": "2.3.6", - "xtend": "4.0.1" - }, - "dependencies": { - "xtend": { - "version": "4.0.1", - "bundled": true - } - } - } - } - }, - "node-fetch-npm": { - "version": "2.0.2", - "bundled": true, - "requires": { - "encoding": "0.1.12", - "json-parse-better-errors": "1.0.1", - "safe-buffer": "5.1.2" - }, - "dependencies": { - "encoding": { - "version": "0.1.12", - "bundled": true, - "requires": { - "iconv-lite": "0.4.19" - }, - "dependencies": { - "iconv-lite": { - "version": "0.4.19", - "bundled": true - } - } - }, - "json-parse-better-errors": { - "version": "1.0.1", - "bundled": true - } - } - }, - "promise-retry": { - "version": "1.1.1", - "bundled": true, - "requires": { - "err-code": "1.1.2", - "retry": "0.10.1" - }, - "dependencies": { - "err-code": { - "version": "1.1.2", - "bundled": true - }, - "retry": { - "version": "0.10.1", - "bundled": true - } - } - }, - "socks-proxy-agent": { - "version": "3.0.1", - "bundled": true, - "requires": { - "agent-base": "4.2.0", - "socks": "1.1.10" - }, - "dependencies": { - "agent-base": { - "version": "4.2.0", - "bundled": true, - "requires": { - "es6-promisify": "5.0.0" - }, - "dependencies": { - "es6-promisify": { - "version": "5.0.0", - "bundled": true, - "requires": { - "es6-promise": "4.2.4" - }, - "dependencies": { - "es6-promise": { - "version": "4.2.4", - "bundled": true - } - } - } - } - }, - "socks": { - "version": "1.1.10", - "bundled": true, - "requires": { - "ip": "1.1.5", - "smart-buffer": "1.1.15" - }, - "dependencies": { - "ip": { - "version": "1.1.5", - "bundled": true - }, - "smart-buffer": { - "version": "1.1.15", - "bundled": true - } - } - } - } - }, - "ssri": { - "version": "5.3.0", - "bundled": true, - "requires": { - "safe-buffer": "5.1.2" - } - } - } - } - } - }, - "npm-registry-client": { - "version": "8.5.1", - "bundled": true, - "requires": { - "concat-stream": "1.6.1", - "graceful-fs": "4.1.11", - "normalize-package-data": "2.4.0", - "npm-package-arg": "6.1.0", - "npmlog": "4.1.2", - "once": "1.4.0", - "request": "2.85.0", - "retry": "0.10.1", - "safe-buffer": "5.1.2", - "semver": "5.5.0", - "slide": "1.1.6", - "ssri": "5.3.0" - }, - "dependencies": { - "concat-stream": { - "version": "1.6.1", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "typedarray": "0.0.6" - }, - "dependencies": { - "typedarray": { - "version": "0.0.6", - "bundled": true - } - } - }, - "retry": { - "version": "0.10.1", - "bundled": true - }, - "ssri": { - "version": "5.3.0", - "bundled": true, - "requires": { - "safe-buffer": "5.1.2" - } - } - } - }, - "npm-registry-fetch": { - "version": "1.1.0", - "bundled": true, - "requires": { - "bluebird": "3.5.1", - "figgy-pudding": "2.0.1", - "lru-cache": "4.1.2", - "make-fetch-happen": "3.0.0", - "npm-package-arg": "6.1.0", - "safe-buffer": "5.1.2" - }, - "dependencies": { - "figgy-pudding": { - "version": "2.0.1", - "bundled": true - }, - "make-fetch-happen": { - "version": "3.0.0", - "bundled": true, - "requires": { - "agentkeepalive": "3.4.1", - "cacache": "10.0.4", - "http-cache-semantics": "3.8.1", - "http-proxy-agent": "2.1.0", - "https-proxy-agent": "2.2.1", - "lru-cache": "4.1.2", - "mississippi": "3.0.0", - "node-fetch-npm": "2.0.2", - "promise-retry": "1.1.1", - "socks-proxy-agent": "3.0.1", - "ssri": "5.3.0" - }, - "dependencies": { - "agentkeepalive": { - "version": "3.4.1", - "bundled": true, - "requires": { - "humanize-ms": "1.2.1" - }, - "dependencies": { - "humanize-ms": { - "version": "1.2.1", - "bundled": true, - "requires": { - "ms": "2.1.1" - }, - "dependencies": { - "ms": { - "version": "2.1.1", - "bundled": true - } - } - } - } - }, - "cacache": { - "version": "10.0.4", - "bundled": true, - "requires": { - "bluebird": "3.5.1", - "chownr": "1.0.1", - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "lru-cache": "4.1.2", - "mississippi": "2.0.0", - "mkdirp": "0.5.1", - "move-concurrently": "1.0.1", - "promise-inflight": "1.0.1", - "rimraf": "2.6.2", - "ssri": "5.3.0", - "unique-filename": "1.1.0", - "y18n": "4.0.0" - }, - "dependencies": { - "mississippi": { - "version": "2.0.0", - "bundled": true, - "requires": { - "concat-stream": "1.6.2", - "duplexify": "3.5.4", - "end-of-stream": "1.4.1", - "flush-write-stream": "1.0.3", - "from2": "2.3.0", - "parallel-transform": "1.1.0", - "pump": "2.0.1", - "pumpify": "1.4.0", - "stream-each": "1.2.2", - "through2": "2.0.3" - }, - "dependencies": { - "concat-stream": { - "version": "1.6.2", - "bundled": true, - "requires": { - "buffer-from": "1.0.0", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "typedarray": "0.0.6" - }, - "dependencies": { - "buffer-from": { - "version": "1.0.0", - "bundled": true - }, - "typedarray": { - "version": "0.0.6", - "bundled": true - } - } - }, - "duplexify": { - "version": "3.5.4", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "stream-shift": "1.0.0" - }, - "dependencies": { - "stream-shift": { - "version": "1.0.0", - "bundled": true - } - } - }, - "end-of-stream": { - "version": "1.4.1", - "bundled": true, - "requires": { - "once": "1.4.0" - } - }, - "flush-write-stream": { - "version": "1.0.3", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" - } - }, - "from2": { - "version": "2.3.0", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" - } - }, - "parallel-transform": { - "version": "1.1.0", - "bundled": true, - "requires": { - "cyclist": "0.2.2", - "inherits": "2.0.3", - "readable-stream": "2.3.6" - }, - "dependencies": { - "cyclist": { - "version": "0.2.2", - "bundled": true - } - } - }, - "pump": { - "version": "2.0.1", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" - } - }, - "pumpify": { - "version": "1.4.0", - "bundled": true, - "requires": { - "duplexify": "3.5.4", - "inherits": "2.0.3", - "pump": "2.0.1" - } - }, - "stream-each": { - "version": "1.2.2", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "stream-shift": "1.0.0" - }, - "dependencies": { - "stream-shift": { - "version": "1.0.0", - "bundled": true - } - } - }, - "through2": { - "version": "2.0.3", - "bundled": true, - "requires": { - "readable-stream": "2.3.6", - "xtend": "4.0.1" - }, - "dependencies": { - "xtend": { - "version": "4.0.1", - "bundled": true - } - } - } - } - }, - "y18n": { - "version": "4.0.0", - "bundled": true - } - } - }, - "http-cache-semantics": { - "version": "3.8.1", - "bundled": true - }, - "http-proxy-agent": { - "version": "2.1.0", - "bundled": true, - "requires": { - "agent-base": "4.2.0", - "debug": "3.1.0" - }, - "dependencies": { - "agent-base": { - "version": "4.2.0", - "bundled": true, - "requires": { - "es6-promisify": "5.0.0" - }, - "dependencies": { - "es6-promisify": { - "version": "5.0.0", - "bundled": true, - "requires": { - "es6-promise": "4.2.4" - }, - "dependencies": { - "es6-promise": { - "version": "4.2.4", - "bundled": true - } - } - } - } - }, - "debug": { - "version": "3.1.0", - "bundled": true, - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "bundled": true - } - } - } - } - }, - "https-proxy-agent": { - "version": "2.2.1", - "bundled": true, - "requires": { - "agent-base": "4.2.0", - "debug": "3.1.0" - }, - "dependencies": { - "agent-base": { - "version": "4.2.0", - "bundled": true, - "requires": { - "es6-promisify": "5.0.0" - }, - "dependencies": { - "es6-promisify": { - "version": "5.0.0", - "bundled": true, - "requires": { - "es6-promise": "4.2.4" - }, - "dependencies": { - "es6-promise": { - "version": "4.2.4", - "bundled": true - } - } - } - } - }, - "debug": { - "version": "3.1.0", - "bundled": true, - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "bundled": true - } - } - } - } - }, - "node-fetch-npm": { - "version": "2.0.2", - "bundled": true, - "requires": { - "encoding": "0.1.12", - "json-parse-better-errors": "1.0.2", - "safe-buffer": "5.1.2" - }, - "dependencies": { - "encoding": { - "version": "0.1.12", - "bundled": true, - "requires": { - "iconv-lite": "0.4.21" - }, - "dependencies": { - "iconv-lite": { - "version": "0.4.21", - "bundled": true, - "requires": { - "safer-buffer": "2.1.2" - }, - "dependencies": { - "safer-buffer": { - "version": "2.1.2", - "bundled": true - } - } - } - } - } - } - }, - "promise-retry": { - "version": "1.1.1", - "bundled": true, - "requires": { - "err-code": "1.1.2", - "retry": "0.10.1" - }, - "dependencies": { - "err-code": { - "version": "1.1.2", - "bundled": true - }, - "retry": { - "version": "0.10.1", - "bundled": true - } - } - }, - "socks-proxy-agent": { - "version": "3.0.1", - "bundled": true, - "requires": { - "agent-base": "4.2.0", - "socks": "1.1.10" - }, - "dependencies": { - "agent-base": { - "version": "4.2.0", - "bundled": true, - "requires": { - "es6-promisify": "5.0.0" - }, - "dependencies": { - "es6-promisify": { - "version": "5.0.0", - "bundled": true, - "requires": { - "es6-promise": "4.2.4" - }, - "dependencies": { - "es6-promise": { - "version": "4.2.4", - "bundled": true - } - } - } - } - }, - "socks": { - "version": "1.1.10", - "bundled": true, - "requires": { - "ip": "1.1.5", - "smart-buffer": "1.1.15" - }, - "dependencies": { - "ip": { - "version": "1.1.5", - "bundled": true - }, - "smart-buffer": { - "version": "1.1.15", - "bundled": true - } - } - } - } - }, - "ssri": { - "version": "5.3.0", - "bundled": true, - "requires": { - "safe-buffer": "5.1.2" - } - } - } - } - } - }, - "npm-user-validate": { - "version": "1.0.0", - "bundled": true - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "requires": { - "are-we-there-yet": "1.1.4", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" - }, - "dependencies": { - "are-we-there-yet": { - "version": "1.1.4", - "bundled": true, - "requires": { - "delegates": "1.0.0", - "readable-stream": "2.3.6" - }, - "dependencies": { - "delegates": { - "version": "1.0.0", - "bundled": true - } - } - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "requires": { - "aproba": "1.2.0", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.1", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.2" - }, - "dependencies": { - "object-assign": { - "version": "4.1.1", - "bundled": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - }, - "dependencies": { - "code-point-at": { - "version": "1.1.0", - "bundled": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "requires": { - "number-is-nan": "1.0.1" - }, - "dependencies": { - "number-is-nan": { - "version": "1.0.1", - "bundled": true - } - } - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "2.1.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "bundled": true - } - } - }, - "wide-align": { - "version": "1.1.2", - "bundled": true, - "requires": { - "string-width": "1.0.2" - } - } - } - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true - } - } - }, - "once": { - "version": "1.4.0", - "bundled": true, - "requires": { - "wrappy": "1.0.2" - } - }, - "opener": { - "version": "1.4.3", - "bundled": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" - }, - "dependencies": { - "os-homedir": { - "version": "1.0.2", - "bundled": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true - } - } - }, - "pacote": { - "version": "8.1.1", - "bundled": true, - "requires": { - "bluebird": "3.5.1", - "cacache": "11.0.1", - "get-stream": "3.0.0", - "glob": "7.1.2", - "lru-cache": "4.1.2", - "make-fetch-happen": "4.0.1", - "minimatch": "3.0.4", - "mississippi": "3.0.0", - "mkdirp": "0.5.1", - "normalize-package-data": "2.4.0", - "npm-package-arg": "6.1.0", - "npm-packlist": "1.1.10", - "npm-pick-manifest": "2.1.0", - "osenv": "0.1.5", - "promise-inflight": "1.0.1", - "promise-retry": "1.1.1", - "protoduck": "5.0.0", - "rimraf": "2.6.2", - "safe-buffer": "5.1.2", - "semver": "5.5.0", - "ssri": "6.0.0", - "tar": "4.4.2", - "unique-filename": "1.1.0", - "which": "1.3.0" - }, - "dependencies": { - "get-stream": { - "version": "3.0.0", - "bundled": true - }, - "make-fetch-happen": { - "version": "4.0.1", - "bundled": true, - "requires": { - "agentkeepalive": "3.4.1", - "cacache": "11.0.1", - "http-cache-semantics": "3.8.1", - "http-proxy-agent": "2.1.0", - "https-proxy-agent": "2.2.1", - "lru-cache": "4.1.2", - "mississippi": "3.0.0", - "node-fetch-npm": "2.0.2", - "promise-retry": "1.1.1", - "socks-proxy-agent": "4.0.1", - "ssri": "6.0.0" - }, - "dependencies": { - "agentkeepalive": { - "version": "3.4.1", - "bundled": true, - "requires": { - "humanize-ms": "1.2.1" - }, - "dependencies": { - "humanize-ms": { - "version": "1.2.1", - "bundled": true, - "requires": { - "ms": "2.1.1" - }, - "dependencies": { - "ms": { - "version": "2.1.1", - "bundled": true - } - } - } - } - }, - "http-cache-semantics": { - "version": "3.8.1", - "bundled": true - }, - "http-proxy-agent": { - "version": "2.1.0", - "bundled": true, - "requires": { - "agent-base": "4.2.0", - "debug": "3.1.0" - }, - "dependencies": { - "agent-base": { - "version": "4.2.0", - "bundled": true, - "requires": { - "es6-promisify": "5.0.0" - }, - "dependencies": { - "es6-promisify": { - "version": "5.0.0", - "bundled": true, - "requires": { - "es6-promise": "4.2.4" - }, - "dependencies": { - "es6-promise": { - "version": "4.2.4", - "bundled": true - } - } - } - } - }, - "debug": { - "version": "3.1.0", - "bundled": true, - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "bundled": true - } - } - } - } - }, - "https-proxy-agent": { - "version": "2.2.1", - "bundled": true, - "requires": { - "agent-base": "4.2.0", - "debug": "3.1.0" - }, - "dependencies": { - "agent-base": { - "version": "4.2.0", - "bundled": true, - "requires": { - "es6-promisify": "5.0.0" - }, - "dependencies": { - "es6-promisify": { - "version": "5.0.0", - "bundled": true, - "requires": { - "es6-promise": "4.2.4" - }, - "dependencies": { - "es6-promise": { - "version": "4.2.4", - "bundled": true - } - } - } - } - }, - "debug": { - "version": "3.1.0", - "bundled": true, - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "bundled": true - } - } - } - } - }, - "node-fetch-npm": { - "version": "2.0.2", - "bundled": true, - "requires": { - "encoding": "0.1.12", - "json-parse-better-errors": "1.0.2", - "safe-buffer": "5.1.2" - }, - "dependencies": { - "encoding": { - "version": "0.1.12", - "bundled": true, - "requires": { - "iconv-lite": "0.4.21" - }, - "dependencies": { - "iconv-lite": { - "version": "0.4.21", - "bundled": true, - "requires": { - "safer-buffer": "2.1.2" - }, - "dependencies": { - "safer-buffer": { - "version": "2.1.2", - "bundled": true - } - } - } - } - } - } - }, - "socks-proxy-agent": { - "version": "4.0.1", - "bundled": true, - "requires": { - "agent-base": "4.2.0", - "socks": "2.2.0" - }, - "dependencies": { - "agent-base": { - "version": "4.2.0", - "bundled": true, - "requires": { - "es6-promisify": "5.0.0" - }, - "dependencies": { - "es6-promisify": { - "version": "5.0.0", - "bundled": true, - "requires": { - "es6-promise": "4.2.4" - }, - "dependencies": { - "es6-promise": { - "version": "4.2.4", - "bundled": true - } - } - } - } - }, - "socks": { - "version": "2.2.0", - "bundled": true, - "requires": { - "ip": "1.1.5", - "smart-buffer": "4.0.1" - }, - "dependencies": { - "ip": { - "version": "1.1.5", - "bundled": true - }, - "smart-buffer": { - "version": "4.0.1", - "bundled": true - } - } - } - } - } - } - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "requires": { - "brace-expansion": "1.1.11" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - }, - "dependencies": { - "balanced-match": { - "version": "1.0.0", - "bundled": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true - } - } - } - } - }, - "promise-retry": { - "version": "1.1.1", - "bundled": true, - "requires": { - "err-code": "1.1.2", - "retry": "0.10.1" - }, - "dependencies": { - "err-code": { - "version": "1.1.2", - "bundled": true - }, - "retry": { - "version": "0.10.1", - "bundled": true - } - } - }, - "protoduck": { - "version": "5.0.0", - "bundled": true, - "requires": { - "genfun": "4.0.1" - }, - "dependencies": { - "genfun": { - "version": "4.0.1", - "bundled": true - } - } - } - } - }, - "path-is-inside": { - "version": "1.0.2", - "bundled": true - }, - "promise-inflight": { - "version": "1.0.1", - "bundled": true - }, - "qrcode-terminal": { - "version": "0.12.0", - "bundled": true - }, - "query-string": { - "version": "6.1.0", - "bundled": true, - "requires": { - "decode-uri-component": "0.2.0", - "strict-uri-encode": "2.0.0" - }, - "dependencies": { - "decode-uri-component": { - "version": "0.2.0", - "bundled": true - }, - "strict-uri-encode": { - "version": "2.0.0", - "bundled": true - } - } - }, - "qw": { - "version": "1.0.1", - "bundled": true - }, - "read": { - "version": "1.0.7", - "bundled": true, - "requires": { - "mute-stream": "0.0.7" - }, - "dependencies": { - "mute-stream": { - "version": "0.0.7", - "bundled": true - } - } - }, - "read-cmd-shim": { - "version": "1.0.1", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11" - } - }, - "read-installed": { - "version": "4.0.3", - "bundled": true, - "requires": { - "debuglog": "1.0.1", - "graceful-fs": "4.1.11", - "read-package-json": "2.0.13", - "readdir-scoped-modules": "1.0.2", - "semver": "5.5.0", - "slide": "1.1.6", - "util-extend": "1.0.3" - }, - "dependencies": { - "util-extend": { - "version": "1.0.3", - "bundled": true - } - } - }, - "read-package-json": { - "version": "2.0.13", - "bundled": true, - "requires": { - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "json-parse-better-errors": "1.0.1", - "normalize-package-data": "2.4.0", - "slash": "1.0.0" - }, - "dependencies": { - "json-parse-better-errors": { - "version": "1.0.1", - "bundled": true - }, - "slash": { - "version": "1.0.0", - "bundled": true - } - } - }, - "read-package-tree": { - "version": "5.2.1", - "bundled": true, - "requires": { - "debuglog": "1.0.1", - "dezalgo": "1.0.3", - "once": "1.4.0", - "read-package-json": "2.0.13", - "readdir-scoped-modules": "1.0.2" - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.2", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" - }, - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "bundled": true - }, - "isarray": { - "version": "1.0.0", - "bundled": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "requires": { - "safe-buffer": "5.1.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true - } - } - }, - "readdir-scoped-modules": { - "version": "1.0.2", - "bundled": true, - "requires": { - "debuglog": "1.0.1", - "dezalgo": "1.0.3", - "graceful-fs": "4.1.11", - "once": "1.4.0" - } - }, - "request": { - "version": "2.85.0", - "bundled": true, - "requires": { - "aws-sign2": "0.7.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.6", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.3.2", - "har-validator": "5.0.3", - "hawk": "6.0.2", - "http-signature": "1.2.0", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.18", - "oauth-sign": "0.8.2", - "performance-now": "2.1.0", - "qs": "6.5.1", - "safe-buffer": "5.1.2", - "stringstream": "0.0.5", - "tough-cookie": "2.3.4", - "tunnel-agent": "0.6.0", - "uuid": "3.2.1" - }, - "dependencies": { - "aws-sign2": { - "version": "0.7.0", - "bundled": true - }, - "aws4": { - "version": "1.6.0", - "bundled": true - }, - "caseless": { - "version": "0.12.0", - "bundled": true - }, - "combined-stream": { - "version": "1.0.6", - "bundled": true, - "requires": { - "delayed-stream": "1.0.0" - }, - "dependencies": { - "delayed-stream": { - "version": "1.0.0", - "bundled": true - } - } - }, - "extend": { - "version": "3.0.1", - "bundled": true - }, - "forever-agent": { - "version": "0.6.1", - "bundled": true - }, - "form-data": { - "version": "2.3.2", - "bundled": true, - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.6", - "mime-types": "2.1.18" - }, - "dependencies": { - "asynckit": { - "version": "0.4.0", - "bundled": true - } - } - }, - "har-validator": { - "version": "5.0.3", - "bundled": true, - "requires": { - "ajv": "5.5.2", - "har-schema": "2.0.0" - }, - "dependencies": { - "ajv": { - "version": "5.5.2", - "bundled": true, - "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.1.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" - }, - "dependencies": { - "co": { - "version": "4.6.0", - "bundled": true - }, - "fast-deep-equal": { - "version": "1.1.0", - "bundled": true - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "bundled": true - }, - "json-schema-traverse": { - "version": "0.3.1", - "bundled": true - } - } - }, - "har-schema": { - "version": "2.0.0", - "bundled": true - } - } - }, - "hawk": { - "version": "6.0.2", - "bundled": true, - "requires": { - "boom": "4.3.1", - "cryptiles": "3.1.2", - "hoek": "4.2.1", - "sntp": "2.1.0" - }, - "dependencies": { - "boom": { - "version": "4.3.1", - "bundled": true, - "requires": { - "hoek": "4.2.1" - } - }, - "cryptiles": { - "version": "3.1.2", - "bundled": true, - "requires": { - "boom": "5.2.0" - }, - "dependencies": { - "boom": { - "version": "5.2.0", - "bundled": true, - "requires": { - "hoek": "4.2.1" - } - } - } - }, - "hoek": { - "version": "4.2.1", - "bundled": true - }, - "sntp": { - "version": "2.1.0", - "bundled": true, - "requires": { - "hoek": "4.2.1" - } - } - } - }, - "http-signature": { - "version": "1.2.0", - "bundled": true, - "requires": { - "assert-plus": "1.0.0", - "jsprim": "1.4.1", - "sshpk": "1.14.1" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true - }, - "jsprim": { - "version": "1.4.1", - "bundled": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - }, - "dependencies": { - "extsprintf": { - "version": "1.3.0", - "bundled": true - }, - "json-schema": { - "version": "0.2.3", - "bundled": true - }, - "verror": { - "version": "1.10.0", - "bundled": true, - "requires": { - "assert-plus": "1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "1.3.0" - }, - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "bundled": true - } - } - } - } - }, - "sshpk": { - "version": "1.14.1", - "bundled": true, - "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" - }, - "dependencies": { - "asn1": { - "version": "0.2.3", - "bundled": true - }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "bundled": true, - "optional": true, - "requires": { - "tweetnacl": "0.14.5" - } - }, - "dashdash": { - "version": "1.14.1", - "bundled": true, - "requires": { - "assert-plus": "1.0.0" - } - }, - "ecc-jsbn": { - "version": "0.1.1", - "bundled": true, - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "getpass": { - "version": "0.1.7", - "bundled": true, - "requires": { - "assert-plus": "1.0.0" - } - }, - "jsbn": { - "version": "0.1.1", - "bundled": true, - "optional": true - }, - "tweetnacl": { - "version": "0.14.5", - "bundled": true, - "optional": true - } - } - } - } - }, - "is-typedarray": { - "version": "1.0.0", - "bundled": true - }, - "isstream": { - "version": "0.1.2", - "bundled": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "bundled": true - }, - "mime-types": { - "version": "2.1.18", - "bundled": true, - "requires": { - "mime-db": "1.33.0" - }, - "dependencies": { - "mime-db": { - "version": "1.33.0", - "bundled": true - } - } - }, - "oauth-sign": { - "version": "0.8.2", - "bundled": true - }, - "performance-now": { - "version": "2.1.0", - "bundled": true - }, - "qs": { - "version": "6.5.1", - "bundled": true - }, - "stringstream": { - "version": "0.0.5", - "bundled": true - }, - "tough-cookie": { - "version": "2.3.4", - "bundled": true, - "requires": { - "punycode": "1.4.1" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "bundled": true - } - } - }, - "tunnel-agent": { - "version": "0.6.0", - "bundled": true, - "requires": { - "safe-buffer": "5.1.2" - } - } - } - }, - "retry": { - "version": "0.12.0", - "bundled": true - }, - "rimraf": { - "version": "2.6.2", - "bundled": true, - "requires": { - "glob": "7.1.2" - } - }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true - }, - "semver": { - "version": "5.5.0", - "bundled": true - }, - "sha": { - "version": "2.0.1", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11", - "readable-stream": "2.3.6" - } - }, - "slide": { - "version": "1.1.6", - "bundled": true - }, - "sorted-object": { - "version": "2.0.1", - "bundled": true - }, - "sorted-union-stream": { - "version": "2.1.3", - "bundled": true, - "requires": { - "from2": "1.3.0", - "stream-iterate": "1.2.0" - }, - "dependencies": { - "from2": { - "version": "1.3.0", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "1.1.14" - }, - "dependencies": { - "readable-stream": { - "version": "1.1.14", - "bundled": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - }, - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "bundled": true - }, - "isarray": { - "version": "0.0.1", - "bundled": true - }, - "string_decoder": { - "version": "0.10.31", - "bundled": true - } - } - } - } - }, - "stream-iterate": { - "version": "1.2.0", - "bundled": true, - "requires": { - "readable-stream": "2.3.6", - "stream-shift": "1.0.0" - }, - "dependencies": { - "stream-shift": { - "version": "1.0.0", - "bundled": true - } - } - } - } - }, - "ssri": { - "version": "6.0.0", - "bundled": true - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "requires": { - "ansi-regex": "3.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true - } - } - }, - "tar": { - "version": "4.4.2", - "bundled": true, - "requires": { - "chownr": "1.0.1", - "fs-minipass": "1.2.5", - "minipass": "2.2.4", - "minizlib": "1.1.0", - "mkdirp": "0.5.1", - "safe-buffer": "5.1.2", - "yallist": "3.0.2" - }, - "dependencies": { - "fs-minipass": { - "version": "1.2.5", - "bundled": true, - "requires": { - "minipass": "2.2.4" - } - }, - "minipass": { - "version": "2.2.4", - "bundled": true, - "requires": { - "safe-buffer": "5.1.2", - "yallist": "3.0.2" - } - }, - "minizlib": { - "version": "1.1.0", - "bundled": true, - "requires": { - "minipass": "2.2.4" - } - }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true - }, - "yallist": { - "version": "3.0.2", - "bundled": true - } - } - }, - "text-table": { - "version": "0.2.0", - "bundled": true - }, - "tiny-relative-date": { - "version": "1.3.0", - "bundled": true - }, - "uid-number": { - "version": "0.0.6", - "bundled": true - }, - "umask": { - "version": "1.1.0", - "bundled": true - }, - "unique-filename": { - "version": "1.1.0", - "bundled": true, - "requires": { - "unique-slug": "2.0.0" - }, - "dependencies": { - "unique-slug": { - "version": "2.0.0", - "bundled": true, - "requires": { - "imurmurhash": "0.1.4" - } - } - } - }, - "unpipe": { - "version": "1.0.0", - "bundled": true - }, - "update-notifier": { - "version": "2.5.0", - "bundled": true, - "requires": { - "boxen": "1.3.0", - "chalk": "2.4.1", - "configstore": "3.1.2", - "import-lazy": "2.1.0", - "is-ci": "1.1.0", - "is-installed-globally": "0.1.0", - "is-npm": "1.0.0", - "latest-version": "3.1.0", - "semver-diff": "2.1.0", - "xdg-basedir": "3.0.0" - }, - "dependencies": { - "boxen": { - "version": "1.3.0", - "bundled": true, - "requires": { - "ansi-align": "2.0.0", - "camelcase": "4.1.0", - "chalk": "2.4.1", - "cli-boxes": "1.0.0", - "string-width": "2.1.1", - "term-size": "1.2.0", - "widest-line": "2.0.0" - }, - "dependencies": { - "ansi-align": { - "version": "2.0.0", - "bundled": true, - "requires": { - "string-width": "2.1.1" - } - }, - "camelcase": { - "version": "4.1.0", - "bundled": true - }, - "cli-boxes": { - "version": "1.0.0", - "bundled": true - }, - "string-width": { - "version": "2.1.1", - "bundled": true, - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "2.0.0", - "bundled": true - } - } - }, - "term-size": { - "version": "1.2.0", - "bundled": true, - "requires": { - "execa": "0.7.0" - }, - "dependencies": { - "execa": { - "version": "0.7.0", - "bundled": true, - "requires": { - "cross-spawn": "5.1.0", - "get-stream": "3.0.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "bundled": true, - "requires": { - "lru-cache": "4.1.2", - "shebang-command": "1.2.0", - "which": "1.3.0" - }, - "dependencies": { - "shebang-command": { - "version": "1.2.0", - "bundled": true, - "requires": { - "shebang-regex": "1.0.0" - }, - "dependencies": { - "shebang-regex": { - "version": "1.0.0", - "bundled": true - } - } - } - } - }, - "get-stream": { - "version": "3.0.0", - "bundled": true - }, - "is-stream": { - "version": "1.1.0", - "bundled": true - }, - "npm-run-path": { - "version": "2.0.2", - "bundled": true, - "requires": { - "path-key": "2.0.1" - }, - "dependencies": { - "path-key": { - "version": "2.0.1", - "bundled": true - } - } - }, - "p-finally": { - "version": "1.0.0", - "bundled": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true - }, - "strip-eof": { - "version": "1.0.0", - "bundled": true - } - } - } - } - }, - "widest-line": { - "version": "2.0.0", - "bundled": true, - "requires": { - "string-width": "2.1.1" - } - } - } - }, - "chalk": { - "version": "2.4.1", - "bundled": true, - "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "bundled": true, - "requires": { - "color-convert": "1.9.1" - }, - "dependencies": { - "color-convert": { - "version": "1.9.1", - "bundled": true, - "requires": { - "color-name": "1.1.3" - }, - "dependencies": { - "color-name": { - "version": "1.1.3", - "bundled": true - } - } - } - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "bundled": true - }, - "supports-color": { - "version": "5.4.0", - "bundled": true, - "requires": { - "has-flag": "3.0.0" - }, - "dependencies": { - "has-flag": { - "version": "3.0.0", - "bundled": true - } - } - } - } - }, - "configstore": { - "version": "3.1.2", - "bundled": true, - "requires": { - "dot-prop": "4.2.0", - "graceful-fs": "4.1.11", - "make-dir": "1.2.0", - "unique-string": "1.0.0", - "write-file-atomic": "2.3.0", - "xdg-basedir": "3.0.0" - }, - "dependencies": { - "dot-prop": { - "version": "4.2.0", - "bundled": true, - "requires": { - "is-obj": "1.0.1" - }, - "dependencies": { - "is-obj": { - "version": "1.0.1", - "bundled": true - } - } - }, - "make-dir": { - "version": "1.2.0", - "bundled": true, - "requires": { - "pify": "3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "bundled": true - } - } - }, - "unique-string": { - "version": "1.0.0", - "bundled": true, - "requires": { - "crypto-random-string": "1.0.0" - }, - "dependencies": { - "crypto-random-string": { - "version": "1.0.0", - "bundled": true - } - } - } - } - }, - "import-lazy": { - "version": "2.1.0", - "bundled": true - }, - "is-ci": { - "version": "1.1.0", - "bundled": true, - "requires": { - "ci-info": "1.1.3" - }, - "dependencies": { - "ci-info": { - "version": "1.1.3", - "bundled": true - } - } - }, - "is-installed-globally": { - "version": "0.1.0", - "bundled": true, - "requires": { - "global-dirs": "0.1.1", - "is-path-inside": "1.0.1" - }, - "dependencies": { - "global-dirs": { - "version": "0.1.1", - "bundled": true, - "requires": { - "ini": "1.3.5" - } - }, - "is-path-inside": { - "version": "1.0.1", - "bundled": true, - "requires": { - "path-is-inside": "1.0.2" - } - } - } - }, - "is-npm": { - "version": "1.0.0", - "bundled": true - }, - "latest-version": { - "version": "3.1.0", - "bundled": true, - "requires": { - "package-json": "4.0.1" - }, - "dependencies": { - "package-json": { - "version": "4.0.1", - "bundled": true, - "requires": { - "got": "6.7.1", - "registry-auth-token": "3.3.2", - "registry-url": "3.1.0", - "semver": "5.5.0" - }, - "dependencies": { - "got": { - "version": "6.7.1", - "bundled": true, - "requires": { - "create-error-class": "3.0.2", - "duplexer3": "0.1.4", - "get-stream": "3.0.0", - "is-redirect": "1.0.0", - "is-retry-allowed": "1.1.0", - "is-stream": "1.1.0", - "lowercase-keys": "1.0.1", - "safe-buffer": "5.1.2", - "timed-out": "4.0.1", - "unzip-response": "2.0.1", - "url-parse-lax": "1.0.0" - }, - "dependencies": { - "create-error-class": { - "version": "3.0.2", - "bundled": true, - "requires": { - "capture-stack-trace": "1.0.0" - }, - "dependencies": { - "capture-stack-trace": { - "version": "1.0.0", - "bundled": true - } - } - }, - "duplexer3": { - "version": "0.1.4", - "bundled": true - }, - "get-stream": { - "version": "3.0.0", - "bundled": true - }, - "is-redirect": { - "version": "1.0.0", - "bundled": true - }, - "is-retry-allowed": { - "version": "1.1.0", - "bundled": true - }, - "is-stream": { - "version": "1.1.0", - "bundled": true - }, - "lowercase-keys": { - "version": "1.0.1", - "bundled": true - }, - "timed-out": { - "version": "4.0.1", - "bundled": true - }, - "unzip-response": { - "version": "2.0.1", - "bundled": true - }, - "url-parse-lax": { - "version": "1.0.0", - "bundled": true, - "requires": { - "prepend-http": "1.0.4" - }, - "dependencies": { - "prepend-http": { - "version": "1.0.4", - "bundled": true - } - } - } - } - }, - "registry-auth-token": { - "version": "3.3.2", - "bundled": true, - "requires": { - "rc": "1.2.7", - "safe-buffer": "5.1.2" - }, - "dependencies": { - "rc": { - "version": "1.2.7", - "bundled": true, - "requires": { - "deep-extend": "0.5.1", - "ini": "1.3.5", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" - }, - "dependencies": { - "deep-extend": { - "version": "0.5.1", - "bundled": true - }, - "minimist": { - "version": "1.2.0", - "bundled": true - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true - } - } - } - } - }, - "registry-url": { - "version": "3.1.0", - "bundled": true, - "requires": { - "rc": "1.2.7" - }, - "dependencies": { - "rc": { - "version": "1.2.7", - "bundled": true, - "requires": { - "deep-extend": "0.5.1", - "ini": "1.3.5", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" - }, - "dependencies": { - "deep-extend": { - "version": "0.5.1", - "bundled": true - }, - "minimist": { - "version": "1.2.0", - "bundled": true - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true - } - } - } - } - } - } - } - } - }, - "semver-diff": { - "version": "2.1.0", - "bundled": true, - "requires": { - "semver": "5.5.0" - } - }, - "xdg-basedir": { - "version": "3.0.0", - "bundled": true - } - } - }, - "uuid": { - "version": "3.2.1", - "bundled": true - }, - "validate-npm-package-license": { - "version": "3.0.3", - "bundled": true, - "requires": { - "spdx-correct": "3.0.0", - "spdx-expression-parse": "3.0.0" - }, - "dependencies": { - "spdx-correct": { - "version": "3.0.0", - "bundled": true, - "requires": { - "spdx-expression-parse": "3.0.0", - "spdx-license-ids": "3.0.0" - }, - "dependencies": { - "spdx-license-ids": { - "version": "3.0.0", - "bundled": true - } - } - }, - "spdx-expression-parse": { - "version": "3.0.0", - "bundled": true, - "requires": { - "spdx-exceptions": "2.1.0", - "spdx-license-ids": "3.0.0" - }, - "dependencies": { - "spdx-exceptions": { - "version": "2.1.0", - "bundled": true - }, - "spdx-license-ids": { - "version": "3.0.0", - "bundled": true - } - } - } - } - }, - "validate-npm-package-name": { - "version": "3.0.0", - "bundled": true, - "requires": { - "builtins": "1.0.3" - }, - "dependencies": { - "builtins": { - "version": "1.0.3", - "bundled": true - } - } - }, - "which": { - "version": "1.3.0", - "bundled": true, - "requires": { - "isexe": "2.0.0" - }, - "dependencies": { - "isexe": { - "version": "2.0.0", - "bundled": true - } - } - }, - "worker-farm": { - "version": "1.6.0", - "bundled": true, - "requires": { - "errno": "0.1.7" - }, - "dependencies": { - "errno": { - "version": "0.1.7", - "bundled": true, - "requires": { - "prr": "1.0.1" - }, - "dependencies": { - "prr": { - "version": "1.0.1", - "bundled": true - } - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true - }, - "write-file-atomic": { - "version": "2.3.0", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11", - "imurmurhash": "0.1.4", - "signal-exit": "3.0.2" - }, - "dependencies": { - "signal-exit": { - "version": "3.0.2", - "bundled": true - } - } - } - } - }, - "npm-path": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/npm-path/-/npm-path-2.0.4.tgz", - "integrity": "sha512-IFsj0R9C7ZdR5cP+ET342q77uSRdtWOlWpih5eC+lu29tIDbNEgDbzgVJ5UFvYHWhxDZ5TFkJafFioO0pPQjCw==", - "dev": true, - "requires": { - "which": "1.3.0" - } - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, - "requires": { - "path-key": "2.0.1" - } - }, - "npm-which": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/npm-which/-/npm-which-3.0.1.tgz", - "integrity": "sha1-kiXybsOihcIJyuZ8OxGmtKtxQKo=", - "dev": true, - "requires": { - "commander": "2.15.1", - "npm-path": "2.0.4", - "which": "1.3.0" - }, - "dependencies": { - "commander": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", - "dev": true - } - } - }, - "nth-check": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", - "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", - "dev": true, - "requires": { - "boolbase": "1.0.0" - } - }, - "num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", - "dev": true - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, - "numeral": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/numeral/-/numeral-2.0.6.tgz", - "integrity": "sha1-StCAk21EPCVhrtnyGX7//iX05QY=" - }, - "nwmatcher": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.4.tgz", - "integrity": "sha512-3iuY4N5dhgMpCUrOVnuAdGrgxVqV2cJpM+XNccjR2DKOB1RUP0aA+wGXEiNziG/UKboFyGBIoKOaNlJxx8bciQ==", - "dev": true - }, - "oauth-sign": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "requires": { - "copy-descriptor": "0.1.1", - "define-property": "0.2.5", - "kind-of": "3.2.2" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "0.1.6" - } - } - } - }, - "object-hash": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.0.tgz", - "integrity": "sha512-05KzQ70lSeGSrZJQXE5wNDiTkBJDlUT/myi6RX9dVIvz7a7Qh4oH93BQdiPMn27nldYvVQCKMUaM83AfizZlsQ==", - "dev": true - }, - "object-inspect": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.5.0.tgz", - "integrity": "sha512-UmOFbHbwvv+XHj7BerrhVq+knjceBdkvU5AriwLMvhv2qi+e7DJzxfBeFpILEjVzCp+xA+W/pIf06RGPWlZNfw==" - }, - "object-is": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.1.tgz", - "integrity": "sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY=", - "dev": true - }, - "object-keys": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", - "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", - "dev": true - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "requires": { - "isobject": "3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } - } - }, - "object.assign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.0.4.tgz", - "integrity": "sha1-scnMBE7xuf5jYG/BQau7MuFHMMw=", - "dev": true, - "requires": { - "define-properties": "1.1.2", - "function-bind": "1.1.1", - "object-keys": "1.0.11" - }, - "dependencies": { - "object-keys": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", - "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", - "dev": true - } - } - }, - "object.entries": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.0.4.tgz", - "integrity": "sha1-G/mk3SKI9bM/Opk9JXZh8F0WGl8=", - "dev": true, - "requires": { - "define-properties": "1.1.2", - "es-abstract": "1.9.0", - "function-bind": "1.1.1", - "has": "1.0.1" - } - }, - "object.getownpropertydescriptors": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", - "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", - "dev": true, - "requires": { - "define-properties": "1.1.2", - "es-abstract": "1.9.0" - } - }, - "object.omit": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "dev": true, - "requires": { - "for-own": "0.1.5", - "is-extendable": "0.1.1" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } - } - }, - "object.values": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.0.4.tgz", - "integrity": "sha1-5STaCbT2b/Bd9FdUbscqyZ8TBpo=", - "dev": true, - "requires": { - "define-properties": "1.1.2", - "es-abstract": "1.9.0", - "function-bind": "1.1.1", - "has": "1.0.1" - } - }, - "obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true - }, - "omit.js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/omit.js/-/omit.js-1.0.0.tgz", - "integrity": "sha512-O1rwbvEfAdhtonTv+v6IQeMOKTi/wlHcXpI3hehyPDlujkjSBQC6Vtzg0mdy+v2KVDmuPf7hAbHlTBM6q1bUHQ==", - "requires": { - "babel-runtime": "6.26.0" - } - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "on-headers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", - "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1.0.2" - } - }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true, - "requires": { - "mimic-fn": "1.2.0" - } - }, - "opener": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/opener/-/opener-1.4.3.tgz", - "integrity": "sha1-XG2ixdflgx6P+jlklQ+NZnSskLg=", - "dev": true - }, - "opn": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.2.0.tgz", - "integrity": "sha512-Jd/GpzPyHF4P2/aNOVmS3lfMSWV9J7cOhCG1s08XCEAsPkB7lp6ddiU0J7XzyQRDUh8BqJ7PchfINjR8jyofRQ==", - "dev": true, - "requires": { - "is-wsl": "1.1.0" - } - }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "dev": true, - "requires": { - "minimist": "0.0.10", - "wordwrap": "0.0.3" - }, - "dependencies": { - "minimist": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", - "dev": true - }, - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", - "dev": true - } - } - }, - "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", - "dev": true, - "requires": { - "deep-is": "0.1.3", - "fast-levenshtein": "2.0.6", - "levn": "0.3.0", - "prelude-ls": "1.1.2", - "type-check": "0.3.2", - "wordwrap": "1.0.0" - } - }, - "ora": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/ora/-/ora-0.2.3.tgz", - "integrity": "sha1-N1J9Igrc1Tw5tzVx11QVbV22V6Q=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "cli-cursor": "1.0.2", - "cli-spinners": "0.1.2", - "object-assign": "4.1.1" - }, - "dependencies": { - "cli-cursor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", - "dev": true, - "requires": { - "restore-cursor": "1.0.1" - } - }, - "onetime": { - "version": "1.1.0", - "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", - "dev": true - }, - "restore-cursor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", - "dev": true, - "requires": { - "exit-hook": "1.1.1", - "onetime": "1.1.0" - } - } - } - }, - "original": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/original/-/original-1.0.1.tgz", - "integrity": "sha512-IEvtB5vM5ULvwnqMxWBLxkS13JIEXbakizMSo3yoPNPCIWzg8TG3Usn/UhXoZFM/m+FuEA20KdzPSFq/0rS+UA==", - "dev": true, - "requires": { - "url-parse": "1.4.0" - } - }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", - "dev": true - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true - }, - "os-locale": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", - "dev": true, - "requires": { - "execa": "0.7.0", - "lcid": "1.0.0", - "mem": "1.1.0" - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true - }, - "p-limit": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", - "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", - "dev": true - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "1.1.0" - } - }, - "p-map": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", - "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", - "dev": true - }, - "package-json": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", - "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", - "dev": true, - "requires": { - "got": "6.7.1", - "registry-auth-token": "3.3.2", - "registry-url": "3.1.0", - "semver": "5.4.1" - } - }, - "pako": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", - "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", - "dev": true - }, - "parallel-transform": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", - "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", - "dev": true, - "requires": { - "cyclist": "0.2.2", - "inherits": "2.0.3", - "readable-stream": "2.3.6" - } - }, - "param-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", - "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", - "dev": true, - "requires": { - "no-case": "2.3.2" - } - }, - "parse-asn1": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", - "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==", - "dev": true, - "requires": { - "asn1.js": "4.10.1", - "browserify-aes": "1.2.0", - "create-hash": "1.2.0", - "evp_bytestokey": "1.0.3", - "pbkdf2": "3.0.16" - } - }, - "parse-entities": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.1.1.tgz", - "integrity": "sha1-gRLYhHExnyerrk1klksSL+ThuJA=", - "dev": true, - "requires": { - "character-entities": "1.2.1", - "character-entities-legacy": "1.1.1", - "character-reference-invalid": "1.1.1", - "is-alphanumerical": "1.0.1", - "is-decimal": "1.0.1", - "is-hexadecimal": "1.0.1" - } - }, - "parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "dev": true, - "requires": { - "glob-base": "0.3.0", - "is-dotfile": "1.0.3", - "is-extglob": "1.0.0", - "is-glob": "2.0.1" - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "1.3.1" - } - }, - "parse-json-pretty": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/parse-json-pretty/-/parse-json-pretty-0.1.0.tgz", - "integrity": "sha1-Mz6QJiyLDZWUV8GFpuy2XJl2fZU=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "error-ex": "1.3.1" - } - }, - "parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", - "dev": true - }, - "parse-svg-path": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/parse-svg-path/-/parse-svg-path-0.1.2.tgz", - "integrity": "sha1-en7A0esG+lMlx9PgCbhZoJtdSes=" - }, - "parse5": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", - "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", - "dev": true, - "requires": { - "@types/node": "7.0.46" - } - }, - "parseurl": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", - "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", - "dev": true - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, - "path-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", - "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", - "dev": true - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "2.0.1" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "path-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=" - }, - "path-to-regexp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz", - "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==" - }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, - "pbkdf2": { - "version": "3.0.16", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.16.tgz", - "integrity": "sha512-y4CXP3thSxqf7c0qmOF+9UeOTrifiVTIM+u7NWlq+PRsHbr7r7dpCmvzrZxa96JJUNi0Y5w9VqG5ZNeCVMoDcA==", - "dev": true, - "requires": { - "create-hash": "1.2.0", - "create-hmac": "1.1.7", - "ripemd160": "2.0.2", - "safe-buffer": "5.1.1", - "sha.js": "2.4.11" - } - }, - "pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", - "optional": true - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "2.0.4" - } - }, - "pirates": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-3.0.2.tgz", - "integrity": "sha512-c5CgUJq6H2k6MJz72Ak1F5sN9n9wlSlJyEnwvpm9/y3WB4E3pHBDT2c6PEiS1vyJvq2bUxUAIu0EGf8Cx4Ic7Q==", - "dev": true, - "requires": { - "node-modules-regexp": "1.0.0" - } - }, - "pkg-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", - "dev": true, - "requires": { - "find-up": "1.1.2" - } - }, - "pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", - "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", - "dev": true, - "requires": { - "find-up": "2.1.0" - }, - "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "2.0.0" - } - } - } - }, - "pluralize": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", - "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", - "dev": true - }, - "pn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", - "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", - "dev": true - }, - "point-at-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/point-at-length/-/point-at-length-1.0.2.tgz", - "integrity": "sha1-kXbY1tfIFi8Stkb3B9ufDqcoEl4=", - "requires": { - "abs-svg-path": "0.1.1", - "isarray": "0.0.1", - "parse-svg-path": "0.1.2" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - } - } - }, - "portfinder": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.13.tgz", - "integrity": "sha1-uzLs2HwnEErm7kS1o8y/Drsa7ek=", - "dev": true, - "requires": { - "async": "1.5.2", - "debug": "2.6.9", - "mkdirp": "0.5.1" - }, - "dependencies": { - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - } - } - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true - }, - "postcss": { - "version": "6.0.22", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz", - "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==", - "dev": true, - "requires": { - "chalk": "2.4.1", - "source-map": "0.6.1", - "supports-color": "5.4.0" - }, - "dependencies": { - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "postcss-calc": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", - "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=", - "dev": true, - "requires": { - "postcss": "5.2.18", - "postcss-message-helpers": "2.0.0", - "reduce-css-calc": "1.3.0" - }, - "dependencies": { - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "postcss-colormin": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz", - "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=", - "dev": true, - "requires": { - "colormin": "1.1.2", - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" - }, - "dependencies": { - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "postcss-convert-values": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz", - "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=", - "dev": true, - "requires": { - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" - }, - "dependencies": { - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "postcss-discard-comments": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", - "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=", - "dev": true, - "requires": { - "postcss": "5.2.18" - }, - "dependencies": { - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "postcss-discard-duplicates": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz", - "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=", - "dev": true, - "requires": { - "postcss": "5.2.18" - }, - "dependencies": { - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "postcss-discard-empty": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", - "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=", - "dev": true, - "requires": { - "postcss": "5.2.18" - }, - "dependencies": { - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "postcss-discard-overridden": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", - "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=", - "dev": true, - "requires": { - "postcss": "5.2.18" - }, - "dependencies": { - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "postcss-discard-unused": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", - "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=", - "dev": true, - "requires": { - "postcss": "5.2.18", - "uniqs": "2.0.0" - }, - "dependencies": { - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "postcss-filter-plugins": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz", - "integrity": "sha1-bYWGJTTXNaxCDkqFgG4fXUKG2Ew=", - "dev": true, - "requires": { - "postcss": "5.2.18", - "uniqid": "4.1.1" - }, - "dependencies": { - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "postcss-flexbugs-fixes": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-3.3.1.tgz", - "integrity": "sha512-9y9kDDf2F9EjKX6x9ueNa5GARvsUbXw4ezH8vXItXHwKzljbu8awP7t5dCaabKYm18Vs1lo5bKQcnc0HkISt+w==", - "dev": true, - "requires": { - "postcss": "6.0.22" - } - }, - "postcss-html": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/postcss-html/-/postcss-html-0.12.0.tgz", - "integrity": "sha512-KxKUpj7AY7nlCbLcTOYxdfJnGE7QFAfU2n95ADj1Q90RM/pOLdz8k3n4avOyRFs7MDQHcRzJQWM1dehCwJxisQ==", - "dev": true, - "requires": { - "htmlparser2": "3.9.2", - "remark": "8.0.0", - "unist-util-find-all-after": "1.0.2" - } - }, - "postcss-less": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-1.1.5.tgz", - "integrity": "sha512-QQIiIqgEjNnquc0d4b6HDOSFZxbFQoy4MPpli2lSLpKhMyBkKwwca2HFqu4xzxlKID/F2fxSOowwtKpgczhF7A==", - "dev": true, - "requires": { - "postcss": "5.2.18" - }, - "dependencies": { - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "postcss-load-config": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-1.2.0.tgz", - "integrity": "sha1-U56a/J3chiASHr+djDZz4M5Q0oo=", - "dev": true, - "requires": { - "cosmiconfig": "2.2.2", - "object-assign": "4.1.1", - "postcss-load-options": "1.2.0", - "postcss-load-plugins": "2.3.0" - } - }, - "postcss-load-options": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postcss-load-options/-/postcss-load-options-1.2.0.tgz", - "integrity": "sha1-sJixVZ3awt8EvAuzdfmaXP4rbYw=", - "dev": true, - "requires": { - "cosmiconfig": "2.2.2", - "object-assign": "4.1.1" - } - }, - "postcss-load-plugins": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz", - "integrity": "sha1-dFdoEWWZrKLwCfrUJrABdQSdjZI=", - "dev": true, - "requires": { - "cosmiconfig": "2.2.2", - "object-assign": "4.1.1" - } - }, - "postcss-loader": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-2.1.5.tgz", - "integrity": "sha512-pV7kB5neJ0/1tZ8L1uGOBNTVBCSCXQoIsZMsrwvO8V2rKGa2tBl/f80GGVxow2jJnRJ2w1ocx693EKhZAb9Isg==", - "dev": true, - "requires": { - "loader-utils": "1.1.0", - "postcss": "6.0.22", - "postcss-load-config": "1.2.0", - "schema-utils": "0.4.5" - }, - "dependencies": { - "ajv": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.0.tgz", - "integrity": "sha512-VDUX1oSajablmiyFyED9L1DFndg0P9h7p1F+NO8FkIzei6EPrR6Zu1n18rd5P8PqaSRd/FrWv3G1TVBqpM83gA==", - "dev": true, - "requires": { - "fast-deep-equal": "2.0.1", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1", - "uri-js": "4.2.1" - } - }, - "ajv-keywords": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", - "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", - "dev": true - }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true - }, - "schema-utils": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.5.tgz", - "integrity": "sha512-yYrjb9TX2k/J1Y5UNy3KYdZq10xhYcF8nMpAW6o3hy6Q8WSIEf9lJHG/ePnOBfziPM3fvQwfOwa13U/Fh8qTfA==", - "dev": true, - "requires": { - "ajv": "6.5.0", - "ajv-keywords": "3.2.0" - } - } - } - }, - "postcss-media-query-parser": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", - "integrity": "sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=", - "dev": true - }, - "postcss-merge-idents": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", - "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=", - "dev": true, - "requires": { - "has": "1.0.1", - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" - }, - "dependencies": { - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "postcss-merge-longhand": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz", - "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=", - "dev": true, - "requires": { - "postcss": "5.2.18" - }, - "dependencies": { - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "postcss-merge-rules": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz", - "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=", - "dev": true, - "requires": { - "browserslist": "1.7.7", - "caniuse-api": "1.6.1", - "postcss": "5.2.18", - "postcss-selector-parser": "2.2.3", - "vendors": "1.0.2" - }, - "dependencies": { - "browserslist": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", - "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", - "dev": true, - "requires": { - "caniuse-db": "1.0.30000840", - "electron-to-chromium": "1.3.45" - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "postcss-message-helpers": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz", - "integrity": "sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=", - "dev": true - }, - "postcss-minify-font-values": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", - "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=", - "dev": true, - "requires": { - "object-assign": "4.1.1", - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" - }, - "dependencies": { - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "postcss-minify-gradients": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", - "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=", - "dev": true, - "requires": { - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" - }, - "dependencies": { - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "postcss-minify-params": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", - "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=", - "dev": true, - "requires": { - "alphanum-sort": "1.0.2", - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0", - "uniqs": "2.0.0" - }, - "dependencies": { - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "postcss-minify-selectors": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", - "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=", - "dev": true, - "requires": { - "alphanum-sort": "1.0.2", - "has": "1.0.1", - "postcss": "5.2.18", - "postcss-selector-parser": "2.2.3" - }, - "dependencies": { - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "postcss-modules-extract-imports": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.0.tgz", - "integrity": "sha1-ZhQOzs447wa/DT41XWm/WdFB6oU=", - "dev": true, - "requires": { - "postcss": "6.0.22" - } - }, - "postcss-modules-local-by-default": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", - "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", - "dev": true, - "requires": { - "css-selector-tokenizer": "0.7.0", - "postcss": "6.0.22" - } - }, - "postcss-modules-scope": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", - "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", - "dev": true, - "requires": { - "css-selector-tokenizer": "0.7.0", - "postcss": "6.0.22" - } - }, - "postcss-modules-values": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", - "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", - "dev": true, - "requires": { - "icss-replace-symbols": "1.1.0", - "postcss": "6.0.22" - } - }, - "postcss-normalize-charset": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", - "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=", - "dev": true, - "requires": { - "postcss": "5.2.18" - }, - "dependencies": { - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "postcss-normalize-url": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", - "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=", - "dev": true, - "requires": { - "is-absolute-url": "2.1.0", - "normalize-url": "1.9.1", - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" - }, - "dependencies": { - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "postcss-ordered-values": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz", - "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=", - "dev": true, - "requires": { - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" - }, - "dependencies": { - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "postcss-reduce-idents": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", - "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=", - "dev": true, - "requires": { - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" - }, - "dependencies": { - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "postcss-reduce-initial": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", - "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=", - "dev": true, - "requires": { - "postcss": "5.2.18" - }, - "dependencies": { - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "postcss-reduce-transforms": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", - "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=", - "dev": true, - "requires": { - "has": "1.0.1", - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" - }, - "dependencies": { - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "postcss-reporter": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-5.0.0.tgz", - "integrity": "sha512-rBkDbaHAu5uywbCR2XE8a25tats3xSOsGNx6mppK6Q9kSFGKc/FyAzfci+fWM2l+K402p1D0pNcfDGxeje5IKg==", - "dev": true, - "requires": { - "chalk": "2.4.1", - "lodash": "4.17.4", - "log-symbols": "2.2.0", - "postcss": "6.0.22" - }, - "dependencies": { - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" - } - } - } - }, - "postcss-resolve-nested-selector": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", - "integrity": "sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4=", - "dev": true - }, - "postcss-safe-parser": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-3.0.1.tgz", - "integrity": "sha1-t1Pv9sfArqXoN1++TN6L+QY/8UI=", - "dev": true, - "requires": { - "postcss": "6.0.22" - } - }, - "postcss-sass": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/postcss-sass/-/postcss-sass-0.2.0.tgz", - "integrity": "sha512-cUmYzkP747fPCQE6d+CH2l1L4VSyIlAzZsok3HPjb5Gzsq3jE+VjpAdGlPsnQ310WKWI42sw+ar0UNN59/f3hg==", - "dev": true, - "requires": { - "gonzales-pe": "4.2.3", - "postcss": "6.0.22" - } - }, - "postcss-scss": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-1.0.5.tgz", - "integrity": "sha512-gJB1tKYMkBy0MU+COt6WXA4ZiRctAKoWLa6qD7a6bbEbBMqrpa/BhfQdN80eYMV+JkKddZVEpZlOggnGShpvyg==", - "dev": true, - "requires": { - "postcss": "6.0.22" - } - }, - "postcss-selector-parser": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", - "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", - "dev": true, - "requires": { - "flatten": "1.0.2", - "indexes-of": "1.0.1", - "uniq": "1.0.1" - } - }, - "postcss-svgo": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", - "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=", - "dev": true, - "requires": { - "is-svg": "2.1.0", - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0", - "svgo": "0.7.2" - }, - "dependencies": { - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "postcss-unique-selectors": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", - "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=", - "dev": true, - "requires": { - "alphanum-sort": "1.0.2", - "postcss": "5.2.18", - "uniqs": "2.0.0" - }, - "dependencies": { - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "postcss-value-parser": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz", - "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=", - "dev": true - }, - "postcss-zindex": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz", - "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=", - "dev": true, - "requires": { - "has": "1.0.1", - "postcss": "5.2.18", - "uniqs": "2.0.0" - }, - "dependencies": { - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true - }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", - "dev": true - }, - "preserve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", - "dev": true - }, - "prettier": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.11.1.tgz", - "integrity": "sha512-T/KD65Ot0PB97xTrG8afQ46x3oiVhnfGjGESSI9NWYcG92+OUPZKkwHqGWXH2t9jK1crnQjubECW0FuOth+hxw==", - "dev": true - }, - "pretty-bytes": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz", - "integrity": "sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=", - "dev": true - }, - "pretty-error": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", - "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", - "dev": true, - "requires": { - "renderkid": "2.0.1", - "utila": "0.4.0" - } - }, - "pretty-format": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-22.4.3.tgz", - "integrity": "sha512-S4oT9/sT6MN7/3COoOy+ZJeA92VmOnveLHgrwBE3Z1W5N9S2A1QGNYiE1z75DAENbJrXXUb+OWXhpJcg05QKQQ==", - "dev": true, - "requires": { - "ansi-regex": "3.0.0", - "ansi-styles": "3.2.1" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - } - } - }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", - "dev": true - }, - "pro-download": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/pro-download/-/pro-download-1.0.1.tgz", - "integrity": "sha512-gGqxmwI95zQw4DAdCnis45hR6XFvqBWEYBm7Wp7KFMIPE7raSNYK+I1Nh0O/15GKH4GC77I+KV0uR9CoG3Fkdw==", - "dev": true - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true - }, - "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", - "dev": true - }, - "progress": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", - "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=" - }, - "promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "requires": { - "asap": "2.0.6" - } - }, - "promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", - "dev": true - }, - "prop-types": { - "version": "15.6.0", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.0.tgz", - "integrity": "sha1-zq8IMCL8RrSjX2nhPvda7Q1jmFY=", - "requires": { - "fbjs": "0.8.16", - "loose-envify": "1.3.1", - "object-assign": "4.1.1" - } - }, - "proxy-addr": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.3.tgz", - "integrity": "sha512-jQTChiCJteusULxjBp8+jftSQE5Obdl3k4cnmLA6WXtK6XFuWRnvVL7aCiBqaLPM8c4ph0S4tKna8XvmIwEnXQ==", - "dev": true, - "requires": { - "forwarded": "0.1.2", - "ipaddr.js": "1.6.0" - } - }, - "proxy-from-env": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", - "integrity": "sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=", - "optional": true - }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true - }, - "public-encrypt": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz", - "integrity": "sha512-4kJ5Esocg8X3h8YgJsKAuoesBgB7mqH3eowiDzMUPKiRDDE7E/BqqZD1hnTByIaAFiwAw246YEltSq7tdrOH0Q==", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "browserify-rsa": "4.0.1", - "create-hash": "1.2.0", - "parse-asn1": "5.1.1", - "randombytes": "2.0.6" - } - }, - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, - "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" - } - }, - "pumpify": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.0.tgz", - "integrity": "sha512-UWi0klDoq8xtVzlMRgENV9F7iCTZExaJQSQL187UXsxpk9NnrKGqTqqUNYAKGOzucSOxs2+jUnRNI+rLviPhJg==", - "dev": true, - "requires": { - "duplexify": "3.6.0", - "inherits": "2.0.3", - "pump": "2.0.1" - } - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - }, - "puppeteer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-1.4.0.tgz", - "integrity": "sha512-WDnC1FSHTedvRSS8BZB73tPAx2svUCWFdcxVjrybw8pbKOAB1v5S/pW0EamkqQoL1mXiBc+v8lyYjhhzMHIk1Q==", - "optional": true, - "requires": { - "debug": "3.1.0", - "extract-zip": "1.6.6", - "https-proxy-agent": "2.2.1", - "mime": "2.3.1", - "progress": "2.0.0", - "proxy-from-env": "1.0.0", - "rimraf": "2.6.2", - "ws": "3.3.3" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "optional": true, - "requires": { - "ms": "2.0.0" - } - }, - "mime": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz", - "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==", - "optional": true - }, - "ws": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", - "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", - "optional": true, - "requires": { - "async-limiter": "1.0.0", - "safe-buffer": "5.1.1", - "ultron": "1.1.1" - } - } - } - }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", - "dev": true - }, - "qs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" - }, - "query-string": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", - "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", - "dev": true, - "requires": { - "object-assign": "4.1.1", - "strict-uri-encode": "1.1.0" - } - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "dev": true - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true - }, - "querystringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.0.0.tgz", - "integrity": "sha512-eTPo5t/4bgaMNZxyjWx6N2a6AuE0mq51KWvpc7nU/MAqixcI6v6KrGUKES0HaomdnolQBBXU/++X6/QQ9KL4tw==", - "dev": true - }, - "quick-lru": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", - "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=", - "dev": true - }, - "raf": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.0.tgz", - "integrity": "sha512-pDP/NMRAXoTfrhCfyfSEwJAKLaxBU9eApMeBPB1TkDouZmvPerIClV8lTAd+uF8ZiTaVl69e1FCxQrAd/VTjGw==", - "dev": true, - "requires": { - "performance-now": "2.1.0" - } - }, - "railroad-diagrams": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz", - "integrity": "sha1-635iZ1SN3t+4mcG5Dlc3RVnN234=", - "dev": true - }, - "randexp": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz", - "integrity": "sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==", - "dev": true, - "requires": { - "discontinuous-range": "1.0.0", - "ret": "0.1.15" - } - }, - "randomatic": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.0.0.tgz", - "integrity": "sha512-VdxFOIEY3mNO5PtSRkkle/hPJDHvQhK21oa73K4yAc9qmp6N429gAyF1gZMOTMeS0/AYzaV/2Trcef+NaIonSA==", - "dev": true, - "requires": { - "is-number": "4.0.0", - "kind-of": "6.0.2", - "math-random": "1.0.1" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } - } - }, - "randombytes": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", - "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", - "dev": true, - "requires": { - "safe-buffer": "5.1.1" - } - }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "requires": { - "randombytes": "2.0.6", - "safe-buffer": "5.1.1" - } - }, - "range-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", - "dev": true - }, - "raw-body": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", - "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", - "dev": true, - "requires": { - "bytes": "3.0.0", - "http-errors": "1.6.2", - "iconv-lite": "0.4.19", - "unpipe": "1.0.0" - }, - "dependencies": { - "depd": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", - "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", - "dev": true - }, - "http-errors": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", - "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", - "dev": true, - "requires": { - "depd": "1.1.1", - "inherits": "2.0.3", - "setprototypeof": "1.0.3", - "statuses": "1.4.0" - } - }, - "setprototypeof": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", - "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", - "dev": true - } - } - }, - "rc": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.7.tgz", - "integrity": "sha512-LdLD8xD4zzLsAT5xyushXDNscEjB7+2ulnl8+r1pnESlYtlJtVSoCMBGr30eDRJ3+2Gq89jK9P9e4tCEH1+ywA==", - "dev": true, - "requires": { - "deep-extend": "0.5.1", - "ini": "1.3.5", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" - } - }, - "rc-align": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/rc-align/-/rc-align-2.3.6.tgz", - "integrity": "sha512-sB9HpuyMZg5Yy+iIkraPv7/5uaMdUVpfitGFO5aOKKFE/rcEpWunaZdYjvTpPBHUsBrrEn/7qs/klD1YQPIQhA==", - "requires": { - "babel-runtime": "6.26.0", - "dom-align": "1.6.7", - "prop-types": "15.6.0", - "rc-util": "4.5.0", - "shallowequal": "1.0.2" - } - }, - "rc-animate": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/rc-animate/-/rc-animate-2.4.4.tgz", - "integrity": "sha512-DjJLTUQj7XKKcuS8cczN0uOLfuSmgrVXFGieP1SZc87xUUTFGh8B/KjNmEtlfvxkSrSuVfb2rrEPER4SqKUtEA==", - "requires": { - "babel-runtime": "6.26.0", - "css-animation": "1.4.1", - "prop-types": "15.6.0" - } - }, - "rc-calendar": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/rc-calendar/-/rc-calendar-9.6.0.tgz", - "integrity": "sha512-XtKRHvYSLt4b5AJcbz6ED91IYImMcEV8BsQCdvrsnhv0pYsEa6LvAm+TVxLsnVJUqGPkCJfPRGFWN/XTNT6Vew==", - "requires": { - "babel-runtime": "6.26.0", - "classnames": "2.2.5", - "create-react-class": "15.6.2", - "moment": "2.19.1", - "prop-types": "15.6.0", - "rc-trigger": "2.4.0", - "rc-util": "4.5.0" - } - }, - "rc-cascader": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/rc-cascader/-/rc-cascader-0.13.1.tgz", - "integrity": "sha512-gbv7eEm3WY2Zhnyb2cLnCz+Zd8s4H5DKPQWLN5J1gCZioprW8uj9X5RPaScizb6HAO03sYsue2YRB+nNI8DrYg==", - "requires": { - "array-tree-filter": "1.0.1", - "prop-types": "15.6.0", - "rc-trigger": "2.4.0", - "rc-util": "4.5.0", - "shallow-equal": "1.0.0" - }, - "dependencies": { - "array-tree-filter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-tree-filter/-/array-tree-filter-1.0.1.tgz", - "integrity": "sha1-CorR7v04zoiFhjL5zAQj12NOTV0=" - } - } - }, - "rc-checkbox": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/rc-checkbox/-/rc-checkbox-2.1.5.tgz", - "integrity": "sha512-WXKnZV6ipS3Jsmd7mVenVUQf+ictgWZW0RqiH+7MeYdzGj/SL4g/S6MZgRdgzaBS2tGBCp4bvhGcyZLns6uQxw==", - "requires": { - "babel-runtime": "6.26.0", - "classnames": "2.2.5", - "prop-types": "15.6.0", - "rc-util": "4.5.0" - } - }, - "rc-collapse": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/rc-collapse/-/rc-collapse-1.9.1.tgz", - "integrity": "sha512-qG7/WYp8ulqKtdzC+3/aWMLGHQhiw8C79M1LgZFzkRdnIi+OvcQiSaJt+182gxbBYQuRq55f1yM2f8mk27Qy9Q==", - "requires": { - "classnames": "2.2.5", - "css-animation": "1.4.1", - "prop-types": "15.6.0", - "rc-animate": "2.4.4" - } - }, - "rc-dialog": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/rc-dialog/-/rc-dialog-7.1.4.tgz", - "integrity": "sha512-4rKDcT4mjgyaXzymD1vKAbLD6C5tDl+bTy23TxTrsOgMgRc0lqgnwQk4Mgr2j1r9I0w2KrqjcunwycquUlzxeg==", - "requires": { - "babel-runtime": "6.26.0", - "rc-animate": "2.4.4", - "rc-util": "4.5.0" - } - }, - "rc-drawer-menu": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/rc-drawer-menu/-/rc-drawer-menu-0.5.7.tgz", - "integrity": "sha512-F74yCXcATPtA/g6G1St9noGxIh8JjBR0IJsaGi99S8E1jViPyPpPYmDJNTYZXFKIBjJlF5kbk16ZoyPq2HF8cw==", - "requires": { - "babel-runtime": "6.26.0", - "classnames": "2.2.5", - "prop-types": "15.6.0" - } - }, - "rc-dropdown": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/rc-dropdown/-/rc-dropdown-2.1.2.tgz", - "integrity": "sha512-vdt2JH6gP16B5UupbWk4WGe4t4okg6tZtCKShTm47yQpgk0jpw67aS8MWUVYxtgZChgYrvF4Q/uAgAx6vdetIg==", - "requires": { - "babel-runtime": "6.26.0", - "prop-types": "15.6.0", - "rc-trigger": "2.4.0", - "react-lifecycles-compat": "3.0.4" - } - }, - "rc-editor-core": { - "version": "0.8.6", - "resolved": "https://registry.npmjs.org/rc-editor-core/-/rc-editor-core-0.8.6.tgz", - "integrity": "sha512-6M4C0qLTf/UvQA0XNb8BWlb5+tZ5LCZKc9Hs0oH6Fn+18XMRILYiUKBCdLObaj0LVeq5vhq+zra9sjfqBEguHQ==", - "requires": { - "babel-runtime": "6.26.0", - "classnames": "2.2.5", - "draft-js": "0.10.5", - "immutable": "3.7.6", - "lodash": "4.17.4", - "prop-types": "15.6.0", - "setimmediate": "1.0.5" - } - }, - "rc-editor-mention": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/rc-editor-mention/-/rc-editor-mention-1.1.6.tgz", - "integrity": "sha512-fzD0HueQrp8CYe6HO44pyD1p1kNk0fJvxG0VpZ67fSSDz8AiMS2L6nduw7XNJ+vG64YsGQW4rqACb1Lc7+SYLA==", - "requires": { - "babel-runtime": "6.26.0", - "classnames": "2.2.5", - "dom-scroll-into-view": "1.2.1", - "draft-js": "0.10.5", - "prop-types": "15.6.0", - "rc-animate": "2.4.4", - "rc-editor-core": "0.8.6" - } - }, - "rc-form": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/rc-form/-/rc-form-2.2.0.tgz", - "integrity": "sha512-W3fct0JFyLHBOiWfLByJKLoB82tuPGvSsJ5V4pm6RRJ+ehofpvOIA5nmgKpPyosg3EfC9rx32rJrEK0fidnaRw==", - "requires": { - "async-validator": "1.8.2", - "babel-runtime": "6.26.0", - "create-react-class": "15.6.2", - "dom-scroll-into-view": "1.2.1", - "hoist-non-react-statics": "2.5.0", - "lodash": "4.17.4", - "warning": "3.0.0" - } - }, - "rc-hammerjs": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/rc-hammerjs/-/rc-hammerjs-0.6.9.tgz", - "integrity": "sha512-4llgWO3RgLyVbEqUdGsDfzUDqklRlQW5VEhE3x35IvhV+w//VPRG34SBavK3D2mD/UaLKaohgU41V4agiftC8g==", - "requires": { - "babel-runtime": "6.26.0", - "hammerjs": "2.0.8", - "prop-types": "15.6.0" - } - }, - "rc-input-number": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/rc-input-number/-/rc-input-number-4.0.7.tgz", - "integrity": "sha512-iij0JPOZMHGJMq9nwpVk8/rgTcbMy++9ePChZF6vYH7JO5rHtLohHy5GGWY2HjhNai+EB8/46USFhKKCq0TzPQ==", - "requires": { - "babel-runtime": "6.26.0", - "classnames": "2.2.5", - "is-negative-zero": "2.0.0", - "prop-types": "15.6.0", - "rmc-feedback": "2.0.0" - } - }, - "rc-menu": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/rc-menu/-/rc-menu-7.0.3.tgz", - "integrity": "sha512-QtcTb4CG1skgEghvTbR0g4pVH+q3LlkBGOMYXLmke/ck64UuYlt2AnEqFsR1vyAov67Fkoic4jwudqGdiYGM0Q==", - "requires": { - "babel-runtime": "6.26.0", - "classnames": "2.2.5", - "dom-scroll-into-view": "1.2.1", - "mini-store": "1.1.0", - "prop-types": "15.6.0", - "rc-animate": "2.4.4", - "rc-trigger": "2.4.0", - "rc-util": "4.5.0" - } - }, - "rc-notification": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/rc-notification/-/rc-notification-3.1.1.tgz", - "integrity": "sha512-70a/qR3SRnYr728H0viEyv8QtLjWzUb3kTZV96yqU/Ro5jWSF/Q3qK7dRGEuyfqjWyGVEuTCyiKNu/qAp26m9g==", - "requires": { - "babel-runtime": "6.26.0", - "classnames": "2.2.5", - "prop-types": "15.6.0", - "rc-animate": "2.4.4", - "rc-util": "4.5.0" - } - }, - "rc-pagination": { - "version": "1.16.3", - "resolved": "https://registry.npmjs.org/rc-pagination/-/rc-pagination-1.16.3.tgz", - "integrity": "sha512-KF9vOmHwMP2OfJocVtHDSmUK5nxW8GyiFcl+CtB9NsNeDxy7a7hYyhsM9w753hqMGM+B2ZBD3tqIaMK+iHpOpg==", - "requires": { - "babel-runtime": "6.26.0", - "prop-types": "15.6.0" - } - }, - "rc-progress": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/rc-progress/-/rc-progress-2.2.5.tgz", - "integrity": "sha1-5h0FRL+dQgjlujL8UJYhWef5UqM=", - "requires": { - "babel-runtime": "6.26.0", - "prop-types": "15.6.0" - } - }, - "rc-rate": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/rc-rate/-/rc-rate-2.4.0.tgz", - "integrity": "sha512-gYHxaXqObiIw1ekRS8tq2YUKpTGL/Q9LxMdSCXZS++d5bVsmmTCZUvJFKEt0IfLb19sZtxCaQvwanzNpqaxY7Q==", - "requires": { - "babel-runtime": "6.26.0", - "classnames": "2.2.5", - "prop-types": "15.6.0", - "rc-util": "4.5.0" - } - }, - "rc-select": { - "version": "8.0.8", - "resolved": "https://registry.npmjs.org/rc-select/-/rc-select-8.0.8.tgz", - "integrity": "sha512-ziwO5Z/CBW84FUGnErYbxva17NwCpV8gMoogab59MvOp+lz00vEAkOgJSXlOZzM+Q9H6wtQbS82Vhqhf33nXBg==", - "requires": { - "babel-runtime": "6.26.0", - "classnames": "2.2.5", - "component-classes": "1.2.6", - "dom-scroll-into-view": "1.2.1", - "prop-types": "15.6.0", - "rc-animate": "2.4.4", - "rc-menu": "7.0.3", - "rc-trigger": "2.4.0", - "rc-util": "4.5.0", - "react-lifecycles-compat": "3.0.4", - "warning": "3.0.0" - } - }, - "rc-slider": { - "version": "8.6.1", - "resolved": "https://registry.npmjs.org/rc-slider/-/rc-slider-8.6.1.tgz", - "integrity": "sha512-6DoLW5pWR8K/7Z55E5wKZGGa22HFY6LB4Z0PegzSXrQ/RqUHm9hFHRA3FYCuPOsg/Zsi+SgGPvzC2P/I/YZ6Lg==", - "requires": { - "babel-runtime": "6.26.0", - "classnames": "2.2.5", - "prop-types": "15.6.0", - "rc-tooltip": "3.7.2", - "rc-util": "4.5.0", - "shallowequal": "1.0.2", - "warning": "3.0.0" - } - }, - "rc-steps": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/rc-steps/-/rc-steps-3.1.1.tgz", - "integrity": "sha512-oon2VdAHWrZmkB07MUMhq7k2IazFmtOi+6CCPn1ao3ZJ/89/aArP9/3pDQBm88FBQBcDh1E04kSHufbdY1kxfw==", - "requires": { - "babel-runtime": "6.26.0", - "classnames": "2.2.5", - "lodash": "4.17.10", - "prop-types": "15.6.0" - }, - "dependencies": { - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==" - } - } - }, - "rc-switch": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/rc-switch/-/rc-switch-1.6.0.tgz", - "integrity": "sha512-tlnYj92N/PxFLWJObATgSPYWESCFTUtdFjDRbCJFvSd4j2a8IFLz20X/5d3OTnFtf7DcxLTa/aGIPmsI3mFn3g==", - "requires": { - "babel-runtime": "6.26.0", - "classnames": "2.2.5", - "prop-types": "15.6.0" - } - }, - "rc-table": { - "version": "6.1.12", - "resolved": "https://registry.npmjs.org/rc-table/-/rc-table-6.1.12.tgz", - "integrity": "sha512-cRdURLsbv2KAvpCvpJ935jHMyvA/vzs13EvlAq6Ti6Ars/isp2nxLlvldzum8V5XHe9yV6g4GMhkCXwZnEyxpg==", - "requires": { - "babel-runtime": "6.26.0", - "component-classes": "1.2.6", - "lodash": "4.17.10", - "mini-store": "1.1.0", - "prop-types": "15.6.0", - "rc-util": "4.5.0", - "react-lifecycles-compat": "3.0.4", - "shallowequal": "1.0.2", - "warning": "3.0.0" - }, - "dependencies": { - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==" - } - } - }, - "rc-tabs": { - "version": "9.2.5", - "resolved": "https://registry.npmjs.org/rc-tabs/-/rc-tabs-9.2.5.tgz", - "integrity": "sha512-pUFHtpmoQjBRN7JWYlYWS+d2cwIlo+dgMD5J7+czyVThYhhbmdi/3ZbaRU6txuQfK3to4S6e31hJSD+wXcQU4w==", - "requires": { - "babel-runtime": "6.26.0", - "classnames": "2.2.5", - "create-react-class": "15.6.2", - "lodash": "4.17.10", - "prop-types": "15.6.0", - "rc-hammerjs": "0.6.9", - "rc-util": "4.5.0", - "warning": "3.0.0" - }, - "dependencies": { - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==" - } - } - }, - "rc-time-picker": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/rc-time-picker/-/rc-time-picker-3.3.1.tgz", - "integrity": "sha512-iCo6Fs6Bp/HjjSvdA+nv/yJEWSe+vDyunV57uVzZkW+4QDQ+BOvZGGwJcfL407u/eP1QKmeljZN8Iu3KjdKIGg==", - "requires": { - "babel-runtime": "6.26.0", - "classnames": "2.2.5", - "moment": "2.19.1", - "prop-types": "15.6.0", - "rc-trigger": "2.4.0" - } - }, - "rc-tooltip": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/rc-tooltip/-/rc-tooltip-3.7.2.tgz", - "integrity": "sha512-vsF29ohlfgr7lEP12aJ5j4U/4hzqSBYjWQo8I09re+q95v1o4nDjH1q/B3qFkf9aml2FbgdkJw9KYz/zXUgApA==", - "requires": { - "babel-runtime": "6.26.0", - "prop-types": "15.6.0", - "rc-trigger": "2.4.0" - } - }, - "rc-tree": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/rc-tree/-/rc-tree-1.8.3.tgz", - "integrity": "sha512-rtQPaHzaVu2u+CYOuxi0vyk+307DNDgYzEJPBDFcqXevVXe52PovCdY+zSoyG4g9lqgEhS/izyM5fmvQRMYMkw==", - "requires": { - "babel-runtime": "6.26.0", - "classnames": "2.2.5", - "prop-types": "15.6.0", - "rc-animate": "2.4.4", - "rc-util": "4.5.0", - "warning": "3.0.0" - } - }, - "rc-tree-select": { - "version": "1.12.12", - "resolved": "https://registry.npmjs.org/rc-tree-select/-/rc-tree-select-1.12.12.tgz", - "integrity": "sha512-fHCuXSN+SyGtygYsin/aUsNYRBAi6Ts1E/omjB2QDgrGa7jUgMTjXACh7iSDw6su7JfXnct4YAEdiNXi7ga2QQ==", - "requires": { - "babel-runtime": "6.26.0", - "classnames": "2.2.5", - "prop-types": "15.6.0", - "rc-animate": "2.4.4", - "rc-tree": "1.7.11", - "rc-trigger": "2.4.0", - "rc-util": "4.5.0" - }, - "dependencies": { - "rc-tree": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/rc-tree/-/rc-tree-1.7.11.tgz", - "integrity": "sha512-Vof0KscpGA6XmWZ78rN9ul0ZzGIhjR/FrUaDgGGNgIiobxpSH3gg08C3Ae739NZ9c9a5ZuHYf/czLYfh+z5Xpg==", - "requires": { - "babel-runtime": "6.26.0", - "classnames": "2.2.5", - "prop-types": "15.6.0", - "rc-animate": "2.4.4", - "rc-util": "4.5.0", - "warning": "3.0.0" - } - } - } - }, - "rc-trigger": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/rc-trigger/-/rc-trigger-2.4.0.tgz", - "integrity": "sha512-W09uwq3jPdyGbmh5E4W9yOqSAhonii5+SiecUMn6pSoyM2n5kv37YiHvIh/C7TkOGbR6jBIil7+PTVYvzs2HEg==", - "requires": { - "babel-runtime": "6.26.0", - "prop-types": "15.6.0", - "rc-align": "2.3.6", - "rc-animate": "2.4.4", - "rc-util": "4.5.0" - } - }, - "rc-upload": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/rc-upload/-/rc-upload-2.4.4.tgz", - "integrity": "sha512-EQgGSFiqZWkQ93kC997c1Uan9VgMzJvlaUQt16PrHvmHw/boUs3M/lf0GhYlmpe7YSnN0jGpMNUcENUFwDVAHA==", - "requires": { - "babel-runtime": "6.26.0", - "classnames": "2.2.5", - "prop-types": "15.6.0", - "warning": "2.1.0" - }, - "dependencies": { - "warning": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/warning/-/warning-2.1.0.tgz", - "integrity": "sha1-ISINnGOvx3qMkhEeARr3Bc4MaQE=", - "requires": { - "loose-envify": "1.3.1" - } - } - } - }, - "rc-util": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-4.5.0.tgz", - "integrity": "sha512-KYuFBBqxCFI8fb4Wva+X3fmAZpGPo4i9gTNdsVKldHVi3hrnv3VawF89CPndxfsV5QT3J+ic76X5c4erQETi1w==", - "requires": { - "add-dom-event-listener": "1.0.2", - "babel-runtime": "6.26.0", - "prop-types": "15.6.0", - "shallowequal": "0.2.2" - }, - "dependencies": { - "shallowequal": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-0.2.2.tgz", - "integrity": "sha1-HjL9W8q2rWiKSBLLDMBO/HXHAU4=", - "requires": { - "lodash.keys": "3.1.2" - } - } - } - }, - "react": { - "version": "16.3.2", - "resolved": "https://registry.npmjs.org/react/-/react-16.3.2.tgz", - "integrity": "sha512-o5GPdkhciQ3cEph6qgvYB7LTOHw/GB0qRI6ZFNugj49qJCFfgHwVNjZ5u+b7nif4vOeMIOuYj3CeYe2IBD74lg==", - "requires": { - "fbjs": "0.8.16", - "loose-envify": "1.3.1", - "object-assign": "4.1.1", - "prop-types": "15.6.0" - } - }, - "react-container-query": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/react-container-query/-/react-container-query-0.9.1.tgz", - "integrity": "sha1-VxNtmMGtoYCEsny0WgAGqfA6ldY=", - "requires": { - "container-query-toolkit": "0.1.1", - "lodash": "4.17.4", - "resize-observer-lite": "0.2.2" - } - }, - "react-dev-utils": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-5.0.1.tgz", - "integrity": "sha512-+y92rG6pmXt3cpcg/NGmG4w/W309tWNSmyyPL8hCMxuCSg2UP/hUg3npACj2UZc8UKVSXexyLrCnxowizGoAsw==", - "dev": true, - "requires": { - "address": "1.0.3", - "babel-code-frame": "6.26.0", - "chalk": "1.1.3", - "cross-spawn": "5.1.0", - "detect-port-alt": "1.1.6", - "escape-string-regexp": "1.0.5", - "filesize": "3.5.11", - "global-modules": "1.0.0", - "gzip-size": "3.0.0", - "inquirer": "3.3.0", - "is-root": "1.0.0", - "opn": "5.2.0", - "react-error-overlay": "4.0.0", - "recursive-readdir": "2.2.1", - "shell-quote": "1.6.1", - "sockjs-client": "1.1.4", - "strip-ansi": "3.0.1", - "text-table": "0.2.0" - }, - "dependencies": { - "detect-port-alt": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", - "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", - "dev": true, - "requires": { - "address": "1.0.3", - "debug": "2.6.9" - } - }, - "react-error-overlay": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-4.0.0.tgz", - "integrity": "sha512-FlsPxavEyMuR6TjVbSSywovXSEyOg6ZDj5+Z8nbsRl9EkOzAhEIcS+GLoQDC5fz/t9suhUXWmUrOBrgeUvrMxw==", - "dev": true - } - } - }, - "react-document-title": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/react-document-title/-/react-document-title-2.0.3.tgz", - "integrity": "sha1-u/kioNcUEvyUgkXkKDskEt9w8rk=", - "requires": { - "prop-types": "15.6.0", - "react-side-effect": "1.1.3" - } - }, - "react-dom": { - "version": "16.3.2", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.3.2.tgz", - "integrity": "sha512-MMPko3zYncNrz/7gG17wJWUREZDvskZHXOwbttzl0F0L3wDmToyuETuo/r8Y5yvDejwYcRyWI1lvVBjLJWFwKA==", - "requires": { - "fbjs": "0.8.16", - "loose-envify": "1.3.1", - "object-assign": "4.1.1", - "prop-types": "15.6.0" - } - }, - "react-error-overlay": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-3.0.0.tgz", - "integrity": "sha512-XzgvowFrwDo6TWcpJ/WTiarb9UI6lhA4PMzS7n1joK3sHfBBBOQHUc0U4u57D6DWO9vHv6lVSWx2Q/Ymfyv4hw==", - "dev": true - }, - "react-fittext": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/react-fittext/-/react-fittext-1.0.0.tgz", - "integrity": "sha1-g2ocBPkyL2yUy2nkXGYAb8QtN6U=", - "requires": { - "create-react-class": "15.6.2", - "prop-types": "15.6.0" - } - }, - "react-fontawesome": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/react-fontawesome/-/react-fontawesome-1.6.1.tgz", - "integrity": "sha1-7dzhfn3HMaoJ/UoYZoimF5OhbFw=", - "requires": { - "prop-types": "15.6.0" - } - }, - "react-format-number": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/react-format-number/-/react-format-number-1.3.1.tgz", - "integrity": "sha1-44atgyS8OX1V4PyQcvfEdtxOIoI=" - }, - "react-is": { - "version": "16.3.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.3.2.tgz", - "integrity": "sha512-ybEM7YOr4yBgFd6w8dJqwxegqZGJNBZl6U27HnGKuTZmDvVrD5quWOK/wAnMywiZzW+Qsk+l4X2c70+thp/A8Q==", - "dev": true - }, - "react-lazy-load": { - "version": "3.0.13", - "resolved": "https://registry.npmjs.org/react-lazy-load/-/react-lazy-load-3.0.13.tgz", - "integrity": "sha1-OwqS0zbUPT8Nc8vm81sXBQsIuCQ=", - "requires": { - "eventlistener": "0.0.1", - "lodash.debounce": "4.0.8", - "lodash.throttle": "4.1.1", - "prop-types": "15.6.0" - } - }, - "react-lifecycles-compat": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", - "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" - }, - "react-reconciler": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.7.0.tgz", - "integrity": "sha512-50JwZ3yNyMS8fchN+jjWEJOH3Oze7UmhxeoJLn2j6f3NjpfCRbcmih83XTWmzqtar/ivd5f7tvQhvvhism2fgg==", - "dev": true, - "requires": { - "fbjs": "0.8.16", - "loose-envify": "1.3.1", - "object-assign": "4.1.1", - "prop-types": "15.6.0" - } - }, - "react-redux": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-5.0.7.tgz", - "integrity": "sha512-5VI8EV5hdgNgyjfmWzBbdrqUkrVRKlyTKk1sGH3jzM2M2Mhj/seQgPXaz6gVAj2lz/nz688AdTqMO18Lr24Zhg==", - "requires": { - "hoist-non-react-statics": "2.5.0", - "invariant": "2.2.2", - "lodash": "4.17.10", - "lodash-es": "4.17.10", - "loose-envify": "1.3.1", - "prop-types": "15.6.0" - }, - "dependencies": { - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==" - } - } - }, - "react-router": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-4.2.0.tgz", - "integrity": "sha512-DY6pjwRhdARE4TDw7XjxjZsbx9lKmIcyZoZ+SDO7SBJ1KUeWNxT22Kara2AC7u6/c2SYEHlEDLnzBCcNhLE8Vg==", - "requires": { - "history": "4.7.2", - "hoist-non-react-statics": "2.5.0", - "invariant": "2.2.2", - "loose-envify": "1.3.1", - "path-to-regexp": "1.7.0", - "prop-types": "15.6.0", - "warning": "3.0.0" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - }, - "path-to-regexp": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", - "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", - "requires": { - "isarray": "0.0.1" - } - } - } - }, - "react-router-dom": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-4.2.2.tgz", - "integrity": "sha512-cHMFC1ZoLDfEaMFoKTjN7fry/oczMgRt5BKfMAkTu5zEuJvUiPp1J8d0eXSVTnBh6pxlbdqDhozunOOLtmKfPA==", - "requires": { - "history": "4.7.2", - "invariant": "2.2.2", - "loose-envify": "1.3.1", - "prop-types": "15.6.0", - "react-router": "4.2.0", - "warning": "3.0.0" - } - }, - "react-router-redux": { - "version": "5.0.0-alpha.9", - "resolved": "https://registry.npmjs.org/react-router-redux/-/react-router-redux-5.0.0-alpha.9.tgz", - "integrity": "sha512-euSgNIANnRXr4GydIuwA7RZCefrLQzIw5WdXspS8NPYbV+FxrKSS9MKG7U9vb6vsKHONnA4VxrVNWfnMUnUQAw==", - "requires": { - "history": "4.7.2", - "prop-types": "15.6.0", - "react-router": "4.2.0" - } - }, - "react-side-effect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/react-side-effect/-/react-side-effect-1.1.3.tgz", - "integrity": "sha1-USwlq+DewXKDTEAB7FxR4E1BvFw=", - "requires": { - "exenv": "1.2.2", - "shallowequal": "1.0.2" - } - }, - "react-slick": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/react-slick/-/react-slick-0.23.1.tgz", - "integrity": "sha512-vn4E+JeTUrjRgXDEV0QEiWo3fNdB6Lg/e8eMYSh3OjuadqYBsgn0OfbqNxVJs7cv1VmSKm14razHEbpRFP/mvw==", - "requires": { - "classnames": "2.2.5", - "enquire.js": "2.1.6", - "json2mq": "0.2.0", - "lodash.debounce": "4.0.8", - "resize-observer-polyfill": "1.5.0" - } - }, - "react-test-renderer": { - "version": "16.3.2", - "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.3.2.tgz", - "integrity": "sha512-lL8WHIpCTMdSe+CRkt0rfMxBkJFyhVrpdQ54BaJRIrXf9aVmbeHbRA8GFRpTvohPN5tPzMabmrzW2PUfWCfWwQ==", - "dev": true, - "requires": { - "fbjs": "0.8.16", - "object-assign": "4.1.1", - "prop-types": "15.6.0", - "react-is": "16.3.2" - } - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "1.1.0", - "normalize-package-data": "2.4.0", - "path-type": "1.1.0" - }, - "dependencies": { - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - } - } - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "requires": { - "find-up": "1.1.2", - "read-pkg": "1.1.0" - } - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.1", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" - }, - "dependencies": { - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" - } - } - }, - "readdirp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", - "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "minimatch": "3.0.4", - "readable-stream": "2.3.6", - "set-immediate-shim": "1.0.1" - } - }, - "realpath-native": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.0.0.tgz", - "integrity": "sha512-XJtlRJ9jf0E1H1SLeJyQ9PGzQD7S65h1pRXEcAeK48doKOnKxcgPeNohJvD5u/2sI9J1oke6E8bZHS/fmW1UiQ==", - "dev": true, - "requires": { - "util.promisify": "1.0.0" - } - }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true, - "requires": { - "resolve": "1.5.0" - } - }, - "recursive-readdir": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.1.tgz", - "integrity": "sha1-kO8jHQd4xc4JPJpI105cVCLROpk=", - "dev": true, - "requires": { - "minimatch": "3.0.3" - }, - "dependencies": { - "minimatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha1-Kk5AkLlrLbBqnX3wEFWmKnfJt3Q=", - "dev": true, - "requires": { - "brace-expansion": "1.1.8" - } - } - } - }, - "redbox-react": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/redbox-react/-/redbox-react-1.5.0.tgz", - "integrity": "sha512-mdxArOI3sF8K5Nay5NG+lv/VW516TbXjjd4h1wcV1Iy4IMDQPnCayjoQXBAycAFSME4nyXRUXCjHxsw2rYpVRw==", - "dev": true, - "requires": { - "error-stack-parser": "1.3.6", - "object-assign": "4.1.1", - "prop-types": "15.6.0", - "sourcemapped-stacktrace": "1.1.7" - } - }, - "redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "dev": true, - "requires": { - "indent-string": "2.1.0", - "strip-indent": "1.0.1" - } - }, - "reduce-css-calc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", - "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=", - "dev": true, - "requires": { - "balanced-match": "0.4.2", - "math-expression-evaluator": "1.2.17", - "reduce-function-call": "1.0.2" - }, - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", - "dev": true - } - } - }, - "reduce-function-call": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz", - "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=", - "dev": true, - "requires": { - "balanced-match": "0.4.2" - }, - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", - "dev": true - } - } - }, - "redux": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/redux/-/redux-3.7.2.tgz", - "integrity": "sha512-pNqnf9q1hI5HHZRBkj3bAngGZW/JMCmexDlOxw4XagXY2o1327nHH54LoTjiPJ0gizoqPDRqWyX/00g0hD6w+A==", - "requires": { - "lodash": "4.17.4", - "lodash-es": "4.17.10", - "loose-envify": "1.3.1", - "symbol-observable": "1.2.0" - } - }, - "redux-saga": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/redux-saga/-/redux-saga-0.16.0.tgz", - "integrity": "sha1-CiMdsKFIkwHdmA9vL4jYztQY9yQ=" - }, - "regenerate": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", - "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", - "dev": true - }, - "regenerate-unicode-properties": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-6.0.0.tgz", - "integrity": "sha512-BvXxRS7RfVWxtm7vrq+0I0j7sqZ1zeSC+yzf5HS0qLnKcZPX541gFEGB39LvGuKHrkyKXrzXug+oC7xkM1Zovw==", - "dev": true, - "requires": { - "regenerate": "1.4.0" - } - }, - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" - }, - "regenerator-transform": { - "version": "0.12.3", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.12.3.tgz", - "integrity": "sha512-y2uxO/6u+tVmtEDIKo+tLCtI0GcbQr0OreosKgCd7HP4VypGjtTrw79DezuwT+W5QX0YWuvpeBOgumrepwM1kA==", - "dev": true, - "requires": { - "private": "0.1.8" - } - }, - "regex-cache": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", - "dev": true, - "requires": { - "is-equal-shallow": "0.1.3" - } - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "3.0.2", - "safe-regex": "1.1.0" - } - }, - "regexpp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz", - "integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==", - "dev": true - }, - "regexpu-core": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.1.5.tgz", - "integrity": "sha512-3xo5pFze1F8oR4F9x3aFbdtdxAxQ9WBX6gXfLgeBt7KpDI0+oDF7WVntnhsPKqobU/GAYc2pmx+y3z0JI1+z3w==", - "dev": true, - "requires": { - "regenerate": "1.4.0", - "regenerate-unicode-properties": "6.0.0", - "regjsgen": "0.4.0", - "regjsparser": "0.3.0", - "unicode-match-property-ecmascript": "1.0.3", - "unicode-match-property-value-ecmascript": "1.0.1" - } - }, - "registry-auth-token": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", - "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", - "dev": true, - "requires": { - "rc": "1.2.7", - "safe-buffer": "5.1.1" - } - }, - "registry-url": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", - "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", - "dev": true, - "requires": { - "rc": "1.2.7" - } - }, - "regjsgen": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.4.0.tgz", - "integrity": "sha512-X51Lte1gCYUdlwhF28+2YMO0U6WeN0GLpgpA7LK7mbdDnkQYiwvEpmpe0F/cv5L14EbxgrdayAG3JETBv0dbXA==", - "dev": true - }, - "regjsparser": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.3.0.tgz", - "integrity": "sha512-zza72oZBBHzt64G7DxdqrOo/30bhHkwMUoT0WqfGu98XLd7N+1tsy5MJ96Bk4MD0y74n629RhmrGW6XlnLLwCA==", - "dev": true, - "requires": { - "jsesc": "0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - } - } - }, - "regression": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regression/-/regression-2.0.1.tgz", - "integrity": "sha1-jSnD6CJKEIUMNeM36FqLL6w7DIc=" - }, - "relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", - "dev": true - }, - "remark": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/remark/-/remark-8.0.0.tgz", - "integrity": "sha512-K0PTsaZvJlXTl9DN6qYlvjTkqSZBFELhROZMrblm2rB+085flN84nz4g/BscKRMqDvhzlK1oQ/xnWQumdeNZYw==", - "dev": true, - "requires": { - "remark-parse": "4.0.0", - "remark-stringify": "4.0.0", - "unified": "6.1.5" - }, - "dependencies": { - "remark-parse": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-4.0.0.tgz", - "integrity": "sha512-XZgICP2gJ1MHU7+vQaRM+VA9HEL3X253uwUM/BGgx3iv6TH2B3bF3B8q00DKcyP9YrJV+/7WOWEWBFF/u8cIsw==", - "dev": true, - "requires": { - "collapse-white-space": "1.0.3", - "is-alphabetical": "1.0.1", - "is-decimal": "1.0.1", - "is-whitespace-character": "1.0.1", - "is-word-character": "1.0.1", - "markdown-escapes": "1.0.1", - "parse-entities": "1.1.1", - "repeat-string": "1.6.1", - "state-toggle": "1.0.0", - "trim": "0.0.1", - "trim-trailing-lines": "1.1.0", - "unherit": "1.1.0", - "unist-util-remove-position": "1.1.1", - "vfile-location": "2.0.2", - "xtend": "4.0.1" - } - } - } - }, - "remark-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-3.0.1.tgz", - "integrity": "sha1-G5+EGkTY9PvyJGhQJlRZpOs1TIA=", - "dev": true, - "requires": { - "collapse-white-space": "1.0.3", - "has": "1.0.1", - "is-alphabetical": "1.0.1", - "is-decimal": "1.0.1", - "is-whitespace-character": "1.0.1", - "is-word-character": "1.0.1", - "markdown-escapes": "1.0.1", - "parse-entities": "1.1.1", - "repeat-string": "1.6.1", - "state-toggle": "1.0.0", - "trim": "0.0.1", - "trim-trailing-lines": "1.1.0", - "unherit": "1.1.0", - "unist-util-remove-position": "1.1.1", - "vfile-location": "2.0.2", - "xtend": "4.0.1" - }, - "dependencies": { - "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", - "dev": true - } - } - }, - "remark-stringify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-4.0.0.tgz", - "integrity": "sha512-xLuyKTnuQer3ke9hkU38SUYLiTmS078QOnoFavztmbt/pAJtNSkNtFgR0U//uCcmG0qnyxao+PDuatQav46F1w==", - "dev": true, - "requires": { - "ccount": "1.0.3", - "is-alphanumeric": "1.0.0", - "is-decimal": "1.0.1", - "is-whitespace-character": "1.0.1", - "longest-streak": "2.0.2", - "markdown-escapes": "1.0.1", - "markdown-table": "1.1.2", - "mdast-util-compact": "1.0.1", - "parse-entities": "1.1.1", - "repeat-string": "1.6.1", - "state-toggle": "1.0.0", - "stringify-entities": "1.3.2", - "unherit": "1.1.0", - "xtend": "4.0.1" - } - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "renderkid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.1.tgz", - "integrity": "sha1-iYyr/Ivt5Le5ETWj/9Mj5YwNsxk=", - "dev": true, - "requires": { - "css-select": "1.2.0", - "dom-converter": "0.1.4", - "htmlparser2": "3.3.0", - "strip-ansi": "3.0.1", - "utila": "0.3.3" - }, - "dependencies": { - "domhandler": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.1.0.tgz", - "integrity": "sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=", - "dev": true, - "requires": { - "domelementtype": "1.3.0" - } - }, - "domutils": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.1.6.tgz", - "integrity": "sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=", - "dev": true, - "requires": { - "domelementtype": "1.3.0" - } - }, - "htmlparser2": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz", - "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=", - "dev": true, - "requires": { - "domelementtype": "1.3.0", - "domhandler": "2.1.0", - "domutils": "1.1.6", - "readable-stream": "1.0.34" - } - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - }, - "utila": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", - "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=", - "dev": true - } - } - }, - "repeat-element": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" - }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, - "requires": { - "is-finite": "1.0.2" - } - }, - "replace-ext": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", - "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", - "dev": true - }, - "request": { - "version": "2.81.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", - "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", - "dev": true, - "optional": true, - "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.7.0", - "caseless": "0.12.0", - "combined-stream": "1.0.6", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.18", - "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", - "safe-buffer": "5.1.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.4", - "tunnel-agent": "0.6.0", - "uuid": "3.2.1" - }, - "dependencies": { - "performance-now": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", - "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", - "dev": true, - "optional": true - }, - "qs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", - "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", - "dev": true, - "optional": true - } - } - }, - "request-ip": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/request-ip/-/request-ip-2.0.2.tgz", - "integrity": "sha1-3urm1K8hdoSX24zQX6NxQ/jxJX4=", - "requires": { - "is_js": "0.9.0" - } - }, - "request-promise-core": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz", - "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=", - "dev": true, - "requires": { - "lodash": "4.17.4" - } - }, - "request-promise-native": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.5.tgz", - "integrity": "sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU=", - "dev": true, - "requires": { - "request-promise-core": "1.1.1", - "stealthy-require": "1.1.1", - "tough-cookie": "2.3.4" - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "require-from-string": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", - "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=", - "dev": true - }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true - }, - "require-uncached": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", - "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", - "dev": true, - "requires": { - "caller-path": "0.1.0", - "resolve-from": "1.0.1" - } - }, - "requireindex": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", - "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", - "dev": true - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", - "dev": true - }, - "reselect": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/reselect/-/reselect-3.0.1.tgz", - "integrity": "sha1-79qpjqdFEyTQkrKyFjpqHXqaIUc=", - "dev": true - }, - "resize-observer-lite": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/resize-observer-lite/-/resize-observer-lite-0.2.2.tgz", - "integrity": "sha1-+kQSMbsb2CBOAHKQQuxn6mCOyhs=", - "requires": { - "element-resize-detector": "1.1.11" - }, - "dependencies": { - "element-resize-detector": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/element-resize-detector/-/element-resize-detector-1.1.11.tgz", - "integrity": "sha1-NNya/2JCOeDr26bNre6uiKTPCxs=", - "requires": { - "batch-processor": "1.0.0" - } - } - } - }, - "resize-observer-polyfill": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.0.tgz", - "integrity": "sha512-M2AelyJDVR/oLnToJLtuDJRBBWUGUvvGigj1411hXhAdyFWqMaqHp7TixW3FpiLuVaikIcR1QL+zqoJoZlOgpg==" - }, - "resolve": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", - "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", - "requires": { - "path-parse": "1.0.5" - } - }, - "resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", - "dev": true, - "requires": { - "resolve-from": "3.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true - } - } - }, - "resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", - "dev": true, - "requires": { - "expand-tilde": "2.0.2", - "global-modules": "1.0.0" - } - }, - "resolve-from": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", - "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", - "dev": true - }, - "resolve-pathname": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-2.2.0.tgz", - "integrity": "sha512-bAFz9ld18RzJfddgrO2e/0S2O81710++chRMUxHjXOYKF6jTAMrUNZrEZ1PvV0zlhfjidm08iRPdTLPno1FuRg==" - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true - }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dev": true, - "requires": { - "onetime": "2.0.1", - "signal-exit": "3.0.2" - } - }, - "resumer": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", - "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", - "requires": { - "through": "2.3.8" - } - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true - }, - "right-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", - "requires": { - "align-text": "0.1.4" - } - }, - "rimraf": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", - "requires": { - "glob": "7.1.2" - } - }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "requires": { - "hash-base": "3.0.4", - "inherits": "2.0.3" - } - }, - "rmc-feedback": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/rmc-feedback/-/rmc-feedback-2.0.0.tgz", - "integrity": "sha512-5PWOGOW7VXks/l3JzlOU9NIxRpuaSS8d9zA3UULUCuTKnpwBHNvv1jSJzxgbbCQeYzROWUpgKI4za3X4C/mKmQ==", - "requires": { - "babel-runtime": "6.26.0", - "classnames": "2.2.5" - } - }, - "roadhog": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/roadhog/-/roadhog-2.3.0.tgz", - "integrity": "sha512-7VWfO2km31uYTScFhG2u4WvAuZSUrPEHtaxU5sVnmPl5tYTnZ3nt5sS2l2CzMIvCeNbX8mTcozZBsahICo0uFA==", - "dev": true, - "requires": { - "@babel/core": "7.0.0-beta.47", - "@babel/polyfill": "7.0.0-beta.47", - "@babel/runtime": "7.0.0-beta.47", - "af-webpack": "0.17.4", - "atool-monitor": "0.4.4", - "babel-plugin-add-module-exports": "0.2.1", - "babel-preset-umi": "0.2.8", - "body-parser": "1.18.3", - "chalk": "1.1.3", - "chokidar": "1.7.0", - "debug": "3.1.0", - "express-http-proxy": "0.11.0", - "glob": "7.1.2", - "graceful-process": "1.2.0", - "is-plain-object": "2.0.4", - "lodash.escaperegexp": "4.1.2", - "parse-json-pretty": "0.1.0", - "strip-json-comments": "2.0.1", - "umi-test": "0.4.4", - "update-notifier": "2.5.0", - "yargs": "8.0.2" - }, - "dependencies": { - "@babel/polyfill": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.0.0-beta.47.tgz", - "integrity": "sha512-jDKBjX1K/fUNrPGo3wDKEWIXDHZEgpsKTRo3B4Ox5cq5Hxcp219ez/oGofDjNMUJAUI+gfsQfRarMkC5f3uiYw==", - "dev": true, - "requires": { - "core-js": "2.5.6", - "regenerator-runtime": "0.11.1" - } - }, - "core-js": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.6.tgz", - "integrity": "sha512-lQUVfQi0aLix2xpyjrrJEvfuYCqPc/HwmTKsC/VNf8q0zsjX7SQZtp4+oRONN5Tsur9GDETPjj+Ub2iDiGZfSQ==", - "dev": true - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true - } - } - }, - "roadhog-api-doc": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/roadhog-api-doc/-/roadhog-api-doc-0.3.4.tgz", - "integrity": "sha512-4YpI4VlFZimiL2AmQxwsUbsaQcZz7rlLDLQR2o6I6m9/696jZtrWjNEnWnqFmqUWmSapOWA0rgV0tNJtnz/ysQ==", - "dev": true, - "requires": { - "chalk": "2.4.1", - "chokidar": "1.7.0", - "commander": "2.15.1", - "fs-extra": "4.0.3", - "is-windows": "1.0.2", - "portfinder": "1.0.13", - "shelljs": "0.7.8" - }, - "dependencies": { - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" - } - }, - "commander": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", - "dev": true - }, - "fs-extra": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", - "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "jsonfile": "4.0.0", - "universalify": "0.1.1" - } - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11" - } - } - } - }, - "rollbar": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/rollbar/-/rollbar-2.3.9.tgz", - "integrity": "sha512-NvZHQDkAYdoYmBtMyUMg5tCYmqeYeOFdOKuWs0opkrLIxj/HU+V9DfEJmKO/FFBnJ7xfEexG4dph8jqkOcRE2g==", - "requires": { - "async": "1.2.1", - "console-polyfill": "0.3.0", - "debug": "2.6.9", - "decache": "3.1.0", - "error-stack-parser": "1.3.3", - "extend": "3.0.0", - "json-stringify-safe": "5.0.1", - "lru-cache": "2.2.4", - "request-ip": "2.0.2", - "uuid": "3.0.1" - }, - "dependencies": { - "async": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/async/-/async-1.2.1.tgz", - "integrity": "sha1-pIFqF81f9RbfosdpikUzabl5DeA=" - }, - "error-stack-parser": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-1.3.3.tgz", - "integrity": "sha1-+tpuOpzSsOCA5tb8dRQYZJc081w=", - "requires": { - "stackframe": "0.3.1" - } - }, - "extend": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz", - "integrity": "sha1-WkdDU7nzNT3dgXbf03uRyDpG8dQ=" - }, - "lru-cache": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.2.4.tgz", - "integrity": "sha1-bGWGGb7PFAMdDQtZSxYELOTcBj0=" - }, - "uuid": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz", - "integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=" - } - } - }, - "rollup": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.25.8.tgz", - "integrity": "sha1-v2zoO4dRDRY0Ru6qV37WpvxYNeA=", - "requires": { - "chalk": "1.1.3", - "minimist": "1.2.0", - "source-map-support": "0.3.3" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "source-map": { - "version": "0.1.32", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.32.tgz", - "integrity": "sha1-yLbBZ3l7pHQKjqMyUhYv8IWRsmY=", - "requires": { - "amdefine": "1.0.1" - } - }, - "source-map-support": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.3.3.tgz", - "integrity": "sha1-NJAJd9W6PwfHdX7nLnO7GptTdU8=", - "requires": { - "source-map": "0.1.32" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "rst-selector-parser": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz", - "integrity": "sha1-gbIw6i/MYGbInjRy3nlChdmwPZE=", - "dev": true, - "requires": { - "lodash.flattendeep": "4.4.0", - "nearley": "2.11.0" - } - }, - "rsvp": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-3.6.2.tgz", - "integrity": "sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw==", - "dev": true - }, - "run-async": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", - "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", - "dev": true, - "requires": { - "is-promise": "2.1.0" - } - }, - "run-queue": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", - "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", - "dev": true, - "requires": { - "aproba": "1.2.0" - } - }, - "rw": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", - "integrity": "sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q=" - }, - "rx-lite": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", - "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", - "dev": true - }, - "rx-lite-aggregates": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", - "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", - "dev": true, - "requires": { - "rx-lite": "4.0.8" - } - }, - "rxjs": { - "version": "5.5.10", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.10.tgz", - "integrity": "sha512-SRjimIDUHJkon+2hFo7xnvNC4ZEHGzCRwh9P7nzX3zPkCGFEg/tuElrNR7L/rZMagnK2JeH2jQwPRpmyXyLB6A==", - "dev": true, - "requires": { - "symbol-observable": "1.0.1" - }, - "dependencies": { - "symbol-observable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", - "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=", - "dev": true - } - } - }, - "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "requires": { - "ret": "0.1.15" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "sane": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/sane/-/sane-2.5.2.tgz", - "integrity": "sha1-tNwYYcIbQn6SlQej51HiosuKs/o=", - "dev": true, - "requires": { - "anymatch": "2.0.0", - "capture-exit": "1.2.0", - "exec-sh": "0.2.1", - "fb-watchman": "2.0.0", - "fsevents": "1.2.4", - "micromatch": "3.1.10", - "minimist": "1.2.0", - "walker": "1.0.7", - "watch": "0.18.0" - }, - "dependencies": { - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "3.1.10", - "normalize-path": "2.1.1" - } - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "1.1.0", - "array-unique": "0.3.2", - "extend-shallow": "2.0.1", - "fill-range": "4.0.0", - "isobject": "3.0.1", - "repeat-element": "1.1.2", - "snapdragon": "0.8.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "0.1.6" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "0.3.2", - "define-property": "1.0.0", - "expand-brackets": "2.1.4", - "extend-shallow": "2.0.1", - "fragment-cache": "0.2.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "1.0.2" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "extglob": "2.0.4", - "fragment-cache": "0.2.1", - "kind-of": "6.0.2", - "nanomatch": "1.2.9", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - } - } - } - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "schema-utils": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", - "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=", - "dev": true, - "requires": { - "ajv": "5.5.2" - } - }, - "select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", - "dev": true - }, - "selfsigned": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.3.tgz", - "integrity": "sha512-vmZenZ+8Al3NLHkWnhBQ0x6BkML1eCP2xEi3JE+f3D9wW9fipD9NNJHYtE9XJM4TsPaHGZJIamrSI6MTg1dU2Q==", - "dev": true, - "requires": { - "node-forge": "0.7.5" - } - }, - "semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", - "dev": true - }, - "semver-diff": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", - "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", - "dev": true, - "requires": { - "semver": "5.4.1" - } - }, - "send": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", - "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", - "dev": true, - "requires": { - "debug": "2.6.9", - "depd": "1.1.2", - "destroy": "1.0.4", - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "etag": "1.8.1", - "fresh": "0.5.2", - "http-errors": "1.6.3", - "mime": "1.4.1", - "ms": "2.0.0", - "on-finished": "2.3.0", - "range-parser": "1.2.0", - "statuses": "1.4.0" - }, - "dependencies": { - "mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", - "dev": true - } - } - }, - "serialize-javascript": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.5.0.tgz", - "integrity": "sha512-Ga8c8NjAAp46Br4+0oZ2WxJCwIzwP60Gq1YPgU+39PiTVxyed/iKE/zyZI6+UlVYH5Q4PaQdHhcegIFPZTUfoQ==", - "dev": true - }, - "serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", - "dev": true, - "requires": { - "accepts": "1.3.5", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "1.0.3", - "http-errors": "1.6.3", - "mime-types": "2.1.18", - "parseurl": "1.3.2" - } - }, - "serve-static": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", - "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", - "dev": true, - "requires": { - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "parseurl": "1.3.2", - "send": "0.16.2" - } - }, - "serviceworker-cache-polyfill": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serviceworker-cache-polyfill/-/serviceworker-cache-polyfill-4.0.0.tgz", - "integrity": "sha1-3hnuc77yGrPAdAo3sz22JGS6ves=", - "dev": true - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "set-immediate-shim": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", - "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", - "dev": true - }, - "set-value": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", - "dev": true, - "requires": { - "extend-shallow": "2.0.1", - "is-extendable": "0.1.1", - "is-plain-object": "2.0.4", - "split-string": "3.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.1.1" - } - }, - "shallow-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-1.0.0.tgz", - "integrity": "sha1-UI0YOLPeWQq4dXsBGyXkMJAJRfc=" - }, - "shallowequal": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.0.2.tgz", - "integrity": "sha512-zlVXeVUKvo+HEv1e2KQF/csyeMKx2oHvatQ9l6XjCUj3agvC8XGf6R9HvIPDSmp8FNPvx7b5kaEJTRi7CqxtEw==" - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "shell-quote": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", - "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", - "dev": true, - "requires": { - "array-filter": "0.0.1", - "array-map": "0.0.0", - "array-reduce": "0.0.0", - "jsonify": "0.0.0" - } - }, - "shelljs": { - "version": "0.7.8", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", - "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", - "dev": true, - "requires": { - "glob": "7.1.2", - "interpret": "1.1.0", - "rechoir": "0.6.2" - } - }, - "shellwords": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", - "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", - "dev": true - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true - }, - "simple-statistics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/simple-statistics/-/simple-statistics-4.1.1.tgz", - "integrity": "sha1-UzxI1IM2uj01DYE18g+nE4rLDH0=" - }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", - "dev": true - }, - "slice-ansi": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", - "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "2.0.0" - } - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "requires": { - "base": "0.11.2", - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "map-cache": "0.2.2", - "source-map": "0.5.7", - "source-map-resolve": "0.5.2", - "use": "3.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "0.1.6" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "1.0.0", - "isobject": "3.0.1", - "snapdragon-util": "3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "1.0.2" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "sntp": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", - "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", - "dev": true, - "optional": true, - "requires": { - "hoek": "2.16.3" - } - }, - "sockjs": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", - "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", - "dev": true, - "requires": { - "faye-websocket": "0.10.0", - "uuid": "3.2.1" - }, - "dependencies": { - "faye-websocket": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", - "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", - "dev": true, - "requires": { - "websocket-driver": "0.7.0" - } - } - } - }, - "sockjs-client": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.4.tgz", - "integrity": "sha1-W6vjhrd15M8U51IJEUUmVAFsixI=", - "dev": true, - "requires": { - "debug": "2.6.9", - "eventsource": "0.1.6", - "faye-websocket": "0.11.1", - "inherits": "2.0.3", - "json3": "3.3.2", - "url-parse": "1.4.0" - } - }, - "sort-keys": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", - "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", - "dev": true, - "requires": { - "is-plain-obj": "1.1.0" - } - }, - "source-list-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", - "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "source-map-resolve": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", - "dev": true, - "requires": { - "atob": "2.1.1", - "decode-uri-component": "0.2.0", - "resolve-url": "0.2.1", - "source-map-url": "0.4.0", - "urix": "0.1.0" - } - }, - "source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", - "dev": true, - "requires": { - "source-map": "0.5.7" - } - }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true - }, - "sourcemapped-stacktrace": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/sourcemapped-stacktrace/-/sourcemapped-stacktrace-1.1.7.tgz", - "integrity": "sha512-pgHNUACbafkQ+M5zR00NSOtSKBc/i40prgN+SY07J/pghClwVNWNTTMa0JuXj4lriR2TvMKcPAHw5KN9tVFRhA==", - "dev": true, - "requires": { - "source-map": "0.5.6" - }, - "dependencies": { - "source-map": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", - "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", - "dev": true - } - } - }, - "spdx-correct": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", - "dev": true, - "requires": { - "spdx-license-ids": "1.2.2" - } - }, - "spdx-expression-parse": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", - "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", - "dev": true - }, - "spdx-license-ids": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", - "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", - "dev": true - }, - "spdy": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz", - "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=", - "dev": true, - "requires": { - "debug": "2.6.9", - "handle-thing": "1.2.5", - "http-deceiver": "1.2.7", - "safe-buffer": "5.1.1", - "select-hose": "2.0.0", - "spdy-transport": "2.1.0" - } - }, - "spdy-transport": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.1.0.tgz", - "integrity": "sha512-bpUeGpZcmZ692rrTiqf9/2EUakI6/kXX1Rpe0ib/DyOzbiexVfXkw6GnvI9hVGvIwVaUhkaBojjCZwLNRGQg1g==", - "dev": true, - "requires": { - "debug": "2.6.9", - "detect-node": "2.0.3", - "hpack.js": "2.1.6", - "obuf": "1.1.2", - "readable-stream": "2.3.6", - "safe-buffer": "5.1.1", - "wbuf": "1.7.3" - } - }, - "specificity": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/specificity/-/specificity-0.3.2.tgz", - "integrity": "sha512-Nc/QN/A425Qog7j9aHmwOrlwX2e7pNI47ciwxwy4jOlvbbMHkNNJchit+FX+UjF3IAdiaaV5BKeWuDUnws6G1A==", - "dev": true - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "requires": { - "extend-shallow": "3.0.2" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "sshpk": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz", - "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=", - "dev": true, - "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } - } - }, - "ssri": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", - "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", - "dev": true, - "requires": { - "safe-buffer": "5.1.1" - } - }, - "stack-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.1.tgz", - "integrity": "sha1-1PM6tU6OOHeLDKXP07OvsS22hiA=", - "dev": true - }, - "stackframe": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-0.3.1.tgz", - "integrity": "sha1-M6qE8Rd6VUjIk1Uzy/6zQgl19aQ=" - }, - "staged-git-files": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/staged-git-files/-/staged-git-files-1.0.0.tgz", - "integrity": "sha1-zbhHg3wfzFLAioctSIPMCHdmioA=", - "dev": true - }, - "state-toggle": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.0.tgz", - "integrity": "sha1-0g+aYWu08MO5i5GSLSW2QKorxCU=", - "dev": true - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "requires": { - "define-property": "0.2.5", - "object-copy": "0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "0.1.6" - } - } - } - }, - "statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", - "dev": true - }, - "stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", - "dev": true - }, - "stream-browserify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", - "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" - } - }, - "stream-each": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.2.tgz", - "integrity": "sha512-mc1dbFhGBxvTM3bIWmAAINbqiuAk9TATcfIQC8P+/+HJefgaiTlMn2dHvkX8qlI12KeYKSQ1Ua9RrIqrn1VPoA==", - "dev": true, - "requires": { - "end-of-stream": "1.4.1", - "stream-shift": "1.0.0" - } - }, - "stream-http": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.2.tgz", - "integrity": "sha512-QllfrBhqF1DPcz46WxKTs6Mz1Bpc+8Qm6vbqOpVav5odAXwbyzwnEczoWqtxrsmlO+cJqtPrp/8gWKWjaKLLlA==", - "dev": true, - "requires": { - "builtin-status-codes": "3.0.0", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "to-arraybuffer": "1.0.1", - "xtend": "4.0.1" - } - }, - "stream-shift": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", - "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", - "dev": true - }, - "stream-to-observable": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/stream-to-observable/-/stream-to-observable-0.2.0.tgz", - "integrity": "sha1-WdbqOT2HwsDdrBCqDVYbxrpvDhA=", - "dev": true, - "requires": { - "any-observable": "0.2.0" - } - }, - "strict-uri-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", - "dev": true - }, - "string-convert": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/string-convert/-/string-convert-0.2.1.tgz", - "integrity": "sha1-aYLMMEn7tM2F+LJFaLnZvznu/5c=" - }, - "string-length": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", - "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", - "dev": true, - "requires": { - "astral-regex": "1.0.0", - "strip-ansi": "4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "3.0.0" - } - } - } - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "3.0.0" - } - } - } - }, - "string.prototype.trim": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz", - "integrity": "sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo=", - "requires": { - "define-properties": "1.1.2", - "es-abstract": "1.9.0", - "function-bind": "1.1.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "5.1.1" - } - }, - "stringify-entities": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-1.3.2.tgz", - "integrity": "sha512-nrBAQClJAPN2p+uGCVJRPIPakKeKWZ9GtBCmormE7pWOSlHat7+x5A8gx85M7HM5Dt0BP3pP5RhVW77WdbJJ3A==", - "dev": true, - "requires": { - "character-entities-html4": "1.1.2", - "character-entities-legacy": "1.1.1", - "is-alphanumerical": "1.0.1", - "is-hexadecimal": "1.0.1" - } - }, - "stringify-object": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.2.2.tgz", - "integrity": "sha512-O696NF21oLiDy8PhpWu8AEqoZHw++QW6mUv0UvKZe8gWSdSvMXkiLufK7OmnP27Dro4GU5kb9U7JIO0mBuCRQg==", - "dev": true, - "requires": { - "get-own-enumerable-property-symbols": "2.0.1", - "is-obj": "1.0.1", - "is-regexp": "1.0.0" - } - }, - "stringstream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", - "dev": true, - "optional": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "2.1.1" - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "0.2.1" - } - }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true - }, - "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "dev": true, - "requires": { - "get-stdin": "4.0.1" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true - }, - "style-loader": { - "version": "0.18.2", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.18.2.tgz", - "integrity": "sha512-WPpJPZGUxWYHWIUMNNOYqql7zh85zGmr84FdTVWq52WTIkqlW9xSxD3QYWi/T31cqn9UNSsietVEgGn2aaSCzw==", - "dev": true, - "requires": { - "loader-utils": "1.1.0", - "schema-utils": "0.3.0" - } - }, - "style-search": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", - "integrity": "sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI=", - "dev": true - }, - "stylelint": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-8.4.0.tgz", - "integrity": "sha512-56hPH5mTFnk8LzlEuTWq0epa34fHuS54UFYQidBOFt563RJBNi1nz1F2HK2MoT1X1waq47milvRsRahFCCJs/Q==", - "dev": true, - "requires": { - "autoprefixer": "7.2.6", - "balanced-match": "1.0.0", - "chalk": "2.4.1", - "cosmiconfig": "3.1.0", - "debug": "3.1.0", - "execall": "1.0.0", - "file-entry-cache": "2.0.0", - "get-stdin": "5.0.1", - "globby": "7.1.1", - "globjoin": "0.1.4", - "html-tags": "2.0.0", - "ignore": "3.3.8", - "imurmurhash": "0.1.4", - "known-css-properties": "0.5.0", - "lodash": "4.17.4", - "log-symbols": "2.2.0", - "mathml-tag-names": "2.1.0", - "meow": "4.0.1", - "micromatch": "2.3.11", - "normalize-selector": "0.2.0", - "pify": "3.0.0", - "postcss": "6.0.22", - "postcss-html": "0.12.0", - "postcss-less": "1.1.5", - "postcss-media-query-parser": "0.2.3", - "postcss-reporter": "5.0.0", - "postcss-resolve-nested-selector": "0.1.1", - "postcss-safe-parser": "3.0.1", - "postcss-sass": "0.2.0", - "postcss-scss": "1.0.5", - "postcss-selector-parser": "3.1.1", - "postcss-value-parser": "3.3.0", - "resolve-from": "4.0.0", - "specificity": "0.3.2", - "string-width": "2.1.1", - "style-search": "0.1.0", - "sugarss": "1.0.1", - "svg-tags": "1.0.0", - "table": "4.0.2" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "camelcase-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", - "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", - "dev": true, - "requires": { - "camelcase": "4.1.0", - "map-obj": "2.0.0", - "quick-lru": "1.1.0" - } - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" - } - }, - "cosmiconfig": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-3.1.0.tgz", - "integrity": "sha512-zedsBhLSbPBms+kE7AH4vHg6JsKDz6epSv2/+5XHs8ILHlgDciSJfSWf8sX9aQ52Jb7KI7VswUTsLpR/G0cr2Q==", - "dev": true, - "requires": { - "is-directory": "0.3.1", - "js-yaml": "3.11.0", - "parse-json": "3.0.0", - "require-from-string": "2.0.2" - } - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", - "dev": true - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "2.0.0" - } - }, - "get-stdin": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz", - "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=", - "dev": true - }, - "indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", - "dev": true - }, - "js-yaml": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz", - "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==", - "dev": true, - "requires": { - "argparse": "1.0.10", - "esprima": "4.0.0" - } - }, - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "parse-json": "4.0.0", - "pify": "3.0.0", - "strip-bom": "3.0.0" - }, - "dependencies": { - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "1.3.1", - "json-parse-better-errors": "1.0.2" - } - } - } - }, - "map-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", - "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=", - "dev": true - }, - "meow": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz", - "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==", - "dev": true, - "requires": { - "camelcase-keys": "4.2.0", - "decamelize-keys": "1.1.0", - "loud-rejection": "1.6.0", - "minimist": "1.2.0", - "minimist-options": "3.0.2", - "normalize-package-data": "2.4.0", - "read-pkg-up": "3.0.0", - "redent": "2.0.0", - "trim-newlines": "2.0.0" - } - }, - "parse-json": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-3.0.0.tgz", - "integrity": "sha1-+m9HsY4jgm6tMvJj50TQ4ehH+xM=", - "dev": true, - "requires": { - "error-ex": "1.3.1" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "postcss-selector-parser": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", - "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", - "dev": true, - "requires": { - "dot-prop": "4.2.0", - "indexes-of": "1.0.1", - "uniq": "1.0.1" - } - }, - "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", - "dev": true, - "requires": { - "load-json-file": "4.0.0", - "normalize-package-data": "2.4.0", - "path-type": "3.0.0" - } - }, - "read-pkg-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", - "dev": true, - "requires": { - "find-up": "2.1.0", - "read-pkg": "3.0.0" - } - }, - "redent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", - "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", - "dev": true, - "requires": { - "indent-string": "3.2.0", - "strip-indent": "2.0.0" - } - }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - }, - "strip-indent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", - "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", - "dev": true - }, - "trim-newlines": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", - "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=", - "dev": true - } - } - }, - "stylelint-config-prettier": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/stylelint-config-prettier/-/stylelint-config-prettier-3.2.0.tgz", - "integrity": "sha512-su+K/g8rhtaza3Ff1oW6bBk5y1QTF1il8NtQZY7rZrTjTIm26Ph9vUeC9EIWwRlp9BjIZEoD4fhWl+c0KGfZyg==", - "dev": true, - "requires": { - "stylelint": "9.2.0" - }, - "dependencies": { - "autoprefixer": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-8.5.0.tgz", - "integrity": "sha512-buY1XxFoBrXvLsoFb0jP+niSu1tCj2RwMwHj96+RfQ8DJTgb0vUhh0dg6wjJT3JzsFYBrkSj8/sGtarNdlxTFw==", - "dev": true, - "requires": { - "browserslist": "3.2.7", - "caniuse-lite": "1.0.30000840", - "normalize-range": "0.1.2", - "num2fraction": "1.2.2", - "postcss": "6.0.22", - "postcss-value-parser": "3.3.0" - } - }, - "browserslist": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.7.tgz", - "integrity": "sha512-oYVLxFVqpX9uMhOIQBLtZL+CX4uY8ZpWcjNTaxyWl5rO8yA9SSNikFnAfvk8J3P/7z3BZwNmEqFKaJoYltj3MQ==", - "dev": true, - "requires": { - "caniuse-lite": "1.0.30000840", - "electron-to-chromium": "1.3.45" - } - }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "camelcase-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", - "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", - "dev": true, - "requires": { - "camelcase": "4.1.0", - "map-obj": "2.0.0", - "quick-lru": "1.1.0" - } - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" - } - }, - "cosmiconfig": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-4.0.0.tgz", - "integrity": "sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ==", - "dev": true, - "requires": { - "is-directory": "0.3.1", - "js-yaml": "3.11.0", - "parse-json": "4.0.0", - "require-from-string": "2.0.2" - } - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", - "dev": true - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "2.0.0" - } - }, - "get-stdin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", - "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", - "dev": true - }, - "globby": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.1.tgz", - "integrity": "sha512-oMrYrJERnKBLXNLVTqhm3vPEdJ/b2ZE28xN4YARiix1NOIOBPEpOUnm844K1iu/BkphCaf2WNFwMszv8Soi1pw==", - "dev": true, - "requires": { - "array-union": "1.0.2", - "dir-glob": "2.0.0", - "fast-glob": "2.2.1", - "glob": "7.1.2", - "ignore": "3.3.8", - "pify": "3.0.0", - "slash": "1.0.0" - } - }, - "import-lazy": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-3.1.0.tgz", - "integrity": "sha512-8/gvXvX2JMn0F+CDlSC4l6kOmVaLOO3XLkksI7CI3Ud95KDYJuYur2b9P/PUt/i/pDAMd/DulQsNbbbmRRsDIQ==", - "dev": true - }, - "indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", - "dev": true - }, - "js-yaml": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz", - "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==", - "dev": true, - "requires": { - "argparse": "1.0.10", - "esprima": "4.0.0" - } - }, - "known-css-properties": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.6.1.tgz", - "integrity": "sha512-nQRpMcHm1cQ6gmztdvLcIvxocznSMqH/y6XtERrWrHaymOYdDGroRqetJvJycxGEr1aakXiigDgn7JnzuXlk6A==", - "dev": true - }, - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "parse-json": "4.0.0", - "pify": "3.0.0", - "strip-bom": "3.0.0" - } - }, - "map-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", - "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=", - "dev": true - }, - "meow": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz", - "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==", - "dev": true, - "requires": { - "camelcase-keys": "4.2.0", - "decamelize-keys": "1.1.0", - "loud-rejection": "1.6.0", - "minimist": "1.2.0", - "minimist-options": "3.0.2", - "normalize-package-data": "2.4.0", - "read-pkg-up": "3.0.0", - "redent": "2.0.0", - "trim-newlines": "2.0.0" - } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "1.3.1", - "json-parse-better-errors": "1.0.2" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "postcss-html": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/postcss-html/-/postcss-html-0.18.0.tgz", - "integrity": "sha512-7llFZ5hlINmUu/8iUBIXCTZ4OMyGB+NBeb7jDadXrH9g+hpcUEBhZv3rjqesmOsHNC3bITqx1EkVz77RuHJygw==", - "dev": true, - "requires": { - "@babel/core": "7.0.0-beta.47", - "@babel/traverse": "7.0.0-beta.47", - "babylon": "7.0.0-beta.47", - "htmlparser2": "3.9.2", - "remark": "9.0.0", - "unist-util-find-all-after": "1.0.2" - } - }, - "postcss-sass": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/postcss-sass/-/postcss-sass-0.3.1.tgz", - "integrity": "sha512-jyrOsP3MoLv57avdbi7GEITKrM23qeoFzZi8zmbXPjcPklRt83zzoxF/CEZ/cwRAJsHSkEwHc28Qhkm+8/OoUA==", - "dev": true, - "requires": { - "gonzales-pe": "4.2.3", - "postcss": "6.0.22" - } - }, - "postcss-selector-parser": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", - "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", - "dev": true, - "requires": { - "dot-prop": "4.2.0", - "indexes-of": "1.0.1", - "uniq": "1.0.1" - } - }, - "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", - "dev": true, - "requires": { - "load-json-file": "4.0.0", - "normalize-package-data": "2.4.0", - "path-type": "3.0.0" - } - }, - "read-pkg-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", - "dev": true, - "requires": { - "find-up": "2.1.0", - "read-pkg": "3.0.0" - } - }, - "redent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", - "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", - "dev": true, - "requires": { - "indent-string": "3.2.0", - "strip-indent": "2.0.0" - } - }, - "remark": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/remark/-/remark-9.0.0.tgz", - "integrity": "sha512-amw8rGdD5lHbMEakiEsllmkdBP+/KpjW/PRK6NSGPZKCQowh0BT4IWXDAkRMyG3SB9dKPXWMviFjNusXzXNn3A==", - "dev": true, - "requires": { - "remark-parse": "5.0.0", - "remark-stringify": "5.0.0", - "unified": "6.1.5" - } - }, - "remark-parse": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-5.0.0.tgz", - "integrity": "sha512-b3iXszZLH1TLoyUzrATcTQUZrwNl1rE70rVdSruJFlDaJ9z5aMkhrG43Pp68OgfHndL/ADz6V69Zow8cTQu+JA==", - "dev": true, - "requires": { - "collapse-white-space": "1.0.3", - "is-alphabetical": "1.0.1", - "is-decimal": "1.0.1", - "is-whitespace-character": "1.0.1", - "is-word-character": "1.0.1", - "markdown-escapes": "1.0.1", - "parse-entities": "1.1.1", - "repeat-string": "1.6.1", - "state-toggle": "1.0.0", - "trim": "0.0.1", - "trim-trailing-lines": "1.1.0", - "unherit": "1.1.0", - "unist-util-remove-position": "1.1.1", - "vfile-location": "2.0.2", - "xtend": "4.0.1" - } - }, - "remark-stringify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-5.0.0.tgz", - "integrity": "sha512-Ws5MdA69ftqQ/yhRF9XhVV29mhxbfGhbz0Rx5bQH+oJcNhhSM6nCu1EpLod+DjrFGrU0BMPs+czVmJZU7xiS7w==", - "dev": true, - "requires": { - "ccount": "1.0.3", - "is-alphanumeric": "1.0.0", - "is-decimal": "1.0.1", - "is-whitespace-character": "1.0.1", - "longest-streak": "2.0.2", - "markdown-escapes": "1.0.1", - "markdown-table": "1.1.2", - "mdast-util-compact": "1.0.1", - "parse-entities": "1.1.1", - "repeat-string": "1.6.1", - "state-toggle": "1.0.0", - "stringify-entities": "1.3.2", - "unherit": "1.1.0", - "xtend": "4.0.1" - } - }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - }, - "strip-indent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", - "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", - "dev": true - }, - "stylelint": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-9.2.0.tgz", - "integrity": "sha512-aBlnuLyTvyNfIVoc+reaqx88aW41Awc9Ccu7ZXrO2fnSvv0MVSQeyL3ci/nD1H1eYvH3X+MXTwMYC3Mf5+2Ckw==", - "dev": true, - "requires": { - "autoprefixer": "8.5.0", - "balanced-match": "1.0.0", - "chalk": "2.4.1", - "cosmiconfig": "4.0.0", - "debug": "3.1.0", - "execall": "1.0.0", - "file-entry-cache": "2.0.0", - "get-stdin": "6.0.0", - "globby": "8.0.1", - "globjoin": "0.1.4", - "html-tags": "2.0.0", - "ignore": "3.3.8", - "import-lazy": "3.1.0", - "imurmurhash": "0.1.4", - "known-css-properties": "0.6.1", - "lodash": "4.17.4", - "log-symbols": "2.2.0", - "mathml-tag-names": "2.1.0", - "meow": "4.0.1", - "micromatch": "2.3.11", - "normalize-selector": "0.2.0", - "pify": "3.0.0", - "postcss": "6.0.22", - "postcss-html": "0.18.0", - "postcss-less": "1.1.5", - "postcss-media-query-parser": "0.2.3", - "postcss-reporter": "5.0.0", - "postcss-resolve-nested-selector": "0.1.1", - "postcss-safe-parser": "3.0.1", - "postcss-sass": "0.3.1", - "postcss-scss": "1.0.5", - "postcss-selector-parser": "3.1.1", - "postcss-value-parser": "3.3.0", - "resolve-from": "4.0.0", - "signal-exit": "3.0.2", - "specificity": "0.3.2", - "string-width": "2.1.1", - "style-search": "0.1.0", - "sugarss": "1.0.1", - "svg-tags": "1.0.0", - "table": "4.0.2" - } - }, - "trim-newlines": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", - "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=", - "dev": true - } - } - }, - "stylelint-config-recommended": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-2.1.0.tgz", - "integrity": "sha512-ajMbivOD7JxdsnlS5945KYhvt7L/HwN6YeYF2BH6kE4UCLJR0YvXMf+2j7nQpJyYLZx9uZzU5G1ZOSBiWAc6yA==", - "dev": true - }, - "stylelint-config-standard": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-18.2.0.tgz", - "integrity": "sha512-07x0TaSIzvXlbOioUU4ORkCIM07kyIuojkbSVCyFWNVgXMXYHfhnQSCkqu+oHWJf3YADAnPGWzdJ53NxkoJ7RA==", - "dev": true, - "requires": { - "stylelint-config-recommended": "2.1.0" - } - }, - "subarg": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", - "integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=", - "dev": true, - "requires": { - "minimist": "1.2.0" - } - }, - "sugarss": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-1.0.1.tgz", - "integrity": "sha512-3qgLZytikQQEVn1/FrhY7B68gPUUGY3R1Q1vTiD5xT+Ti1DP/8iZuwFet9ONs5+bmL8pZoDQ6JrQHVgrNlK6mA==", - "dev": true, - "requires": { - "postcss": "6.0.22" - } - }, - "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", - "dev": true, - "requires": { - "has-flag": "3.0.0" - } - }, - "svg-tags": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", - "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=", - "dev": true - }, - "svgo": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz", - "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=", - "dev": true, - "requires": { - "coa": "1.0.4", - "colors": "1.1.2", - "csso": "2.3.2", - "js-yaml": "3.7.0", - "mkdirp": "0.5.1", - "sax": "1.2.4", - "whet.extend": "0.9.9" - }, - "dependencies": { - "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", - "dev": true - } - } - }, - "sw-precache": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/sw-precache/-/sw-precache-5.2.1.tgz", - "integrity": "sha512-8FAy+BP/FXE+ILfiVTt+GQJ6UEf4CVHD9OfhzH0JX+3zoy2uFk7Vn9EfXASOtVmmIVbL3jE/W8Z66VgPSZcMhw==", - "dev": true, - "requires": { - "dom-urls": "1.1.0", - "es6-promise": "4.2.4", - "glob": "7.1.2", - "lodash.defaults": "4.2.0", - "lodash.template": "4.4.0", - "meow": "3.7.0", - "mkdirp": "0.5.1", - "pretty-bytes": "4.0.2", - "sw-toolbox": "3.6.0", - "update-notifier": "2.5.0" - } - }, - "sw-precache-webpack-plugin": { - "version": "0.11.5", - "resolved": "https://registry.npmjs.org/sw-precache-webpack-plugin/-/sw-precache-webpack-plugin-0.11.5.tgz", - "integrity": "sha512-K6E52DbYyzGNXGyv2LhI2Duomr3t/2FFMmnGdHZ1Ruk3ulFHDMASJtg3WpA3CXlWODZx189tTaOIO5mWkSKyVg==", - "dev": true, - "requires": { - "del": "3.0.0", - "sw-precache": "5.2.1", - "uglify-es": "3.3.9" - }, - "dependencies": { - "commander": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", - "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", - "dev": true - }, - "del": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", - "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", - "dev": true, - "requires": { - "globby": "6.1.0", - "is-path-cwd": "1.0.0", - "is-path-in-cwd": "1.0.1", - "p-map": "1.2.0", - "pify": "3.0.0", - "rimraf": "2.6.2" - } - }, - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true, - "requires": { - "array-union": "1.0.2", - "glob": "7.1.2", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "uglify-es": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", - "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", - "dev": true, - "requires": { - "commander": "2.13.0", - "source-map": "0.6.1" - } - } - } - }, - "sw-toolbox": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/sw-toolbox/-/sw-toolbox-3.6.0.tgz", - "integrity": "sha1-Jt8dHHA0hljk3qKIQxkUm3sxg7U=", - "dev": true, - "requires": { - "path-to-regexp": "1.7.0", - "serviceworker-cache-polyfill": "4.0.0" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "path-to-regexp": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", - "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", - "dev": true, - "requires": { - "isarray": "0.0.1" - } - } - } - }, - "symbol-observable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", - "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" - }, - "symbol-tree": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", - "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", - "dev": true - }, - "system-bell-webpack-plugin": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/system-bell-webpack-plugin/-/system-bell-webpack-plugin-1.0.0.tgz", - "integrity": "sha1-gGrxKx/g10WEePm2NCavkvWrtHs=", - "dev": true - }, - "table": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", - "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", - "dev": true, - "requires": { - "ajv": "5.5.2", - "ajv-keywords": "2.1.1", - "chalk": "2.4.1", - "lodash": "4.17.4", - "slice-ansi": "1.0.0", - "string-width": "2.1.1" - }, - "dependencies": { - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" - } - } - } - }, - "tapable": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.8.tgz", - "integrity": "sha1-mTcqXJmb8t8WCvwNdL7U9HlIzSI=", - "dev": true - }, - "tape": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/tape/-/tape-4.9.0.tgz", - "integrity": "sha512-j0jO9BiScfqtPBb9QmPLL0qvxXMz98xjkMb7x8lKipFlJZwNJkqkWPou+NU4V6T9RnVh1kuSthLE8gLrN8bBfw==", - "requires": { - "deep-equal": "1.0.1", - "defined": "1.0.0", - "for-each": "0.3.2", - "function-bind": "1.1.1", - "glob": "7.1.2", - "has": "1.0.1", - "inherits": "2.0.3", - "minimist": "1.2.0", - "object-inspect": "1.5.0", - "resolve": "1.5.0", - "resumer": "0.0.0", - "string.prototype.trim": "1.1.2", - "through": "2.3.8" - } - }, - "term-size": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", - "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", - "dev": true, - "requires": { - "execa": "0.7.0" - } - }, - "test-exclude": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.2.1.tgz", - "integrity": "sha512-qpqlP/8Zl+sosLxBcVKl9vYy26T9NPalxSzzCP/OY6K7j938ui2oKgo+kRZYfxAeIpLqpbVnsHq1tyV70E4lWQ==", - "dev": true, - "requires": { - "arrify": "1.0.1", - "micromatch": "3.1.10", - "object-assign": "4.1.1", - "read-pkg-up": "1.0.1", - "require-main-filename": "1.0.1" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "1.1.0", - "array-unique": "0.3.2", - "extend-shallow": "2.0.1", - "fill-range": "4.0.0", - "isobject": "3.0.1", - "repeat-element": "1.1.2", - "snapdragon": "0.8.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "0.1.6" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "0.3.2", - "define-property": "1.0.0", - "expand-brackets": "2.1.4", - "extend-shallow": "2.0.1", - "fragment-cache": "0.2.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "1.0.2" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "extglob": "2.0.4", - "fragment-cache": "0.2.1", - "kind-of": "6.0.2", - "nanomatch": "1.2.9", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - } - } - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "throat": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", - "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" - }, - "through2": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", - "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", - "dev": true, - "requires": { - "readable-stream": "2.3.6", - "xtend": "4.0.1" - } - }, - "thunky": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.2.tgz", - "integrity": "sha1-qGLgGOP7HqLsP85dVWBc9X8kc3E=", - "dev": true - }, - "time-stamp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-2.0.0.tgz", - "integrity": "sha1-lcakRTDhW6jW9KPsuMOj+sRto1c=", - "dev": true - }, - "timed-out": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", - "dev": true - }, - "timers-browserify": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", - "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", - "dev": true, - "requires": { - "setimmediate": "1.0.5" - } - }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "requires": { - "os-tmpdir": "1.0.2" - } - }, - "tmpl": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", - "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", - "dev": true - }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "requires": { - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "regex-not": "1.0.2", - "safe-regex": "1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "3.0.0", - "repeat-string": "1.6.1" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - } - } - } - }, - "topojson-client": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/topojson-client/-/topojson-client-3.0.0.tgz", - "integrity": "sha1-H5kpOnfvQqRI0DKoGqmCtz82DS8=", - "requires": { - "commander": "2.15.1" - }, - "dependencies": { - "commander": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==" - } - } - }, - "toposort": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz", - "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=", - "dev": true - }, - "tough-cookie": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", - "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", - "dev": true, - "requires": { - "punycode": "1.4.1" - } - }, - "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "dev": true, - "requires": { - "punycode": "2.1.0" - }, - "dependencies": { - "punycode": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", - "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=", - "dev": true - } - } - }, - "traverse-chain": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/traverse-chain/-/traverse-chain-0.1.0.tgz", - "integrity": "sha1-YdvC1Ttp/2CRoSoWj9fUMxB+QPE=", - "optional": true - }, - "trim": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", - "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", - "dev": true - }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", - "dev": true - }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true - }, - "trim-trailing-lines": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.0.tgz", - "integrity": "sha1-eu+7eAjfnWafbaLkOMrIxGradoQ=", - "dev": true - }, - "trough": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.1.tgz", - "integrity": "sha1-qf2LA5Swro//guBjOgo2zK1bX4Y=", - "dev": true - }, - "tryer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.0.tgz", - "integrity": "sha1-Antp+oIyJeVRys4+8DsR9qs3wdc=", - "dev": true - }, - "ts-jest-babel-7": { - "version": "22.0.7", - "resolved": "https://registry.npmjs.org/ts-jest-babel-7/-/ts-jest-babel-7-22.0.7.tgz", - "integrity": "sha512-xxgdss4FhSTbnkS3t5Q0eOUFMQACUxljw9ao64tskiz/tu2X5ors3+tBmzzNjKvLDjHRmi6WwUeS0x1SrV3b0g==", - "dev": true, - "requires": { - "babel-plugin-istanbul": "4.1.6", - "babel-plugin-transform-es2015-modules-commonjs": "6.26.2", - "babel-preset-jest": "22.4.3", - "cpx": "1.5.0", - "fs-extra": "4.0.3", - "jest-config": "22.4.3", - "pkg-dir": "2.0.0", - "source-map-support": "0.5.6", - "yargs": "11.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", - "dev": true, - "requires": { - "string-width": "2.1.1", - "strip-ansi": "4.0.0", - "wrap-ansi": "2.1.0" - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "2.0.0" - } - }, - "fs-extra": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", - "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "jsonfile": "4.0.0", - "universalify": "0.1.1" - } - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11" - } - }, - "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "dev": true, - "requires": { - "find-up": "2.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-support": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.6.tgz", - "integrity": "sha512-N4KXEz7jcKqPf2b2vZF11lQIz9W5ZMuUcIOGj243lduidkf2fjkVKJS9vNxVWn3u/uxX38AcE8U9nnH9FPcq+g==", - "dev": true, - "requires": { - "buffer-from": "1.0.0", - "source-map": "0.6.1" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "3.0.0" - } - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true - }, - "yargs": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.0.0.tgz", - "integrity": "sha512-Rjp+lMYQOWtgqojx1dEWorjCofi1YN7AoFvYV7b1gx/7dAAeuI4kN5SZiEvr0ZmsZTOpDRcCqrpI10L31tFkBw==", - "dev": true, - "requires": { - "cliui": "4.1.0", - "decamelize": "1.2.0", - "find-up": "2.1.0", - "get-caller-file": "1.0.2", - "os-locale": "2.1.0", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", - "y18n": "3.2.1", - "yargs-parser": "9.0.2" - } - }, - "yargs-parser": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", - "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", - "dev": true, - "requires": { - "camelcase": "4.1.0" - } - } - } - }, - "tslib": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.8.0.tgz", - "integrity": "sha512-ymKWWZJST0/CkgduC2qkzjMOWr4bouhuURNXCn/inEX0L57BnRG6FhX76o7FOnsjHazCjfU2LKeSrlS2sIKQJg==" - }, - "tslint": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.10.0.tgz", - "integrity": "sha1-EeJrzLiK+gLdDZlWyuPUVAtfVMM=", - "dev": true, - "requires": { - "babel-code-frame": "6.26.0", - "builtin-modules": "1.1.1", - "chalk": "2.4.1", - "commander": "2.15.1", - "diff": "3.5.0", - "glob": "7.1.2", - "js-yaml": "3.7.0", - "minimatch": "3.0.4", - "resolve": "1.5.0", - "semver": "5.4.1", - "tslib": "1.8.0", - "tsutils": "2.27.0" - }, - "dependencies": { - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" - } - }, - "commander": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", - "dev": true - } - } - }, - "tslint-loader": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/tslint-loader/-/tslint-loader-3.6.0.tgz", - "integrity": "sha512-Me9Qf/87BOfCY8uJJw+J7VMF4U8WiMXKLhKKKugMydF0xMhMOt9wo2mjYTNhwbF9H7SHh8PAIwRG8roisTNekQ==", - "dev": true, - "requires": { - "loader-utils": "1.1.0", - "mkdirp": "0.5.1", - "object-assign": "4.1.1", - "rimraf": "2.6.2", - "semver": "5.4.1" - } - }, - "tsutils": { - "version": "2.27.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.27.0.tgz", - "integrity": "sha512-JcyX25oM9pFcb3zh60OqG1St8p/uSqC5Bgipdo3ieacB/Ao4dPhm7hAtKT9NrEu23CyYrrgJPV3CqYfo+/+T4w==", - "dev": true, - "requires": { - "tslib": "1.9.1" - }, - "dependencies": { - "tslib": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.1.tgz", - "integrity": "sha512-avfPS28HmGLLc2o4elcc2EIq2FcH++Yo5YxpBZi9Yw93BCTGFthI4HPE4Rpep6vSYQaK8e69PelM44tPj+RaQg==", - "dev": true - } - } - }, - "tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", - "dev": true - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "requires": { - "safe-buffer": "5.1.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true, - "optional": true - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "requires": { - "prelude-ls": "1.1.2" - } - }, - "type-is": { - "version": "1.6.16", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", - "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", - "dev": true, - "requires": { - "media-typer": "0.3.0", - "mime-types": "2.1.18" - } - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" - }, - "typescript": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.8.3.tgz", - "integrity": "sha512-K7g15Bb6Ra4lKf7Iq2l/I5/En+hLIHmxWZGq3D4DIRNFxMNV6j2SHSvDOqs2tGd4UvD/fJvrwopzQXjLrT7Itw==", - "dev": true - }, - "ua-parser-js": { - "version": "0.7.17", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.17.tgz", - "integrity": "sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g==" - }, - "uglify-js": { - "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", - "requires": { - "source-map": "0.5.7", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" - }, - "dependencies": { - "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" - }, - "yargs": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", - "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", - "window-size": "0.1.0" - } - } - } - }, - "uglify-to-browserify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", - "optional": true - }, - "uglifyjs-webpack-plugin": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz", - "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=", - "dev": true, - "requires": { - "source-map": "0.5.7", - "uglify-js": "2.8.29", - "webpack-sources": "1.1.0" - } - }, - "ultron": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", - "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", - "optional": true - }, - "umi-test": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/umi-test/-/umi-test-0.4.4.tgz", - "integrity": "sha512-mn00w1rgdnqLboHbo5LvRdhRGsN5+3fAtRnaft886ePsH0wqyv8S+w4WByykpWTSn7i4doZOOPimziUzNcVKXg==", - "dev": true, - "requires": { - "@babel/core": "7.0.0-beta.47", - "@babel/polyfill": "7.0.0-beta.47", - "babel-core": "7.0.0-bridge.0", - "babel-jest": "22.4.3", - "babel-plugin-module-resolver": "3.1.1", - "babel-preset-umi": "0.2.8", - "debug": "3.1.0", - "enzyme": "3.3.0", - "enzyme-adapter-react-16": "1.1.1", - "identity-obj-proxy": "3.0.0", - "jest-cli": "22.4.3", - "jsdom": "11.10.0", - "react": "16.3.2", - "react-dom": "16.3.2", - "ts-jest-babel-7": "22.0.7", - "typescript": "2.8.3" - }, - "dependencies": { - "@babel/polyfill": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.0.0-beta.47.tgz", - "integrity": "sha512-jDKBjX1K/fUNrPGo3wDKEWIXDHZEgpsKTRo3B4Ox5cq5Hxcp219ez/oGofDjNMUJAUI+gfsQfRarMkC5f3uiYw==", - "dev": true, - "requires": { - "core-js": "2.5.6", - "regenerator-runtime": "0.11.1" - } - }, - "core-js": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.6.tgz", - "integrity": "sha512-lQUVfQi0aLix2xpyjrrJEvfuYCqPc/HwmTKsC/VNf8q0zsjX7SQZtp4+oRONN5Tsur9GDETPjj+Ub2iDiGZfSQ==", - "dev": true - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "enzyme": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/enzyme/-/enzyme-3.3.0.tgz", - "integrity": "sha512-l8csyPyLmtxskTz6pX9W8eDOyH1ckEtDttXk/vlFWCjv00SkjTjtoUrogqp4yEvMyneU9dUJoOLnqFoiHb8IHA==", - "dev": true, - "requires": { - "cheerio": "1.0.0-rc.2", - "function.prototype.name": "1.0.3", - "has": "1.0.1", - "is-boolean-object": "1.0.0", - "is-callable": "1.1.3", - "is-number-object": "1.0.3", - "is-string": "1.0.4", - "is-subset": "0.1.1", - "lodash": "4.17.4", - "object-inspect": "1.5.0", - "object-is": "1.0.1", - "object.assign": "4.1.0", - "object.entries": "1.0.4", - "object.values": "1.0.4", - "raf": "3.4.0", - "rst-selector-parser": "2.2.3" - } - }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "requires": { - "define-properties": "1.1.2", - "function-bind": "1.1.1", - "has-symbols": "1.0.0", - "object-keys": "1.0.11" - } - }, - "react": { - "version": "16.3.2", - "resolved": "https://registry.npmjs.org/react/-/react-16.3.2.tgz", - "integrity": "sha512-o5GPdkhciQ3cEph6qgvYB7LTOHw/GB0qRI6ZFNugj49qJCFfgHwVNjZ5u+b7nif4vOeMIOuYj3CeYe2IBD74lg==", - "dev": true, - "requires": { - "fbjs": "0.8.16", - "loose-envify": "1.3.1", - "object-assign": "4.1.1", - "prop-types": "15.6.0" - } - }, - "react-dom": { - "version": "16.3.2", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.3.2.tgz", - "integrity": "sha512-MMPko3zYncNrz/7gG17wJWUREZDvskZHXOwbttzl0F0L3wDmToyuETuo/r8Y5yvDejwYcRyWI1lvVBjLJWFwKA==", - "dev": true, - "requires": { - "fbjs": "0.8.16", - "loose-envify": "1.3.1", - "object-assign": "4.1.1", - "prop-types": "15.6.0" - } - }, - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true - } - } - }, - "underscore": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz", - "integrity": "sha1-YaajIBBiKvoHljvzJSA88SI51gQ=", - "dev": true - }, - "unherit": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.0.tgz", - "integrity": "sha1-a5qu379z3xdWrZ4xbdmBiFhAzX0=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "xtend": "4.0.1" - }, - "dependencies": { - "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", - "dev": true - } - } - }, - "unicode-canonical-property-names-ecmascript": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.3.tgz", - "integrity": "sha512-iG/2t0F2LAU8aZYPkX5gi7ebukHnr3sWFESpb+zPQeeaQwOkfoO6ZW17YX7MdRPNG9pCy+tjzGill+Ah0Em0HA==", - "dev": true - }, - "unicode-match-property-ecmascript": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.3.tgz", - "integrity": "sha512-nFcaBFcr08UQNF15ZgI5ISh3yUnQm7SJRRxwYrL5VYX46pS+6Q7TCTv4zbK+j6/l7rQt0mMiTL2zpmeygny6rA==", - "dev": true, - "requires": { - "unicode-canonical-property-names-ecmascript": "1.0.3", - "unicode-property-aliases-ecmascript": "1.0.3" - } - }, - "unicode-match-property-value-ecmascript": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.1.tgz", - "integrity": "sha512-lM8B0FDZQh9yYGgiabRQcyWicB27VLOolSBRIxsO7FeQPtg+79Oe7sC8Mzr8BObDs+G9CeYmC/shHo6OggNEog==", - "dev": true - }, - "unicode-property-aliases-ecmascript": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.3.tgz", - "integrity": "sha512-TdDmDOTxEf2ad1g3ZBpM6cqKIb2nJpVlz1Q++casDryKz18tpeMBhSng9hjC1CTQCkOV9Rw2knlSB6iRo7ad1w==", - "dev": true - }, - "unified": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/unified/-/unified-6.1.5.tgz", - "integrity": "sha1-cWk3hyYhpjE15iztLzrGoGPG+4c=", - "dev": true, - "requires": { - "bail": "1.0.2", - "extend": "3.0.1", - "is-plain-obj": "1.1.0", - "trough": "1.0.1", - "vfile": "2.2.0", - "x-is-function": "1.0.4", - "x-is-string": "0.1.0" - } - }, - "union-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", - "dev": true, - "requires": { - "arr-union": "3.1.0", - "get-value": "2.0.6", - "is-extendable": "0.1.1", - "set-value": "0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - }, - "set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "dev": true, - "requires": { - "extend-shallow": "2.0.1", - "is-extendable": "0.1.1", - "is-plain-object": "2.0.4", - "to-object-path": "0.3.0" - } - } - } - }, - "uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", - "dev": true - }, - "uniqid": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-4.1.1.tgz", - "integrity": "sha1-iSIN32t1GuUrX3JISGNShZa7hME=", - "dev": true, - "requires": { - "macaddress": "0.2.8" - } - }, - "uniqs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", - "dev": true - }, - "unique-filename": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.0.tgz", - "integrity": "sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM=", - "dev": true, - "requires": { - "unique-slug": "2.0.0" - } - }, - "unique-slug": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.0.tgz", - "integrity": "sha1-22Z258fMBimHj/GWCXx4hVrp9Ks=", - "dev": true, - "requires": { - "imurmurhash": "0.1.4" - } - }, - "unique-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", - "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", - "dev": true, - "requires": { - "crypto-random-string": "1.0.0" - } - }, - "unist-util-find-all-after": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-1.0.2.tgz", - "integrity": "sha512-nDl79mKpffXojLpCimVXnxhlH/jjaTnDuScznU9J4jjsaUtBdDbxmlc109XtcqxY4SDO0SwzngsxxW8DIISt1w==", - "dev": true, - "requires": { - "unist-util-is": "2.1.2" - } - }, - "unist-util-is": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-2.1.2.tgz", - "integrity": "sha512-YkXBK/H9raAmG7KXck+UUpnKiNmUdB+aBGrknfQ4EreE1banuzrKABx3jP6Z5Z3fMSPMQQmeXBlKpCbMwBkxVw==", - "dev": true - }, - "unist-util-modify-children": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/unist-util-modify-children/-/unist-util-modify-children-1.1.2.tgz", - "integrity": "sha512-GRi04yhng1WqBf5RBzPkOtWAadcZS2gvuOgNn/cyJBYNxtTuyYqTKN0eg4rC1YJwGnzrqfRB3dSKm8cNCjNirg==", - "dev": true, - "requires": { - "array-iterate": "1.1.2" - } - }, - "unist-util-remove-position": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.1.tgz", - "integrity": "sha1-WoXBVV/BugwQG4ZwfRXlD6TIcbs=", - "dev": true, - "requires": { - "unist-util-visit": "1.1.3" - } - }, - "unist-util-stringify-position": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-1.1.1.tgz", - "integrity": "sha1-PMvcU2ee7W7PN3fdf14yKcG2qjw=", - "dev": true - }, - "unist-util-visit": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.1.3.tgz", - "integrity": "sha1-7CaOcxudJ3p5pbWqBkOZDkBdYAs=", - "dev": true - }, - "universalify": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz", - "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=", - "dev": true - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "dev": true - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "requires": { - "has-value": "0.3.1", - "isobject": "3.0.1" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "requires": { - "get-value": "2.0.6", - "has-values": "0.1.4", - "isobject": "2.1.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } - } - }, - "unzip-response": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", - "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", - "dev": true - }, - "upath": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.0.5.tgz", - "integrity": "sha512-qbKn90aDQ0YEwvXoLqj0oiuUYroLX2lVHZ+b+xwjozFasAOC4GneDq5+OaIG5Zj+jFmbz/uO+f7a9qxjktJQww==", - "dev": true - }, - "update-notifier": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz", - "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", - "dev": true, - "requires": { - "boxen": "1.3.0", - "chalk": "2.4.1", - "configstore": "3.1.2", - "import-lazy": "2.1.0", - "is-ci": "1.0.10", - "is-installed-globally": "0.1.0", - "is-npm": "1.0.0", - "latest-version": "3.1.0", - "semver-diff": "2.1.0", - "xdg-basedir": "3.0.0" - }, - "dependencies": { - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" - } - } - } - }, - "upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", - "dev": true - }, - "uri-js": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.1.tgz", - "integrity": "sha512-jpKCA3HjsBfSDOEgxRDAxQCNyHfCPSbq57PqCkd3gAyBuPb3IWxw54EHncqESznIdqSetHfw3D7ylThu2Kcc9A==", - "dev": true, - "requires": { - "punycode": "2.1.0" - }, - "dependencies": { - "punycode": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", - "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=", - "dev": true - } - } - }, - "urijs": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.1.tgz", - "integrity": "sha512-xVrGVi94ueCJNrBSTjWqjvtgvl3cyOTThp2zaMaFNGp3F542TR6sM3f2o8RqZl+AwteClSVmoCyt0ka4RjQOQg==", - "dev": true - }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - } - } - }, - "url-loader": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-0.6.2.tgz", - "integrity": "sha512-h3qf9TNn53BpuXTTcpC+UehiRrl0Cv45Yr/xWayApjw6G8Bg2dGke7rIwDQ39piciWCWrC+WiqLjOh3SUp9n0Q==", - "dev": true, - "requires": { - "loader-utils": "1.1.0", - "mime": "1.6.0", - "schema-utils": "0.3.0" - } - }, - "url-parse": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.0.tgz", - "integrity": "sha512-ERuGxDiQ6Xw/agN4tuoCRbmwRuZP0cJ1lJxJubXr5Q/5cDa78+Dc4wfvtxzhzhkm5VvmW6Mf8EVj9SPGN4l8Lg==", - "dev": true, - "requires": { - "querystringify": "2.0.0", - "requires-port": "1.0.0" - } - }, - "url-parse-lax": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", - "dev": true, - "requires": { - "prepend-http": "1.0.4" - } - }, - "url-polyfill": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/url-polyfill/-/url-polyfill-1.0.13.tgz", - "integrity": "sha512-tNb+OrSQWDkKNapyp84/tvzQUBpTj1HvE07ySZCvsu/P736+HJbqTVY3NqWd+GPGt5OknqNaWqT0s1VsAmTqJA==" - }, - "use": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", - "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } - } - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "requires": { - "inherits": "2.0.1" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - } - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "util.promisify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", - "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", - "dev": true, - "requires": { - "define-properties": "1.1.2", - "object.getownpropertydescriptors": "2.0.3" - } - }, - "utila": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", - "dev": true - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "dev": true - }, - "uuid": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", - "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==", - "dev": true - }, - "validate-npm-package-license": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", - "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", - "dev": true, - "requires": { - "spdx-correct": "1.0.2", - "spdx-expression-parse": "1.0.4" - } - }, - "value-equal": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-0.4.0.tgz", - "integrity": "sha512-x+cYdNnaA3CxvMaTX0INdTCN8m8aF2uY9BvEqmxuYp8bL09cs/kWVQPVGcA35fMktdOsP69IgU7wFj/61dJHEw==" - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "dev": true - }, - "vendors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.2.tgz", - "integrity": "sha512-w/hry/368nO21AN9QljsaIhb9ZiZtZARoVH5f3CsFbawdLdayCgKRPup7CggujvySMxx0I91NOyxdVENohprLQ==", - "dev": true - }, - "venn.js": { - "version": "0.2.20", - "resolved": "https://registry.npmjs.org/venn.js/-/venn.js-0.2.20.tgz", - "integrity": "sha512-bb5SYq/wamY9fvcuErb9a0FJkgIFHJjkLZWonQ+DoKKuDX3WPH2B4ouI1ce4K2iejBklQy6r1ly8nOGIyOCO6w==", - "requires": { - "d3-selection": "1.3.0", - "d3-transition": "1.1.1", - "fmin": "0.0.2" - } - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "1.3.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } - } - }, - "vfile": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-2.2.0.tgz", - "integrity": "sha1-zkek+zNZIrIz5TXbD32BIdj87U4=", - "dev": true, - "requires": { - "is-buffer": "1.1.6", - "replace-ext": "1.0.0", - "unist-util-stringify-position": "1.1.1" - } - }, - "vfile-location": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.2.tgz", - "integrity": "sha1-02dcWch3SY5JK0dW/2Xkrxp1IlU=", - "dev": true - }, - "vm-browserify": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", - "dev": true, - "requires": { - "indexof": "0.0.1" - } - }, - "w3c-hr-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", - "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", - "dev": true, - "requires": { - "browser-process-hrtime": "0.1.2" - } - }, - "walker": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", - "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", - "dev": true, - "requires": { - "makeerror": "1.0.11" - } - }, - "warning": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", - "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=", - "requires": { - "loose-envify": "1.3.1" - } - }, - "watch": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/watch/-/watch-0.18.0.tgz", - "integrity": "sha1-KAlUdsbffJDJYxOJkMClQj60uYY=", - "dev": true, - "requires": { - "exec-sh": "0.2.1", - "minimist": "1.2.0" - } - }, - "watchpack": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", - "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", - "dev": true, - "requires": { - "chokidar": "2.0.3", - "graceful-fs": "4.1.11", - "neo-async": "2.5.1" - }, - "dependencies": { - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "3.1.10", - "normalize-path": "2.1.1" - } - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "1.1.0", - "array-unique": "0.3.2", - "extend-shallow": "2.0.1", - "fill-range": "4.0.0", - "isobject": "3.0.1", - "repeat-element": "1.1.2", - "snapdragon": "0.8.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "chokidar": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.3.tgz", - "integrity": "sha512-zW8iXYZtXMx4kux/nuZVXjkLP+CyIK5Al5FHnj1OgTKGZfp4Oy6/ymtMSKFv3GD8DviEmUPmJg9eFdJ/JzudMg==", - "dev": true, - "requires": { - "anymatch": "2.0.0", - "async-each": "1.0.1", - "braces": "2.3.2", - "fsevents": "1.2.4", - "glob-parent": "3.1.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "4.0.0", - "normalize-path": "2.1.1", - "path-is-absolute": "1.0.1", - "readdirp": "2.1.0", - "upath": "1.0.5" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "0.1.6" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "0.3.2", - "define-property": "1.0.0", - "expand-brackets": "2.1.4", - "extend-shallow": "2.0.1", - "fragment-cache": "0.2.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "1.0.2" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "3.1.0", - "path-dirname": "1.0.2" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "2.1.1" - } - } - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", - "dev": true, - "requires": { - "is-extglob": "2.1.1" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "extglob": "2.0.4", - "fragment-cache": "0.2.1", - "kind-of": "6.0.2", - "nanomatch": "1.2.9", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - } - } - } - }, - "wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", - "dev": true, - "requires": { - "minimalistic-assert": "1.0.1" - } - }, - "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true - }, - "webpack": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.12.0.tgz", - "integrity": "sha512-Sw7MdIIOv/nkzPzee4o0EdvCuPmxT98+vVpIvwtcwcF1Q4SDSNp92vwcKc4REe7NItH9f1S4ra9FuQ7yuYZ8bQ==", - "dev": true, - "requires": { - "acorn": "5.5.3", - "acorn-dynamic-import": "2.0.2", - "ajv": "6.5.0", - "ajv-keywords": "3.2.0", - "async": "2.1.4", - "enhanced-resolve": "3.4.1", - "escope": "3.6.0", - "interpret": "1.1.0", - "json-loader": "0.5.7", - "json5": "0.5.1", - "loader-runner": "2.3.0", - "loader-utils": "1.1.0", - "memory-fs": "0.4.1", - "mkdirp": "0.5.1", - "node-libs-browser": "2.1.0", - "source-map": "0.5.7", - "supports-color": "4.5.0", - "tapable": "0.2.8", - "uglifyjs-webpack-plugin": "0.4.6", - "watchpack": "1.6.0", - "webpack-sources": "1.1.0", - "yargs": "8.0.2" - }, - "dependencies": { - "ajv": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.0.tgz", - "integrity": "sha512-VDUX1oSajablmiyFyED9L1DFndg0P9h7p1F+NO8FkIzei6EPrR6Zu1n18rd5P8PqaSRd/FrWv3G1TVBqpM83gA==", - "dev": true, - "requires": { - "fast-deep-equal": "2.0.1", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1", - "uri-js": "4.2.1" - } - }, - "ajv-keywords": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", - "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", - "dev": true - }, - "enhanced-resolve": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz", - "integrity": "sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "memory-fs": "0.4.1", - "object-assign": "4.1.1", - "tapable": "0.2.8" - } - }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true - }, - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true - }, - "supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", - "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", - "dev": true, - "requires": { - "has-flag": "2.0.0" - } - } - } - }, - "webpack-bundle-analyzer": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-2.12.0.tgz", - "integrity": "sha512-fuP11YxvAd8DYuwC4otr7hDwx7cRutew49dz0+PTlVPl544aqFqjGLCdxKz9c03eWnBMpMFTK5SG4SDrUmZ+JA==", - "dev": true, - "requires": { - "acorn": "5.5.3", - "bfj-node4": "5.3.1", - "chalk": "2.4.1", - "commander": "2.15.1", - "ejs": "2.6.1", - "express": "4.16.3", - "filesize": "3.5.11", - "gzip-size": "4.1.0", - "lodash": "4.17.4", - "mkdirp": "0.5.1", - "opener": "1.4.3", - "ws": "4.1.0" - }, - "dependencies": { - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" - } - }, - "commander": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", - "dev": true - }, - "gzip-size": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-4.1.0.tgz", - "integrity": "sha1-iuCWJX6r59acRb4rZ8RIEk/7UXw=", - "dev": true, - "requires": { - "duplexer": "0.1.1", - "pify": "3.0.0" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, - "webpack-dev-middleware": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz", - "integrity": "sha512-FCrqPy1yy/sN6U/SaEZcHKRXGlqU0DUaEBL45jkUYoB8foVb6wCnbIJ1HKIx+qUFTW+3JpVcCJCxZ8VATL4e+A==", - "dev": true, - "requires": { - "memory-fs": "0.4.1", - "mime": "1.6.0", - "path-is-absolute": "1.0.1", - "range-parser": "1.2.0", - "time-stamp": "2.0.0" - } - }, - "webpack-dev-server": { - "version": "2.11.2", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-2.11.2.tgz", - "integrity": "sha512-zrPoX97bx47vZiAXfDrkw8pe9QjJ+lunQl3dypojyWwWr1M5I2h0VSrMPfTjopHQPRNn+NqfjcMmhoLcUJe2gA==", - "dev": true, - "requires": { - "ansi-html": "0.0.7", - "array-includes": "3.0.3", - "bonjour": "3.5.0", - "chokidar": "2.0.3", - "compression": "1.7.2", - "connect-history-api-fallback": "1.5.0", - "debug": "3.1.0", - "del": "3.0.0", - "express": "4.16.3", - "html-entities": "1.2.1", - "http-proxy-middleware": "0.17.4", - "import-local": "1.0.0", - "internal-ip": "1.2.0", - "ip": "1.1.5", - "killable": "1.0.0", - "loglevel": "1.6.1", - "opn": "5.2.0", - "portfinder": "1.0.13", - "selfsigned": "1.10.3", - "serve-index": "1.9.1", - "sockjs": "0.3.19", - "sockjs-client": "1.1.4", - "spdy": "3.4.7", - "strip-ansi": "3.0.1", - "supports-color": "5.4.0", - "webpack-dev-middleware": "1.12.2", - "yargs": "6.6.0" - }, - "dependencies": { - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "3.1.10", - "normalize-path": "2.1.1" - } - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "1.1.0", - "array-unique": "0.3.2", - "extend-shallow": "2.0.1", - "fill-range": "4.0.0", - "isobject": "3.0.1", - "repeat-element": "1.1.2", - "snapdragon": "0.8.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true - }, - "chokidar": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.3.tgz", - "integrity": "sha512-zW8iXYZtXMx4kux/nuZVXjkLP+CyIK5Al5FHnj1OgTKGZfp4Oy6/ymtMSKFv3GD8DviEmUPmJg9eFdJ/JzudMg==", - "dev": true, - "requires": { - "anymatch": "2.0.0", - "async-each": "1.0.1", - "braces": "2.3.2", - "fsevents": "1.2.4", - "glob-parent": "3.1.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "4.0.0", - "normalize-path": "2.1.1", - "path-is-absolute": "1.0.1", - "readdirp": "2.1.0", - "upath": "1.0.5" - } - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true, - "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wrap-ansi": "2.1.0" - } - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "del": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", - "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", - "dev": true, - "requires": { - "globby": "6.1.0", - "is-path-cwd": "1.0.0", - "is-path-in-cwd": "1.0.1", - "p-map": "1.2.0", - "pify": "3.0.0", - "rimraf": "2.6.2" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "0.1.6" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "0.3.2", - "define-property": "1.0.0", - "expand-brackets": "2.1.4", - "extend-shallow": "2.0.1", - "fragment-cache": "0.2.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "1.0.2" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "3.1.0", - "path-dirname": "1.0.2" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "2.1.1" - } - } - } - }, - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true, - "requires": { - "array-union": "1.0.2", - "glob": "7.1.2", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", - "dev": true, - "requires": { - "is-extglob": "2.1.1" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "extglob": "2.0.4", - "fragment-cache": "0.2.1", - "kind-of": "6.0.2", - "nanomatch": "1.2.9", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - } - }, - "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "dev": true, - "requires": { - "lcid": "1.0.0" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - }, - "which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", - "dev": true - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true - }, - "yargs": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", - "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", - "dev": true, - "requires": { - "camelcase": "3.0.0", - "cliui": "3.2.0", - "decamelize": "1.2.0", - "get-caller-file": "1.0.2", - "os-locale": "1.4.0", - "read-pkg-up": "1.0.1", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "1.0.2", - "which-module": "1.0.0", - "y18n": "3.2.1", - "yargs-parser": "4.2.1" - } - }, - "yargs-parser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", - "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", - "dev": true, - "requires": { - "camelcase": "3.0.0" - } - } - } - }, - "webpack-manifest-plugin": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-1.3.2.tgz", - "integrity": "sha512-MX60Bv2G83Zks9pi3oLOmRgnPAnwrlMn+lftMrWBm199VQjk46/xgzBi9lPfpZldw2+EI2S+OevuLIaDuxCWRw==", - "dev": true, - "requires": { - "fs-extra": "0.30.0", - "lodash": "4.17.4" - } - }, - "webpack-sources": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz", - "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==", - "dev": true, - "requires": { - "source-list-map": "2.0.0", - "source-map": "0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "websocket-driver": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", - "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", - "dev": true, - "requires": { - "http-parser-js": "0.4.12", - "websocket-extensions": "0.1.3" - } - }, - "websocket-extensions": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", - "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", - "dev": true - }, - "whatwg-encoding": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.3.tgz", - "integrity": "sha512-jLBwwKUhi8WtBfsMQlL4bUUcT8sMkAtQinscJAe/M4KHCkHuUJAF6vuB0tueNIw4c8ziO6AkRmgY+jL3a0iiPw==", - "dev": true, - "requires": { - "iconv-lite": "0.4.19" - } - }, - "whatwg-fetch": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz", - "integrity": "sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ=" - }, - "whatwg-mimetype": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.1.0.tgz", - "integrity": "sha512-FKxhYLytBQiUKjkYteN71fAUA3g6KpNXoho1isLiLSB3N1G4F35Q5vUxWfKFhBwi5IWF27VE6WxhrnnC+m0Mew==", - "dev": true - }, - "whatwg-url": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.4.1.tgz", - "integrity": "sha512-FwygsxsXx27x6XXuExA/ox3Ktwcbf+OAvrKmLulotDAiO1Q6ixchPFaHYsis2zZBZSJTR0+dR+JVtf7MlbqZjw==", - "dev": true, - "requires": { - "lodash.sortby": "4.7.0", - "tr46": "1.0.1", - "webidl-conversions": "4.0.2" - } - }, - "whet.extend": { - "version": "0.9.9", - "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", - "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=", - "dev": true - }, - "which": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", - "dev": true, - "requires": { - "isexe": "2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "widest-line": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.0.tgz", - "integrity": "sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM=", - "dev": true, - "requires": { - "string-width": "2.1.1" - } - }, - "window-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=" - }, - "wolfy87-eventemitter": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/wolfy87-eventemitter/-/wolfy87-eventemitter-5.2.4.tgz", - "integrity": "sha512-yUOUSIzZxqBeu6VdnigqYHwwjy5N3CRX5XSHh/YcVpy+Qsx+HkHaEWdmdyAr3NvyBYDraOa5EfNIbu47T5QzIA==" - }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true - }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dev": true, - "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "write": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", - "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", - "dev": true, - "requires": { - "mkdirp": "0.5.1" - } - }, - "write-file-atomic": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", - "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "imurmurhash": "0.1.4", - "signal-exit": "3.0.2" - } - }, - "ws": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-4.1.0.tgz", - "integrity": "sha512-ZGh/8kF9rrRNffkLFV4AzhvooEclrOH0xaugmqGsIfFgOE/pIz4fMc4Ef+5HSQqTEug2S9JZIWDR47duDSLfaA==", - "dev": true, - "requires": { - "async-limiter": "1.0.0", - "safe-buffer": "5.1.1" - } - }, - "x-is-function": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/x-is-function/-/x-is-function-1.0.4.tgz", - "integrity": "sha1-XSlNw9Joy90GJYDgxd93o5HR+h4=", - "dev": true - }, - "x-is-string": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/x-is-string/-/x-is-string-0.1.0.tgz", - "integrity": "sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI=", - "dev": true - }, - "xdg-basedir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", - "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", - "dev": true - }, - "xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true - }, - "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", - "dev": true - }, - "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", - "dev": true - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - }, - "yargs": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", - "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", - "dev": true, - "requires": { - "camelcase": "4.1.0", - "cliui": "3.2.0", - "decamelize": "1.2.0", - "get-caller-file": "1.0.2", - "os-locale": "2.1.0", - "read-pkg-up": "2.0.0", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", - "y18n": "3.2.1", - "yargs-parser": "7.0.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true, - "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wrap-ansi": "2.1.0" - }, - "dependencies": { - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - } - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "2.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "strip-bom": "3.0.0" - } - }, - "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", - "dev": true, - "requires": { - "pify": "2.3.0" - } - }, - "read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", - "dev": true, - "requires": { - "load-json-file": "2.0.0", - "normalize-package-data": "2.4.0", - "path-type": "2.0.0" - } - }, - "read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", - "dev": true, - "requires": { - "find-up": "2.1.0", - "read-pkg": "2.0.0" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true - } - } - }, - "yargs-parser": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", - "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", - "dev": true, - "requires": { - "camelcase": "4.1.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - } - } - }, - "yauzl": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", - "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", - "optional": true, - "requires": { - "fd-slicer": "1.0.1" - } - } - } -} diff --git a/bizui/package.json.back b/bizui/package.json.back deleted file mode 100755 index 739589aed..000000000 --- a/bizui/package.json.back +++ /dev/null @@ -1,105 +0,0 @@ -{ - "name": "ant-design-pro", - "version": "1.3.0", - "description": "An out-of-box UI solution for enterprise applications", - "private": true, - "scripts": { - "precommit": "npm run lint-staged", - "start": "cross-env ESLINT=none roadhog dev", - "start:no-proxy": "cross-env NO_PROXY=true ESLINT=none roadhog dev", - "build": "cross-env ESLINT=none roadhog build", - "site": "roadhog-api-doc static && gh-pages -d dist", - "analyze": "cross-env ANALYZE=true roadhog build", - "lint:style": "stylelint \"src/**/*.less\" --syntax less", - "lint": "eslint --ext .js src mock tests && npm run lint:style", - "lint:fix": "eslint --fix --ext .js src mock tests && npm run lint:style", - "lint-staged": "lint-staged", - "lint-staged:js": "eslint --ext .js", - "test": "roadhog test", - "test:component": "roadhog test ./src/components", - "test:all": "node ./tests/run-tests.js", - "prettier": "prettier --write ./src/**/**/**/*" - }, - "dependencies": { - "@antv/data-set": "^0.8.0", - "@babel/polyfill": "^7.0.0-beta.36", - "antd": "^3.4.3", - "axios": "^0.16.2", - "babel-plugin-transform-decorators-legacy": "^1.3.4", - "babel-runtime": "^6.9.2", - "bizcharts": "^3.1.5", - "bizcharts-plugin-slider": "^2.0.1", - "classnames": "^2.2.5", - "dva": "^2.2.3", - "dva-loading": "^1.0.4", - "enquire-js": "^0.2.1", - "less": "2.7.2", - "lodash": "^4.17.4", - "lodash-decorators": "^4.4.1", - "moment": "^2.19.1", - "numeral": "^2.0.6", - "omit.js": "^1.0.0", - "path-to-regexp": "^2.1.0", - "prop-types": "^15.5.10", - "qs": "^6.5.0", - "rc-drawer-menu": "^0.5.0", - "react": "^16.2.0", - "react-container-query": "^0.9.1", - "react-document-title": "^2.0.3", - "react-fontawesome": "^1.6.1", - "react-dom": "^16.2.0", - "react-fittext": "^1.0.0", - "rollbar": "^2.3.4", - "url-polyfill": "^1.0.10" - }, - "devDependencies": { - "babel-eslint": "^8.1.2", - "babel-plugin-dva-hmr": "^0.4.1", - "babel-plugin-import": "^1.6.7", - "babel-plugin-module-resolver": "^3.1.1", - "cross-env": "^5.1.1", - "cross-port-killer": "^1.0.1", - "enzyme": "^3.1.0", - "eslint": "^4.14.0", - "eslint-config-airbnb": "^16.0.0", - "eslint-config-prettier": "^2.9.0", - "eslint-plugin-babel": "^4.0.0", - "eslint-plugin-compat": "^2.1.0", - "eslint-plugin-import": "^2.8.0", - "eslint-plugin-jsx-a11y": "^6.0.3", - "eslint-plugin-markdown": "^1.0.0-beta.6", - "eslint-plugin-react": "^7.0.1", - "gh-pages": "^1.0.0", - "husky": "^0.14.3", - "lint-staged": "^6.0.0", - "mockjs": "^1.0.1-beta3", - "prettier": "1.11.1", - "pro-download": "^1.0.1", - "redbox-react": "^1.5.0", - "regenerator-runtime": "^0.11.1", - "roadhog": "^2.3.0", - "roadhog-api-doc": "^1.0.2", - "stylelint": "^8.4.0", - "stylelint-config-prettier": "^3.0.4", - "stylelint-config-standard": "^18.0.0" - }, - "optionalDependencies": { - "puppeteer": "^1.1.1" - }, - "lint-staged": { - "**/*.{js,jsx,less}": [ - "prettier --write", - "git add" - ], - "**/*.{js,jsx}": "lint-staged:js", - "**/*.less": "stylelint --syntax less" - }, - "engines": { - "node": ">=8.0.0" - }, - "browserslist": [ - "> 1%", - "last 2 versions", - "not ie <= 10" - ] -} diff --git a/bizui/src/axios/config.js b/bizui/src/axios/config.js index fb4b96636..2f40c019f 100644 --- a/bizui/src/axios/config.js +++ b/bizui/src/axios/config.js @@ -1,7 +1,7 @@ -export const SYSTEM_SHORT_NAME = "retailscm" //Use for requssting different apps +export const SYSTEM_SHORT_NAME = "retailscmgbase" //Use for requssting different apps export const SYSTEM_LOCAL_NAME = "双链小超全流程供应链系统" -export const BUILD_TIIME="Wed Mar 27 19:31:39 CST 2019" +export const BUILD_TIIME="Mon May 20 12:23:42 CST 2019" export const MEDIA_UPLOAD_URL="https://www.doublechaintech.com/mss/upload.html" export const MEDIA_PREFIX="https://www.doublechaintech.com/mss/" diff --git a/bizui/src/axios/tools.js b/bizui/src/axios/tools.js index be4a643e2..d97dd7bdd 100644 --- a/bizui/src/axios/tools.js +++ b/bizui/src/axios/tools.js @@ -57,10 +57,10 @@ export const get3 = ({ url, msg = '接口异常', headers }) => console.log(err); message.warn(msg); }); - +// const headers = { 'X-App-Version':"35",'Content-Type': 'application/x-www-form-urlencoded' } export const get = ({ url, msg = '接口异常', headers }) => axios - .get(url, headers) + .get(url, {headers:{"X-App-Version":35}}) .then(function(res) { console.log('http headers', res.headers); const clazz = res.headers['x-class']; @@ -89,12 +89,12 @@ export const getURLPrefix = () => { return `http://${url.hostname}:8080/${SYSTEM_SHORT_NAME}/` } if (url.hostname === '127.0.0.1') { - return `https://app.art0x.com/moyi/` + return `https://demo.doublechaintech.com/${SYSTEM_SHORT_NAME}/` } //return `http://xm.jl51.com.cn/cis/` - return `${url.origin}/${SYSTEM_SHORT_NAME}/`; - //return `${url.origin}/${SYSTEM_SHORT_NAME}/` + // return `https://demo.doublechaintech.com/${SYSTEM_SHORT_NAME}/`; + return `${url.origin}/${SYSTEM_SHORT_NAME}/` }; export const joinParameters = (parameters) => { @@ -174,19 +174,20 @@ export const PREFIX = getURLPrefix(); export const postForm = ({ url, requestParameters, msg = '接口异常'})=>{ - const headers = { 'Content-Type': 'application/x-www-form-urlencoded' } + const headers = { 'X-App-Version':"35",'Content-Type': 'application/x-www-form-urlencoded' } + const options ={headers} return post({ url, data: joinPostParameters(requestParameters), - headers, + options, }) } -export const post = ({ url, data, msg = '接口异常', headers }) => +export const post = ({ url, data, msg = '接口异常', options }) => axios - .post(url, data, headers) + .post(url, data, options) .then(res => res.data) .catch(err => { console.log(err); diff --git a/bizui/src/bizcomponents/accountingdocument/AccountingDocument.app.js b/bizui/src/bizcomponents/accountingdocument/AccountingDocument.app.js index b3923cad6..7d6c4034c 100644 --- a/bizui/src/bizcomponents/accountingdocument/AccountingDocument.app.js +++ b/bizui/src/bizcomponents/accountingdocument/AccountingDocument.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class AccountingDocumentBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -255,12 +264,14 @@ class AccountingDocumentBizApp extends React.PureComponent { buildRouters = () =>{ const {AccountingDocumentDashboard} = GlobalComponents - const {AccountingDocumentPreference} = GlobalComponents + const {AccountingDocumentPermission} = GlobalComponents + const {AccountingDocumentProfile} = GlobalComponents const routers=[ {path:"/accountingDocument/:id/dashboard", component: AccountingDocumentDashboard}, - {path:"/accountingDocument/:id/preference", component: AccountingDocumentPreference}, + {path:"/accountingDocument/:id/profile", component: AccountingDocumentProfile}, + {path:"/accountingDocument/:id/permission", component: AccountingDocumentPermission}, diff --git a/bizui/src/bizcomponents/accountingdocument/AccountingDocument.associateform.js b/bizui/src/bizcomponents/accountingdocument/AccountingDocument.associateform.js index d547d3f1a..5f316f57a 100644 --- a/bizui/src/bizcomponents/accountingdocument/AccountingDocument.associateform.js +++ b/bizui/src/bizcomponents/accountingdocument/AccountingDocument.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { name: '记账凭证', - accountingDocumentDate: '2018-07-01', + accountingDocumentDate: '2018-04-30', accountingPeriodId: 'AP000001', documentTypeId: 'ADT000001', } @@ -142,7 +142,7 @@ class AccountingDocumentAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -152,7 +152,7 @@ class AccountingDocumentAssociateForm extends Component { {getFieldDecorator('accountingDocumentDate', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/accountingdocument/AccountingDocument.associateform.less b/bizui/src/bizcomponents/accountingdocument/AccountingDocument.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/accountingdocument/AccountingDocument.associateform.less +++ b/bizui/src/bizcomponents/accountingdocument/AccountingDocument.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/accountingdocument/AccountingDocument.base.js b/bizui/src/bizcomponents/accountingdocument/AccountingDocument.base.js index 2a58eea83..e2ed21000 100644 --- a/bizui/src/bizcomponents/accountingdocument/AccountingDocument.base.js +++ b/bizui/src/bizcomponents/accountingdocument/AccountingDocument.base.js @@ -1,97 +1,42 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"会计凭证", menuFor: "accountingDocument", subItems: [ - {name: 'originalVoucherList', displayName:'原始凭证', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'accountingDocumentLineList', displayName:'会计凭证行', icon:'line',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'originalVoucherList', displayName:'原始凭证', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'accountingDocumentLineList', displayName:'会计凭证行', icon:'line',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) - -} - -const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'accountingDocument') }, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: '会计凭证日期', dataIndex: 'accountingDocumentDate', render: (text, record) =>renderDateCell(text,record) }, - { title: '会计期间', dataIndex: 'accountingPeriod', render: (text, record) => renderReferenceCell(text, record)}, - { title: '文档类型', dataIndex: 'documentType', render: (text, record) => renderReferenceCell(text, record)}, - { title: '创建', dataIndex: 'creation', render: (text, record) => renderReferenceCell(text, record)}, - { title: '确认', dataIndex: 'confirmation', render: (text, record) => renderReferenceCell(text, record)}, - { title: '审计', dataIndex: 'auditing', render: (text, record) => renderReferenceCell(text, record)}, - { title: '过账', dataIndex: 'posting', render: (text, record) => renderReferenceCell(text, record)}, - { title: '当前状态', debugtype: 'string', dataIndex: 'currentStatus', width: '13',render: (text, record)=>renderTextCell(text,record) }, - -] - const fieldLabels = { id: '序号', name: '名称', @@ -106,8 +51,55 @@ const fieldLabels = { } +const displayColumns = [ + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'accountingDocument') , sorter: true }, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.accountingDocumentDate, dataIndex: 'accountingDocumentDate', render: (text, record) =>renderDateCell(text,record), sorter: true }, + { title: fieldLabels.accountingPeriod, dataIndex: 'accountingPeriod', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.documentType, dataIndex: 'documentType', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.creation, dataIndex: 'creation', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.confirmation, dataIndex: 'confirmation', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.auditing, dataIndex: 'auditing', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.posting, dataIndex: 'posting', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.currentStatus, debugtype: 'string', dataIndex: 'currentStatus', width: '13',render: (text, record)=>renderTextCell(text,record)}, + +] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({accountingDocument,targetComponent})=>{ + + + + const {AccountingDocumentService} = GlobalComponents + // const userContext = null + return ( + +{accountingDocument.id} +{accountingDocument.name} +{ moment(accountingDocument.accountingDocumentDate).format('YYYY-MM-DD')} +{accountingDocument.accountingPeriod==null?appLocaleName(userContext,"NotAssigned"):`${accountingDocument.accountingPeriod.displayName}(${accountingDocument.accountingPeriod.id})`} + + showTransferModel(targetComponent,"会计期间","accountingPeriod",AccountingDocumentService.requestCandidateAccountingPeriod, + AccountingDocumentService.transferToAnotherAccountingPeriod,"anotherAccountingPeriodId",accountingDocument.accountingPeriod?accountingDocument.accountingPeriod.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{accountingDocument.documentType==null?appLocaleName(userContext,"NotAssigned"):`${accountingDocument.documentType.displayName}(${accountingDocument.documentType.id})`} + + showTransferModel(targetComponent,"文档类型","accountingDocumentType",AccountingDocumentService.requestCandidateDocumentType, + AccountingDocumentService.transferToAnotherDocumentType,"anotherDocumentTypeId",accountingDocument.documentType?accountingDocument.documentType.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{accountingDocument.currentStatus} + + {buildTransferModal(accountingDocument,targetComponent)} + + ) + +} + + + -const AccountingDocumentBase={menuData,displayColumns,fieldLabels} +const AccountingDocumentBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default AccountingDocumentBase diff --git a/bizui/src/bizcomponents/accountingdocument/AccountingDocument.createform.js b/bizui/src/bizcomponents/accountingdocument/AccountingDocument.createform.js index 035e376c2..a53fdde00 100644 --- a/bizui/src/bizcomponents/accountingdocument/AccountingDocument.createform.js +++ b/bizui/src/bizcomponents/accountingdocument/AccountingDocument.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { name: '记账凭证', - accountingDocumentDate: '2018-01-11', + accountingDocumentDate: '2018-08-10', accountingPeriodId: 'AP000001', documentTypeId: 'ADT000001', } @@ -209,7 +209,7 @@ class AccountingDocumentCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -219,7 +219,7 @@ class AccountingDocumentCreateForm extends Component { {getFieldDecorator('accountingDocumentDate', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/accountingdocument/AccountingDocument.dashboard.js b/bizui/src/bizcomponents/accountingdocument/AccountingDocument.dashboard.js index 5abd2f3ca..9a447c6b4 100644 --- a/bizui/src/bizcomponents/accountingdocument/AccountingDocument.dashboard.js +++ b/bizui/src/bizcomponents/accountingdocument/AccountingDocument.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -151,6 +151,7 @@ class AccountingDocumentDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -159,13 +160,17 @@ class AccountingDocumentDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/accountingdocument/AccountingDocument.model.js b/bizui/src/bizcomponents/accountingdocument/AccountingDocument.model.js index 614391980..488cf1d87 100644 --- a/bizui/src/bizcomponents/accountingdocument/AccountingDocument.model.js +++ b/bizui/src/bizcomponents/accountingdocument/AccountingDocument.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/accountingDocument/${id}/list/\OriginalVoucherList/原始凭证+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/accountingDocument/${id}/list/OriginalVoucherList/原始凭证+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateOriginalVoucher({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/accountingDocument/${id}/list/\OriginalVoucherList/原始凭证列表`, state: newPlayload } + const location = { pathname: `/accountingDocument/${id}/list/OriginalVoucherList/原始凭证列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextOriginalVoucherUpdateRow({ payload }, { call, put }) { @@ -206,7 +206,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/accountingDocument/${id}/list/\AccountingDocumentLineList/会计凭证行+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/accountingDocument/${id}/list/AccountingDocumentLineList/会计凭证行+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateAccountingDocumentLine({ payload }, { call, put }) { @@ -228,7 +228,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/accountingDocument/${id}/list/\AccountingDocumentLineList/会计凭证行列表`, state: newPlayload } + const location = { pathname: `/accountingDocument/${id}/list/AccountingDocumentLineList/会计凭证行列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextAccountingDocumentLineUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/accountingdocument/AccountingDocument.permission.js b/bizui/src/bizcomponents/accountingdocument/AccountingDocument.permission.js new file mode 100644 index 000000000..6f73ae08b --- /dev/null +++ b/bizui/src/bizcomponents/accountingdocument/AccountingDocument.permission.js @@ -0,0 +1,86 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './AccountingDocument.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (accountingDocument,targetComponent) =>{ + const userContext = null + return ( + +{accountingDocument.id} +{accountingDocument.name} +{ moment(accountingDocument.accountingDocumentDate).format('YYYY-MM-DD')} +{accountingDocument.currentStatus} + + + ) +} + + +const renderPermissionSetting = accountingDocument => { + const {AccountingDocumentBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class AccountingDocumentPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const accountingDocument = this.props.accountingDocument; + const { id,displayName, originalVoucherCount, accountingDocumentLineCount } = accountingDocument + const cardsData = {cardsName:"会计凭证",cardsFor: "accountingDocument",cardsSource: accountingDocument, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + accountingDocument: state._accountingDocument, +}))(Form.create()(AccountingDocumentPermission)) + diff --git a/bizui/src/bizcomponents/accountingdocument/AccountingDocument.permission.less b/bizui/src/bizcomponents/accountingdocument/AccountingDocument.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/accountingdocument/AccountingDocument.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/accountingdocument/AccountingDocument.preference.js b/bizui/src/bizcomponents/accountingdocument/AccountingDocument.preference.js index 67657f3f5..1aaeed578 100644 --- a/bizui/src/bizcomponents/accountingdocument/AccountingDocument.preference.js +++ b/bizui/src/bizcomponents/accountingdocument/AccountingDocument.preference.js @@ -313,8 +313,12 @@ class AccountingDocumentPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, originalVoucherCount, accountingDocumentLineCount } = this.props.accountingDocument - const cardsData = {cardsName:"会计凭证",cardsFor: "accountingDocument",cardsSource: this.props.accountingDocument, + const accountingDocument = this.props.accountingDocument; + const { id,displayName, originalVoucherCount, accountingDocumentLineCount } = accountingDocument + + + + const cardsData = {cardsName:"会计凭证",cardsFor: "accountingDocument",cardsSource: accountingDocument, subItems: [ ], diff --git a/bizui/src/bizcomponents/accountingdocument/AccountingDocument.profile.js b/bizui/src/bizcomponents/accountingdocument/AccountingDocument.profile.js new file mode 100644 index 000000000..75072ec5e --- /dev/null +++ b/bizui/src/bizcomponents/accountingdocument/AccountingDocument.profile.js @@ -0,0 +1,93 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './AccountingDocument.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (accountingDocument,targetComponent) =>{ + const userContext = null + return ( + +{accountingDocument.id} +{accountingDocument.name} +{ moment(accountingDocument.accountingDocumentDate).format('YYYY-MM-DD')} +{accountingDocument.currentStatus} + + + ) +} + + + +class AccountingDocumentProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const accountingDocument = this.props.accountingDocument; + const { id,displayName, originalVoucherCount, accountingDocumentLineCount } = accountingDocument + + const cardsData = {cardsName:"会计凭证",cardsFor: "accountingDocument",cardsSource: accountingDocument, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + accountingDocument: state._accountingDocument, +}))(Form.create()(AccountingDocumentProfile)) + diff --git a/bizui/src/bizcomponents/accountingdocument/AccountingDocument.profile.less b/bizui/src/bizcomponents/accountingdocument/AccountingDocument.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/accountingdocument/AccountingDocument.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/accountingdocument/AccountingDocument.search.js b/bizui/src/bizcomponents/accountingdocument/AccountingDocument.search.js index 6b4d3c8ac..942bd7105 100644 --- a/bizui/src/bizcomponents/accountingdocument/AccountingDocument.search.js +++ b/bizui/src/bizcomponents/accountingdocument/AccountingDocument.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/accountingdocument/AccountingDocument.searchform.js b/bizui/src/bizcomponents/accountingdocument/AccountingDocument.searchform.js index 20ff8ccf7..bae7cf1f6 100644 --- a/bizui/src/bizcomponents/accountingdocument/AccountingDocument.searchform.js +++ b/bizui/src/bizcomponents/accountingdocument/AccountingDocument.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`accountingDocumentList.searchField`] = fieldName - value[`accountingDocumentList.searchVerb`] = searchVerb - value[`accountingDocumentList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,13 +127,14 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'accountingPeriod')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'documentType')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'currentStatus')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'accountingPeriod')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'documentType')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'currentStatus')) console.log("the final parameter", paramList) @@ -149,11 +150,12 @@ componentDidMount() { } - params['accountingDocumentList'] = 1 - params['accountingDocumentList.orderBy.0'] = "id" - params['accountingDocumentList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -208,8 +210,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -302,8 +304,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/accountingdocument/AccountingDocument.table.js b/bizui/src/bizcomponents/accountingdocument/AccountingDocument.table.js index 067cdb9f0..b3dd3ff5a 100644 --- a/bizui/src/bizcomponents/accountingdocument/AccountingDocument.table.js +++ b/bizui/src/bizcomponents/accountingdocument/AccountingDocument.table.js @@ -40,24 +40,53 @@ class AccountingDocumentTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = AccountingDocumentBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class AccountingDocumentTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class AccountingDocumentTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/accountingdocument/AccountingDocument.updateform.js b/bizui/src/bizcomponents/accountingdocument/AccountingDocument.updateform.js index 4e8dceaf3..aeae8085b 100644 --- a/bizui/src/bizcomponents/accountingdocument/AccountingDocument.updateform.js +++ b/bizui/src/bizcomponents/accountingdocument/AccountingDocument.updateform.js @@ -262,7 +262,7 @@ class AccountingDocumentUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class AccountingDocumentUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class AccountingDocumentUpdateForm extends Component { initialValue: selectedRow.accountingDocumentDate, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.app.js b/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.app.js index 71cfeff6d..e48c99233 100644 --- a/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.app.js +++ b/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class AccountingDocumentAuditingBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class AccountingDocumentAuditingBizApp extends React.PureComponent { buildRouters = () =>{ const {AccountingDocumentAuditingDashboard} = GlobalComponents - const {AccountingDocumentAuditingPreference} = GlobalComponents + const {AccountingDocumentAuditingPermission} = GlobalComponents + const {AccountingDocumentAuditingProfile} = GlobalComponents const routers=[ {path:"/accountingDocumentAuditing/:id/dashboard", component: AccountingDocumentAuditingDashboard}, - {path:"/accountingDocumentAuditing/:id/preference", component: AccountingDocumentAuditingPreference}, + {path:"/accountingDocumentAuditing/:id/profile", component: AccountingDocumentAuditingProfile}, + {path:"/accountingDocumentAuditing/:id/permission", component: AccountingDocumentAuditingPermission}, diff --git a/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.associateform.js b/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.associateform.js index 82f948fd9..62f11a100 100644 --- a/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.associateform.js +++ b/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.associateform.js @@ -20,7 +20,7 @@ const testValues = {}; const testValues = { who: '财务会计', comments: '审核通过,要都审核过了才通过哦', - makeDate: '2017-03-19', + makeDate: '2017-07-21', } */ @@ -140,7 +140,7 @@ class AccountingDocumentAuditingAssociateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -150,7 +150,7 @@ class AccountingDocumentAuditingAssociateForm extends Component { {getFieldDecorator('comments', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -160,7 +160,7 @@ class AccountingDocumentAuditingAssociateForm extends Component { {getFieldDecorator('makeDate', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.associateform.less b/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.associateform.less +++ b/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.base.js b/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.base.js index 04ae7a9d4..75f6e54ad 100644 --- a/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.base.js +++ b/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.base.js @@ -1,100 +1,80 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"会计凭证的审核", menuFor: "accountingDocumentAuditing", subItems: [ - {name: 'accountingDocumentList', displayName:'会计凭证', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'accountingDocumentList', displayName:'会计凭证', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + who: '谁', + comments: '评论', + makeDate: '制造日期', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'accountingDocumentAuditing') }, - { title: '谁', debugtype: 'string', dataIndex: 'who', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: '评论', debugtype: 'string', dataIndex: 'comments', width: '19',render: (text, record)=>renderTextCell(text,record) }, - { title: '制造日期', dataIndex: 'makeDate', render: (text, record) =>renderDateCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'accountingDocumentAuditing') , sorter: true }, + { title: fieldLabels.who, debugtype: 'string', dataIndex: 'who', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.comments, debugtype: 'string', dataIndex: 'comments', width: '19',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.makeDate, dataIndex: 'makeDate', render: (text, record) =>renderDateCell(text,record), sorter: true }, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({accountingDocumentAuditing,targetComponent})=>{ -const fieldLabels = { - id: '序号', - who: '谁', - comments: '评论', - makeDate: '制造日期', + + + const {AccountingDocumentAuditingService} = GlobalComponents + // const userContext = null + return ( + +{accountingDocumentAuditing.id} +{accountingDocumentAuditing.who} +{accountingDocumentAuditing.comments} +{ moment(accountingDocumentAuditing.makeDate).format('YYYY-MM-DD')} + + {buildTransferModal(accountingDocumentAuditing,targetComponent)} + + ) } + + -const AccountingDocumentAuditingBase={menuData,displayColumns,fieldLabels} +const AccountingDocumentAuditingBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default AccountingDocumentAuditingBase diff --git a/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.createform.js b/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.createform.js index a23157ae4..68e292418 100644 --- a/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.createform.js +++ b/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.createform.js @@ -19,7 +19,7 @@ const testValues = {}; const testValues = { who: '财务会计', comments: '审核通过,要都审核过了才通过哦', - makeDate: '2018-04-09', + makeDate: '2018-04-21', } */ @@ -208,7 +208,7 @@ class AccountingDocumentAuditingCreateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -218,7 +218,7 @@ class AccountingDocumentAuditingCreateForm extends Component { {getFieldDecorator('comments', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -228,7 +228,7 @@ class AccountingDocumentAuditingCreateForm extends Component { {getFieldDecorator('makeDate', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.dashboard.js b/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.dashboard.js index 9bdbbc386..754f4754c 100644 --- a/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.dashboard.js +++ b/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -138,6 +138,7 @@ class AccountingDocumentAuditingDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -146,13 +147,17 @@ class AccountingDocumentAuditingDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.model.js b/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.model.js index c91d1b72e..09f6f6e27 100644 --- a/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.model.js +++ b/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/accountingDocumentAuditing/${id}/list/\AccountingDocumentList/会计凭证+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/accountingDocumentAuditing/${id}/list/AccountingDocumentList/会计凭证+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateAccountingDocument({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/accountingDocumentAuditing/${id}/list/\AccountingDocumentList/会计凭证列表`, state: newPlayload } + const location = { pathname: `/accountingDocumentAuditing/${id}/list/AccountingDocumentList/会计凭证列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextAccountingDocumentUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.permission.js b/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.permission.js new file mode 100644 index 000000000..c3e4ebb9c --- /dev/null +++ b/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.permission.js @@ -0,0 +1,86 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './AccountingDocumentAuditing.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (accountingDocumentAuditing,targetComponent) =>{ + const userContext = null + return ( + +{accountingDocumentAuditing.id} +{accountingDocumentAuditing.who} +{accountingDocumentAuditing.comments} +{ moment(accountingDocumentAuditing.makeDate).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = accountingDocumentAuditing => { + const {AccountingDocumentAuditingBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class AccountingDocumentAuditingPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const accountingDocumentAuditing = this.props.accountingDocumentAuditing; + const { id,displayName, accountingDocumentCount } = accountingDocumentAuditing + const cardsData = {cardsName:"会计凭证的审核",cardsFor: "accountingDocumentAuditing",cardsSource: accountingDocumentAuditing, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + accountingDocumentAuditing: state._accountingDocumentAuditing, +}))(Form.create()(AccountingDocumentAuditingPermission)) + diff --git a/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.permission.less b/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.preference.js b/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.preference.js index 3d15496b7..78e75a435 100644 --- a/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.preference.js +++ b/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.preference.js @@ -301,8 +301,12 @@ class AccountingDocumentAuditingPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, accountingDocumentCount } = this.props.accountingDocumentAuditing - const cardsData = {cardsName:"会计凭证的审核",cardsFor: "accountingDocumentAuditing",cardsSource: this.props.accountingDocumentAuditing, + const accountingDocumentAuditing = this.props.accountingDocumentAuditing; + const { id,displayName, accountingDocumentCount } = accountingDocumentAuditing + + + + const cardsData = {cardsName:"会计凭证的审核",cardsFor: "accountingDocumentAuditing",cardsSource: accountingDocumentAuditing, subItems: [ ], diff --git a/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.profile.js b/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.profile.js new file mode 100644 index 000000000..bfe9a8350 --- /dev/null +++ b/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.profile.js @@ -0,0 +1,93 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './AccountingDocumentAuditing.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (accountingDocumentAuditing,targetComponent) =>{ + const userContext = null + return ( + +{accountingDocumentAuditing.id} +{accountingDocumentAuditing.who} +{accountingDocumentAuditing.comments} +{ moment(accountingDocumentAuditing.makeDate).format('YYYY-MM-DD')} + + + ) +} + + + +class AccountingDocumentAuditingProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const accountingDocumentAuditing = this.props.accountingDocumentAuditing; + const { id,displayName, accountingDocumentCount } = accountingDocumentAuditing + + const cardsData = {cardsName:"会计凭证的审核",cardsFor: "accountingDocumentAuditing",cardsSource: accountingDocumentAuditing, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + accountingDocumentAuditing: state._accountingDocumentAuditing, +}))(Form.create()(AccountingDocumentAuditingProfile)) + diff --git a/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.profile.less b/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.search.js b/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.search.js index eee16b49c..a143f4525 100644 --- a/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.search.js +++ b/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.searchform.js b/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.searchform.js index 2fafaf8b3..a1bb7ddec 100644 --- a/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.searchform.js +++ b/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`accountingDocumentAuditingList.searchField`] = fieldName - value[`accountingDocumentAuditingList.searchVerb`] = searchVerb - value[`accountingDocumentAuditingList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,11 +127,12 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'who')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'comments')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'who')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'comments')) console.log("the final parameter", paramList) @@ -147,11 +148,12 @@ componentDidMount() { } - params['accountingDocumentAuditingList'] = 1 - params['accountingDocumentAuditingList.orderBy.0'] = "id" - params['accountingDocumentAuditingList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -206,8 +208,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -270,8 +272,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.table.js b/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.table.js index ad940f90a..585e0a84a 100644 --- a/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.table.js +++ b/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.table.js @@ -40,24 +40,53 @@ class AccountingDocumentAuditingTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = AccountingDocumentAuditingBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class AccountingDocumentAuditingTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class AccountingDocumentAuditingTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.updateform.js b/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.updateform.js index a79a031ef..a5936ccd4 100644 --- a/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.updateform.js +++ b/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.updateform.js @@ -262,7 +262,7 @@ class AccountingDocumentAuditingUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class AccountingDocumentAuditingUpdateForm extends Component { initialValue: selectedRow.who, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class AccountingDocumentAuditingUpdateForm extends Component { initialValue: selectedRow.comments, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -298,7 +298,7 @@ class AccountingDocumentAuditingUpdateForm extends Component { initialValue: selectedRow.makeDate, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.app.js b/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.app.js index b5ea6c362..539efeae5 100644 --- a/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.app.js +++ b/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class AccountingDocumentConfirmationBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class AccountingDocumentConfirmationBizApp extends React.PureComponent { buildRouters = () =>{ const {AccountingDocumentConfirmationDashboard} = GlobalComponents - const {AccountingDocumentConfirmationPreference} = GlobalComponents + const {AccountingDocumentConfirmationPermission} = GlobalComponents + const {AccountingDocumentConfirmationProfile} = GlobalComponents const routers=[ {path:"/accountingDocumentConfirmation/:id/dashboard", component: AccountingDocumentConfirmationDashboard}, - {path:"/accountingDocumentConfirmation/:id/preference", component: AccountingDocumentConfirmationPreference}, + {path:"/accountingDocumentConfirmation/:id/profile", component: AccountingDocumentConfirmationProfile}, + {path:"/accountingDocumentConfirmation/:id/permission", component: AccountingDocumentConfirmationPermission}, diff --git a/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.associateform.js b/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.associateform.js index 668b31e4e..ff6f3e507 100644 --- a/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.associateform.js +++ b/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.associateform.js @@ -20,7 +20,7 @@ const testValues = {}; const testValues = { who: '财务会计', comments: '确认通过', - makeDate: '2016-12-26', + makeDate: '2016-10-29', } */ @@ -140,7 +140,7 @@ class AccountingDocumentConfirmationAssociateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -150,7 +150,7 @@ class AccountingDocumentConfirmationAssociateForm extends Component { {getFieldDecorator('comments', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -160,7 +160,7 @@ class AccountingDocumentConfirmationAssociateForm extends Component { {getFieldDecorator('makeDate', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.associateform.less b/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.associateform.less +++ b/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.base.js b/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.base.js index ebf590e2b..245ea7a5e 100644 --- a/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.base.js +++ b/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.base.js @@ -1,100 +1,80 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"会计的确认文件", menuFor: "accountingDocumentConfirmation", subItems: [ - {name: 'accountingDocumentList', displayName:'会计凭证', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'accountingDocumentList', displayName:'会计凭证', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + who: '谁', + comments: '评论', + makeDate: '制造日期', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'accountingDocumentConfirmation') }, - { title: '谁', debugtype: 'string', dataIndex: 'who', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: '评论', debugtype: 'string', dataIndex: 'comments', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: '制造日期', dataIndex: 'makeDate', render: (text, record) =>renderDateCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'accountingDocumentConfirmation') , sorter: true }, + { title: fieldLabels.who, debugtype: 'string', dataIndex: 'who', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.comments, debugtype: 'string', dataIndex: 'comments', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.makeDate, dataIndex: 'makeDate', render: (text, record) =>renderDateCell(text,record), sorter: true }, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({accountingDocumentConfirmation,targetComponent})=>{ -const fieldLabels = { - id: '序号', - who: '谁', - comments: '评论', - makeDate: '制造日期', + + + const {AccountingDocumentConfirmationService} = GlobalComponents + // const userContext = null + return ( + +{accountingDocumentConfirmation.id} +{accountingDocumentConfirmation.who} +{accountingDocumentConfirmation.comments} +{ moment(accountingDocumentConfirmation.makeDate).format('YYYY-MM-DD')} + + {buildTransferModal(accountingDocumentConfirmation,targetComponent)} + + ) } + + -const AccountingDocumentConfirmationBase={menuData,displayColumns,fieldLabels} +const AccountingDocumentConfirmationBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default AccountingDocumentConfirmationBase diff --git a/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.createform.js b/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.createform.js index c3e584b66..907c6a36c 100644 --- a/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.createform.js +++ b/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.createform.js @@ -19,7 +19,7 @@ const testValues = {}; const testValues = { who: '财务会计', comments: '确认通过', - makeDate: '2018-06-18', + makeDate: '2016-10-28', } */ @@ -208,7 +208,7 @@ class AccountingDocumentConfirmationCreateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -218,7 +218,7 @@ class AccountingDocumentConfirmationCreateForm extends Component { {getFieldDecorator('comments', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -228,7 +228,7 @@ class AccountingDocumentConfirmationCreateForm extends Component { {getFieldDecorator('makeDate', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.dashboard.js b/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.dashboard.js index 922849fd7..5f77b6664 100644 --- a/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.dashboard.js +++ b/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -138,6 +138,7 @@ class AccountingDocumentConfirmationDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -146,13 +147,17 @@ class AccountingDocumentConfirmationDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.model.js b/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.model.js index e5a71fd7d..74264057f 100644 --- a/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.model.js +++ b/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/accountingDocumentConfirmation/${id}/list/\AccountingDocumentList/会计凭证+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/accountingDocumentConfirmation/${id}/list/AccountingDocumentList/会计凭证+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateAccountingDocument({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/accountingDocumentConfirmation/${id}/list/\AccountingDocumentList/会计凭证列表`, state: newPlayload } + const location = { pathname: `/accountingDocumentConfirmation/${id}/list/AccountingDocumentList/会计凭证列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextAccountingDocumentUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.permission.js b/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.permission.js new file mode 100644 index 000000000..06588db5d --- /dev/null +++ b/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.permission.js @@ -0,0 +1,86 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './AccountingDocumentConfirmation.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (accountingDocumentConfirmation,targetComponent) =>{ + const userContext = null + return ( + +{accountingDocumentConfirmation.id} +{accountingDocumentConfirmation.who} +{accountingDocumentConfirmation.comments} +{ moment(accountingDocumentConfirmation.makeDate).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = accountingDocumentConfirmation => { + const {AccountingDocumentConfirmationBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class AccountingDocumentConfirmationPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const accountingDocumentConfirmation = this.props.accountingDocumentConfirmation; + const { id,displayName, accountingDocumentCount } = accountingDocumentConfirmation + const cardsData = {cardsName:"会计的确认文件",cardsFor: "accountingDocumentConfirmation",cardsSource: accountingDocumentConfirmation, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + accountingDocumentConfirmation: state._accountingDocumentConfirmation, +}))(Form.create()(AccountingDocumentConfirmationPermission)) + diff --git a/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.permission.less b/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.preference.js b/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.preference.js index 71a952a39..7013ced39 100644 --- a/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.preference.js +++ b/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.preference.js @@ -301,8 +301,12 @@ class AccountingDocumentConfirmationPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, accountingDocumentCount } = this.props.accountingDocumentConfirmation - const cardsData = {cardsName:"会计的确认文件",cardsFor: "accountingDocumentConfirmation",cardsSource: this.props.accountingDocumentConfirmation, + const accountingDocumentConfirmation = this.props.accountingDocumentConfirmation; + const { id,displayName, accountingDocumentCount } = accountingDocumentConfirmation + + + + const cardsData = {cardsName:"会计的确认文件",cardsFor: "accountingDocumentConfirmation",cardsSource: accountingDocumentConfirmation, subItems: [ ], diff --git a/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.profile.js b/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.profile.js new file mode 100644 index 000000000..3ea2bd3c5 --- /dev/null +++ b/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.profile.js @@ -0,0 +1,93 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './AccountingDocumentConfirmation.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (accountingDocumentConfirmation,targetComponent) =>{ + const userContext = null + return ( + +{accountingDocumentConfirmation.id} +{accountingDocumentConfirmation.who} +{accountingDocumentConfirmation.comments} +{ moment(accountingDocumentConfirmation.makeDate).format('YYYY-MM-DD')} + + + ) +} + + + +class AccountingDocumentConfirmationProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const accountingDocumentConfirmation = this.props.accountingDocumentConfirmation; + const { id,displayName, accountingDocumentCount } = accountingDocumentConfirmation + + const cardsData = {cardsName:"会计的确认文件",cardsFor: "accountingDocumentConfirmation",cardsSource: accountingDocumentConfirmation, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + accountingDocumentConfirmation: state._accountingDocumentConfirmation, +}))(Form.create()(AccountingDocumentConfirmationProfile)) + diff --git a/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.profile.less b/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.search.js b/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.search.js index ee6bf0be3..924975e29 100644 --- a/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.search.js +++ b/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.searchform.js b/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.searchform.js index 6f70d66d3..72f656c09 100644 --- a/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.searchform.js +++ b/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`accountingDocumentConfirmationList.searchField`] = fieldName - value[`accountingDocumentConfirmationList.searchVerb`] = searchVerb - value[`accountingDocumentConfirmationList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,11 +127,12 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'who')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'comments')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'who')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'comments')) console.log("the final parameter", paramList) @@ -147,11 +148,12 @@ componentDidMount() { } - params['accountingDocumentConfirmationList'] = 1 - params['accountingDocumentConfirmationList.orderBy.0'] = "id" - params['accountingDocumentConfirmationList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -206,8 +208,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -270,8 +272,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.table.js b/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.table.js index fa47df5ad..d5e6ac716 100644 --- a/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.table.js +++ b/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.table.js @@ -40,24 +40,53 @@ class AccountingDocumentConfirmationTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = AccountingDocumentConfirmationBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class AccountingDocumentConfirmationTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class AccountingDocumentConfirmationTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.updateform.js b/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.updateform.js index 10c3fdf51..051b643ec 100644 --- a/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.updateform.js +++ b/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.updateform.js @@ -262,7 +262,7 @@ class AccountingDocumentConfirmationUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class AccountingDocumentConfirmationUpdateForm extends Component { initialValue: selectedRow.who, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class AccountingDocumentConfirmationUpdateForm extends Component { initialValue: selectedRow.comments, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -298,7 +298,7 @@ class AccountingDocumentConfirmationUpdateForm extends Component { initialValue: selectedRow.makeDate, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.app.js b/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.app.js index 0d5304c46..47809a370 100644 --- a/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.app.js +++ b/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class AccountingDocumentCreationBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class AccountingDocumentCreationBizApp extends React.PureComponent { buildRouters = () =>{ const {AccountingDocumentCreationDashboard} = GlobalComponents - const {AccountingDocumentCreationPreference} = GlobalComponents + const {AccountingDocumentCreationPermission} = GlobalComponents + const {AccountingDocumentCreationProfile} = GlobalComponents const routers=[ {path:"/accountingDocumentCreation/:id/dashboard", component: AccountingDocumentCreationDashboard}, - {path:"/accountingDocumentCreation/:id/preference", component: AccountingDocumentCreationPreference}, + {path:"/accountingDocumentCreation/:id/profile", component: AccountingDocumentCreationProfile}, + {path:"/accountingDocumentCreation/:id/permission", component: AccountingDocumentCreationPermission}, diff --git a/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.associateform.js b/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.associateform.js index d9a1e8198..d5e7bc16c 100644 --- a/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.associateform.js +++ b/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.associateform.js @@ -20,7 +20,7 @@ const testValues = {}; const testValues = { who: '财务会计', comments: '确认提交', - makeDate: '2018-05-14', + makeDate: '2018-07-09', } */ @@ -140,7 +140,7 @@ class AccountingDocumentCreationAssociateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -150,7 +150,7 @@ class AccountingDocumentCreationAssociateForm extends Component { {getFieldDecorator('comments', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -160,7 +160,7 @@ class AccountingDocumentCreationAssociateForm extends Component { {getFieldDecorator('makeDate', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.associateform.less b/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.associateform.less +++ b/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.base.js b/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.base.js index 7d53d81a8..86e40f01c 100644 --- a/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.base.js +++ b/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.base.js @@ -1,100 +1,80 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"会计文件的创建", menuFor: "accountingDocumentCreation", subItems: [ - {name: 'accountingDocumentList', displayName:'会计凭证', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'accountingDocumentList', displayName:'会计凭证', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + who: '谁', + comments: '评论', + makeDate: '制造日期', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'accountingDocumentCreation') }, - { title: '谁', debugtype: 'string', dataIndex: 'who', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: '评论', debugtype: 'string', dataIndex: 'comments', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: '制造日期', dataIndex: 'makeDate', render: (text, record) =>renderDateCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'accountingDocumentCreation') , sorter: true }, + { title: fieldLabels.who, debugtype: 'string', dataIndex: 'who', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.comments, debugtype: 'string', dataIndex: 'comments', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.makeDate, dataIndex: 'makeDate', render: (text, record) =>renderDateCell(text,record), sorter: true }, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({accountingDocumentCreation,targetComponent})=>{ -const fieldLabels = { - id: '序号', - who: '谁', - comments: '评论', - makeDate: '制造日期', + + + const {AccountingDocumentCreationService} = GlobalComponents + // const userContext = null + return ( + +{accountingDocumentCreation.id} +{accountingDocumentCreation.who} +{accountingDocumentCreation.comments} +{ moment(accountingDocumentCreation.makeDate).format('YYYY-MM-DD')} + + {buildTransferModal(accountingDocumentCreation,targetComponent)} + + ) } + + -const AccountingDocumentCreationBase={menuData,displayColumns,fieldLabels} +const AccountingDocumentCreationBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default AccountingDocumentCreationBase diff --git a/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.createform.js b/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.createform.js index be24146ef..666438cc3 100644 --- a/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.createform.js +++ b/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.createform.js @@ -19,7 +19,7 @@ const testValues = {}; const testValues = { who: '财务会计', comments: '确认提交', - makeDate: '2018-07-22', + makeDate: '2018-06-25', } */ @@ -208,7 +208,7 @@ class AccountingDocumentCreationCreateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -218,7 +218,7 @@ class AccountingDocumentCreationCreateForm extends Component { {getFieldDecorator('comments', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -228,7 +228,7 @@ class AccountingDocumentCreationCreateForm extends Component { {getFieldDecorator('makeDate', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.dashboard.js b/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.dashboard.js index fc4bfb46e..262acbcff 100644 --- a/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.dashboard.js +++ b/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -138,6 +138,7 @@ class AccountingDocumentCreationDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -146,13 +147,17 @@ class AccountingDocumentCreationDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.model.js b/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.model.js index cb0323ebc..3c7ebc7ca 100644 --- a/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.model.js +++ b/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/accountingDocumentCreation/${id}/list/\AccountingDocumentList/会计凭证+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/accountingDocumentCreation/${id}/list/AccountingDocumentList/会计凭证+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateAccountingDocument({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/accountingDocumentCreation/${id}/list/\AccountingDocumentList/会计凭证列表`, state: newPlayload } + const location = { pathname: `/accountingDocumentCreation/${id}/list/AccountingDocumentList/会计凭证列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextAccountingDocumentUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.permission.js b/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.permission.js new file mode 100644 index 000000000..6d776d740 --- /dev/null +++ b/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.permission.js @@ -0,0 +1,86 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './AccountingDocumentCreation.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (accountingDocumentCreation,targetComponent) =>{ + const userContext = null + return ( + +{accountingDocumentCreation.id} +{accountingDocumentCreation.who} +{accountingDocumentCreation.comments} +{ moment(accountingDocumentCreation.makeDate).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = accountingDocumentCreation => { + const {AccountingDocumentCreationBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class AccountingDocumentCreationPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const accountingDocumentCreation = this.props.accountingDocumentCreation; + const { id,displayName, accountingDocumentCount } = accountingDocumentCreation + const cardsData = {cardsName:"会计文件的创建",cardsFor: "accountingDocumentCreation",cardsSource: accountingDocumentCreation, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + accountingDocumentCreation: state._accountingDocumentCreation, +}))(Form.create()(AccountingDocumentCreationPermission)) + diff --git a/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.permission.less b/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.preference.js b/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.preference.js index 6844d2d42..bcde6bc88 100644 --- a/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.preference.js +++ b/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.preference.js @@ -301,8 +301,12 @@ class AccountingDocumentCreationPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, accountingDocumentCount } = this.props.accountingDocumentCreation - const cardsData = {cardsName:"会计文件的创建",cardsFor: "accountingDocumentCreation",cardsSource: this.props.accountingDocumentCreation, + const accountingDocumentCreation = this.props.accountingDocumentCreation; + const { id,displayName, accountingDocumentCount } = accountingDocumentCreation + + + + const cardsData = {cardsName:"会计文件的创建",cardsFor: "accountingDocumentCreation",cardsSource: accountingDocumentCreation, subItems: [ ], diff --git a/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.profile.js b/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.profile.js new file mode 100644 index 000000000..096d6d74a --- /dev/null +++ b/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.profile.js @@ -0,0 +1,93 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './AccountingDocumentCreation.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (accountingDocumentCreation,targetComponent) =>{ + const userContext = null + return ( + +{accountingDocumentCreation.id} +{accountingDocumentCreation.who} +{accountingDocumentCreation.comments} +{ moment(accountingDocumentCreation.makeDate).format('YYYY-MM-DD')} + + + ) +} + + + +class AccountingDocumentCreationProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const accountingDocumentCreation = this.props.accountingDocumentCreation; + const { id,displayName, accountingDocumentCount } = accountingDocumentCreation + + const cardsData = {cardsName:"会计文件的创建",cardsFor: "accountingDocumentCreation",cardsSource: accountingDocumentCreation, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + accountingDocumentCreation: state._accountingDocumentCreation, +}))(Form.create()(AccountingDocumentCreationProfile)) + diff --git a/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.profile.less b/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.search.js b/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.search.js index 35071a0a7..aab875ffd 100644 --- a/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.search.js +++ b/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.searchform.js b/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.searchform.js index b32370282..2e904dcaf 100644 --- a/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.searchform.js +++ b/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`accountingDocumentCreationList.searchField`] = fieldName - value[`accountingDocumentCreationList.searchVerb`] = searchVerb - value[`accountingDocumentCreationList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,11 +127,12 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'who')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'comments')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'who')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'comments')) console.log("the final parameter", paramList) @@ -147,11 +148,12 @@ componentDidMount() { } - params['accountingDocumentCreationList'] = 1 - params['accountingDocumentCreationList.orderBy.0'] = "id" - params['accountingDocumentCreationList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -206,8 +208,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -270,8 +272,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.table.js b/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.table.js index 5171e1dd7..4eeb5d964 100644 --- a/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.table.js +++ b/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.table.js @@ -40,24 +40,53 @@ class AccountingDocumentCreationTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = AccountingDocumentCreationBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class AccountingDocumentCreationTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class AccountingDocumentCreationTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.updateform.js b/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.updateform.js index 16c570dad..d23ea4bf9 100644 --- a/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.updateform.js +++ b/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.updateform.js @@ -262,7 +262,7 @@ class AccountingDocumentCreationUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class AccountingDocumentCreationUpdateForm extends Component { initialValue: selectedRow.who, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class AccountingDocumentCreationUpdateForm extends Component { initialValue: selectedRow.comments, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -298,7 +298,7 @@ class AccountingDocumentCreationUpdateForm extends Component { initialValue: selectedRow.makeDate, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.app.js b/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.app.js index 500ef2749..f88b63b1d 100644 --- a/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.app.js +++ b/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class AccountingDocumentLineBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -157,12 +166,14 @@ class AccountingDocumentLineBizApp extends React.PureComponent { buildRouters = () =>{ const {AccountingDocumentLineDashboard} = GlobalComponents - const {AccountingDocumentLinePreference} = GlobalComponents + const {AccountingDocumentLinePermission} = GlobalComponents + const {AccountingDocumentLineProfile} = GlobalComponents const routers=[ {path:"/accountingDocumentLine/:id/dashboard", component: AccountingDocumentLineDashboard}, - {path:"/accountingDocumentLine/:id/preference", component: AccountingDocumentLinePreference}, + {path:"/accountingDocumentLine/:id/profile", component: AccountingDocumentLineProfile}, + {path:"/accountingDocumentLine/:id/permission", component: AccountingDocumentLinePermission}, diff --git a/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.associateform.js b/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.associateform.js index 908018b42..862c76127 100644 --- a/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.associateform.js +++ b/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.associateform.js @@ -21,7 +21,7 @@ const testValues = { name: '收到存款', code: 'AS9999', direct: '借', - amount: '930454.44', + amount: '963564.88', belongsToId: 'AD000001', accountingSubjectId: 'AS000001', } @@ -142,7 +142,7 @@ class AccountingDocumentLineAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -152,7 +152,7 @@ class AccountingDocumentLineAssociateForm extends Component { {getFieldDecorator('code', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -162,7 +162,7 @@ class AccountingDocumentLineAssociateForm extends Component { {getFieldDecorator('direct', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -172,7 +172,7 @@ class AccountingDocumentLineAssociateForm extends Component { {getFieldDecorator('amount', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.associateform.less b/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.associateform.less +++ b/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.base.js b/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.base.js index 4976b8be4..f0c8ceb89 100644 --- a/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.base.js +++ b/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.base.js @@ -1,10 +1,33 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"会计凭证行", menuFor: "accountingDocumentLine", subItems: [ @@ -12,81 +35,6 @@ const menuData = {menuName:"会计凭证行", menuFor: "accountingDocumentLine", ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) - -} - -const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record) }, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: '代码', debugtype: 'string', dataIndex: 'code', width: '10',render: (text, record)=>renderTextCell(text,record) }, - { title: '直接', debugtype: 'string', dataIndex: 'direct', width: '5',render: (text, record)=>renderTextCell(text,record) }, - { title: '金额', dataIndex: 'amount', className:'money', render: (text, record) => renderMoneyCell(text, record) }, - { title: '属于', dataIndex: 'belongsTo', render: (text, record) => renderReferenceCell(text, record)}, - { title: '会计科目', dataIndex: 'accountingSubject', render: (text, record) => renderReferenceCell(text, record)}, - -] - const fieldLabels = { id: '序号', name: '名称', @@ -98,8 +46,53 @@ const fieldLabels = { } +const displayColumns = [ + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.code, debugtype: 'string', dataIndex: 'code', width: '10',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.direct, debugtype: 'string', dataIndex: 'direct', width: '5',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.amount, dataIndex: 'amount', className:'money', render: (text, record) => renderMoneyCell(text, record), sorter: true }, + { title: fieldLabels.belongsTo, dataIndex: 'belongsTo', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.accountingSubject, dataIndex: 'accountingSubject', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + +] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({accountingDocumentLine,targetComponent})=>{ + + + + const {AccountingDocumentLineService} = GlobalComponents + // const userContext = null + return ( + +{accountingDocumentLine.id} +{accountingDocumentLine.name} +{accountingDocumentLine.code} +{accountingDocumentLine.direct} +{accountingDocumentLine.amount} +{accountingDocumentLine.belongsTo==null?appLocaleName(userContext,"NotAssigned"):`${accountingDocumentLine.belongsTo.displayName}(${accountingDocumentLine.belongsTo.id})`} + + showTransferModel(targetComponent,"属于","accountingDocument",AccountingDocumentLineService.requestCandidateBelongsTo, + AccountingDocumentLineService.transferToAnotherBelongsTo,"anotherBelongsToId",accountingDocumentLine.belongsTo?accountingDocumentLine.belongsTo.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{accountingDocumentLine.accountingSubject==null?appLocaleName(userContext,"NotAssigned"):`${accountingDocumentLine.accountingSubject.displayName}(${accountingDocumentLine.accountingSubject.id})`} + + showTransferModel(targetComponent,"会计科目","accountingSubject",AccountingDocumentLineService.requestCandidateAccountingSubject, + AccountingDocumentLineService.transferToAnotherAccountingSubject,"anotherAccountingSubjectId",accountingDocumentLine.accountingSubject?accountingDocumentLine.accountingSubject.id:"")} + style={{fontSize: 20,color:"red"}} /> + + + {buildTransferModal(accountingDocumentLine,targetComponent)} + + ) + +} + + + -const AccountingDocumentLineBase={menuData,displayColumns,fieldLabels} +const AccountingDocumentLineBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default AccountingDocumentLineBase diff --git a/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.createform.js b/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.createform.js index 2a165face..9ec0ce39d 100644 --- a/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.createform.js +++ b/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.createform.js @@ -20,7 +20,7 @@ const testValues = { name: '收到存款', code: 'AS9999', direct: '借', - amount: '767667.25', + amount: '788448.31', belongsToId: 'AD000001', accountingSubjectId: 'AS000001', } @@ -211,7 +211,7 @@ class AccountingDocumentLineCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -221,7 +221,7 @@ class AccountingDocumentLineCreateForm extends Component { {getFieldDecorator('code', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -231,7 +231,7 @@ class AccountingDocumentLineCreateForm extends Component { {getFieldDecorator('direct', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -241,7 +241,7 @@ class AccountingDocumentLineCreateForm extends Component { {getFieldDecorator('amount', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.dashboard.js b/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.dashboard.js index 90be6f619..9483cac58 100644 --- a/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.dashboard.js +++ b/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -150,6 +150,7 @@ class AccountingDocumentLineDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -158,13 +159,17 @@ class AccountingDocumentLineDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.model.js b/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.model.js index 5cac8b39c..bfae759a3 100644 --- a/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.model.js +++ b/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' diff --git a/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.permission.js b/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.permission.js new file mode 100644 index 000000000..981666881 --- /dev/null +++ b/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.permission.js @@ -0,0 +1,87 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './AccountingDocumentLine.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (accountingDocumentLine,targetComponent) =>{ + const userContext = null + return ( + +{accountingDocumentLine.id} +{accountingDocumentLine.name} +{accountingDocumentLine.code} +{accountingDocumentLine.direct} +{accountingDocumentLine.amount} + + + ) +} + + +const renderPermissionSetting = accountingDocumentLine => { + const {AccountingDocumentLineBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class AccountingDocumentLinePermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const accountingDocumentLine = this.props.accountingDocumentLine; + const { id,displayName, } = accountingDocumentLine + const cardsData = {cardsName:"会计凭证行",cardsFor: "accountingDocumentLine",cardsSource: accountingDocumentLine, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + accountingDocumentLine: state._accountingDocumentLine, +}))(Form.create()(AccountingDocumentLinePermission)) + diff --git a/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.permission.less b/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.preference.js b/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.preference.js index f66223862..9380a1935 100644 --- a/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.preference.js +++ b/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.preference.js @@ -314,8 +314,12 @@ class AccountingDocumentLinePreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, } = this.props.accountingDocumentLine - const cardsData = {cardsName:"会计凭证行",cardsFor: "accountingDocumentLine",cardsSource: this.props.accountingDocumentLine, + const accountingDocumentLine = this.props.accountingDocumentLine; + const { id,displayName, } = accountingDocumentLine + + + + const cardsData = {cardsName:"会计凭证行",cardsFor: "accountingDocumentLine",cardsSource: accountingDocumentLine, subItems: [ ], diff --git a/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.profile.js b/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.profile.js new file mode 100644 index 000000000..75ee4b72b --- /dev/null +++ b/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.profile.js @@ -0,0 +1,94 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './AccountingDocumentLine.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (accountingDocumentLine,targetComponent) =>{ + const userContext = null + return ( + +{accountingDocumentLine.id} +{accountingDocumentLine.name} +{accountingDocumentLine.code} +{accountingDocumentLine.direct} +{accountingDocumentLine.amount} + + + ) +} + + + +class AccountingDocumentLineProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const accountingDocumentLine = this.props.accountingDocumentLine; + const { id,displayName, } = accountingDocumentLine + + const cardsData = {cardsName:"会计凭证行",cardsFor: "accountingDocumentLine",cardsSource: accountingDocumentLine, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + accountingDocumentLine: state._accountingDocumentLine, +}))(Form.create()(AccountingDocumentLineProfile)) + diff --git a/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.profile.less b/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.search.js b/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.search.js index 545a138bf..515b752c8 100644 --- a/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.search.js +++ b/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.searchform.js b/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.searchform.js index 2b78f098b..fef72bbe0 100644 --- a/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.searchform.js +++ b/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`accountingDocumentLineList.searchField`] = fieldName - value[`accountingDocumentLineList.searchVerb`] = searchVerb - value[`accountingDocumentLineList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,14 +127,15 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'code')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'direct')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'belongsTo')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'accountingSubject')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'code')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'direct')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'belongsTo')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'accountingSubject')) console.log("the final parameter", paramList) @@ -150,11 +151,12 @@ componentDidMount() { } - params['accountingDocumentLineList'] = 1 - params['accountingDocumentLineList.orderBy.0'] = "id" - params['accountingDocumentLineList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -209,8 +211,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -311,8 +313,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.table.js b/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.table.js index 79a973839..c92159f50 100644 --- a/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.table.js +++ b/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.table.js @@ -40,24 +40,53 @@ class AccountingDocumentLineTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = AccountingDocumentLineBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class AccountingDocumentLineTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class AccountingDocumentLineTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.updateform.js b/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.updateform.js index 70d8d23ab..0be1059a3 100644 --- a/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.updateform.js +++ b/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.updateform.js @@ -261,7 +261,7 @@ class AccountingDocumentLineUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class AccountingDocumentLineUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -285,7 +285,7 @@ class AccountingDocumentLineUpdateForm extends Component { initialValue: selectedRow.code, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -297,7 +297,7 @@ class AccountingDocumentLineUpdateForm extends Component { initialValue: selectedRow.direct, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -309,7 +309,7 @@ class AccountingDocumentLineUpdateForm extends Component { initialValue: selectedRow.amount, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.app.js b/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.app.js index e0dadd09b..d202b633f 100644 --- a/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.app.js +++ b/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class AccountingDocumentPostingBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class AccountingDocumentPostingBizApp extends React.PureComponent { buildRouters = () =>{ const {AccountingDocumentPostingDashboard} = GlobalComponents - const {AccountingDocumentPostingPreference} = GlobalComponents + const {AccountingDocumentPostingPermission} = GlobalComponents + const {AccountingDocumentPostingProfile} = GlobalComponents const routers=[ {path:"/accountingDocumentPosting/:id/dashboard", component: AccountingDocumentPostingDashboard}, - {path:"/accountingDocumentPosting/:id/preference", component: AccountingDocumentPostingPreference}, + {path:"/accountingDocumentPosting/:id/profile", component: AccountingDocumentPostingProfile}, + {path:"/accountingDocumentPosting/:id/permission", component: AccountingDocumentPostingPermission}, diff --git a/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.associateform.js b/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.associateform.js index 7a4705262..abd44a588 100644 --- a/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.associateform.js +++ b/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.associateform.js @@ -20,7 +20,7 @@ const testValues = {}; const testValues = { who: '财务会计', comments: '审核通过,要都审核过了才通过哦', - makeDate: '2019-03-09', + makeDate: '2018-11-29', } */ @@ -140,7 +140,7 @@ class AccountingDocumentPostingAssociateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -150,7 +150,7 @@ class AccountingDocumentPostingAssociateForm extends Component { {getFieldDecorator('comments', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -160,7 +160,7 @@ class AccountingDocumentPostingAssociateForm extends Component { {getFieldDecorator('makeDate', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.associateform.less b/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.associateform.less +++ b/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.base.js b/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.base.js index 6abd7ca7c..203365f1d 100644 --- a/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.base.js +++ b/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.base.js @@ -1,100 +1,80 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"会计凭证过帐", menuFor: "accountingDocumentPosting", subItems: [ - {name: 'accountingDocumentList', displayName:'会计凭证', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'accountingDocumentList', displayName:'会计凭证', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + who: '谁', + comments: '评论', + makeDate: '制造日期', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'accountingDocumentPosting') }, - { title: '谁', debugtype: 'string', dataIndex: 'who', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: '评论', debugtype: 'string', dataIndex: 'comments', width: '19',render: (text, record)=>renderTextCell(text,record) }, - { title: '制造日期', dataIndex: 'makeDate', render: (text, record) =>renderDateCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'accountingDocumentPosting') , sorter: true }, + { title: fieldLabels.who, debugtype: 'string', dataIndex: 'who', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.comments, debugtype: 'string', dataIndex: 'comments', width: '19',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.makeDate, dataIndex: 'makeDate', render: (text, record) =>renderDateCell(text,record), sorter: true }, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({accountingDocumentPosting,targetComponent})=>{ -const fieldLabels = { - id: '序号', - who: '谁', - comments: '评论', - makeDate: '制造日期', + + + const {AccountingDocumentPostingService} = GlobalComponents + // const userContext = null + return ( + +{accountingDocumentPosting.id} +{accountingDocumentPosting.who} +{accountingDocumentPosting.comments} +{ moment(accountingDocumentPosting.makeDate).format('YYYY-MM-DD')} + + {buildTransferModal(accountingDocumentPosting,targetComponent)} + + ) } + + -const AccountingDocumentPostingBase={menuData,displayColumns,fieldLabels} +const AccountingDocumentPostingBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default AccountingDocumentPostingBase diff --git a/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.createform.js b/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.createform.js index c6aa14cc6..50870eb1e 100644 --- a/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.createform.js +++ b/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.createform.js @@ -19,7 +19,7 @@ const testValues = {}; const testValues = { who: '财务会计', comments: '审核通过,要都审核过了才通过哦', - makeDate: '2017-11-15', + makeDate: '2016-06-15', } */ @@ -208,7 +208,7 @@ class AccountingDocumentPostingCreateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -218,7 +218,7 @@ class AccountingDocumentPostingCreateForm extends Component { {getFieldDecorator('comments', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -228,7 +228,7 @@ class AccountingDocumentPostingCreateForm extends Component { {getFieldDecorator('makeDate', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.dashboard.js b/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.dashboard.js index 748829437..ea04a792a 100644 --- a/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.dashboard.js +++ b/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -138,6 +138,7 @@ class AccountingDocumentPostingDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -146,13 +147,17 @@ class AccountingDocumentPostingDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.model.js b/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.model.js index de9c2c43e..40ff7a3d6 100644 --- a/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.model.js +++ b/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/accountingDocumentPosting/${id}/list/\AccountingDocumentList/会计凭证+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/accountingDocumentPosting/${id}/list/AccountingDocumentList/会计凭证+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateAccountingDocument({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/accountingDocumentPosting/${id}/list/\AccountingDocumentList/会计凭证列表`, state: newPlayload } + const location = { pathname: `/accountingDocumentPosting/${id}/list/AccountingDocumentList/会计凭证列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextAccountingDocumentUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.permission.js b/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.permission.js new file mode 100644 index 000000000..bab17d325 --- /dev/null +++ b/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.permission.js @@ -0,0 +1,86 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './AccountingDocumentPosting.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (accountingDocumentPosting,targetComponent) =>{ + const userContext = null + return ( + +{accountingDocumentPosting.id} +{accountingDocumentPosting.who} +{accountingDocumentPosting.comments} +{ moment(accountingDocumentPosting.makeDate).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = accountingDocumentPosting => { + const {AccountingDocumentPostingBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class AccountingDocumentPostingPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const accountingDocumentPosting = this.props.accountingDocumentPosting; + const { id,displayName, accountingDocumentCount } = accountingDocumentPosting + const cardsData = {cardsName:"会计凭证过帐",cardsFor: "accountingDocumentPosting",cardsSource: accountingDocumentPosting, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + accountingDocumentPosting: state._accountingDocumentPosting, +}))(Form.create()(AccountingDocumentPostingPermission)) + diff --git a/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.permission.less b/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.preference.js b/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.preference.js index 70dc8b4c1..d4b412131 100644 --- a/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.preference.js +++ b/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.preference.js @@ -301,8 +301,12 @@ class AccountingDocumentPostingPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, accountingDocumentCount } = this.props.accountingDocumentPosting - const cardsData = {cardsName:"会计凭证过帐",cardsFor: "accountingDocumentPosting",cardsSource: this.props.accountingDocumentPosting, + const accountingDocumentPosting = this.props.accountingDocumentPosting; + const { id,displayName, accountingDocumentCount } = accountingDocumentPosting + + + + const cardsData = {cardsName:"会计凭证过帐",cardsFor: "accountingDocumentPosting",cardsSource: accountingDocumentPosting, subItems: [ ], diff --git a/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.profile.js b/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.profile.js new file mode 100644 index 000000000..b0cd9d2c3 --- /dev/null +++ b/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.profile.js @@ -0,0 +1,93 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './AccountingDocumentPosting.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (accountingDocumentPosting,targetComponent) =>{ + const userContext = null + return ( + +{accountingDocumentPosting.id} +{accountingDocumentPosting.who} +{accountingDocumentPosting.comments} +{ moment(accountingDocumentPosting.makeDate).format('YYYY-MM-DD')} + + + ) +} + + + +class AccountingDocumentPostingProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const accountingDocumentPosting = this.props.accountingDocumentPosting; + const { id,displayName, accountingDocumentCount } = accountingDocumentPosting + + const cardsData = {cardsName:"会计凭证过帐",cardsFor: "accountingDocumentPosting",cardsSource: accountingDocumentPosting, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + accountingDocumentPosting: state._accountingDocumentPosting, +}))(Form.create()(AccountingDocumentPostingProfile)) + diff --git a/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.profile.less b/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.search.js b/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.search.js index 3f3d4da2d..563e6e427 100644 --- a/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.search.js +++ b/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.searchform.js b/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.searchform.js index e4392dacf..c58c5aec8 100644 --- a/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.searchform.js +++ b/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`accountingDocumentPostingList.searchField`] = fieldName - value[`accountingDocumentPostingList.searchVerb`] = searchVerb - value[`accountingDocumentPostingList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,11 +127,12 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'who')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'comments')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'who')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'comments')) console.log("the final parameter", paramList) @@ -147,11 +148,12 @@ componentDidMount() { } - params['accountingDocumentPostingList'] = 1 - params['accountingDocumentPostingList.orderBy.0'] = "id" - params['accountingDocumentPostingList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -206,8 +208,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -270,8 +272,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.table.js b/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.table.js index 24647fec9..b3ad6919f 100644 --- a/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.table.js +++ b/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.table.js @@ -40,24 +40,53 @@ class AccountingDocumentPostingTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = AccountingDocumentPostingBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class AccountingDocumentPostingTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class AccountingDocumentPostingTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.updateform.js b/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.updateform.js index bd7fafbb2..b0fba548e 100644 --- a/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.updateform.js +++ b/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.updateform.js @@ -262,7 +262,7 @@ class AccountingDocumentPostingUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class AccountingDocumentPostingUpdateForm extends Component { initialValue: selectedRow.who, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class AccountingDocumentPostingUpdateForm extends Component { initialValue: selectedRow.comments, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -298,7 +298,7 @@ class AccountingDocumentPostingUpdateForm extends Component { initialValue: selectedRow.makeDate, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.app.js b/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.app.js index a41db03e5..86a8cf662 100644 --- a/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.app.js +++ b/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class AccountingDocumentTypeBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class AccountingDocumentTypeBizApp extends React.PureComponent { buildRouters = () =>{ const {AccountingDocumentTypeDashboard} = GlobalComponents - const {AccountingDocumentTypePreference} = GlobalComponents + const {AccountingDocumentTypePermission} = GlobalComponents + const {AccountingDocumentTypeProfile} = GlobalComponents const routers=[ {path:"/accountingDocumentType/:id/dashboard", component: AccountingDocumentTypeDashboard}, - {path:"/accountingDocumentType/:id/preference", component: AccountingDocumentTypePreference}, + {path:"/accountingDocumentType/:id/profile", component: AccountingDocumentTypeProfile}, + {path:"/accountingDocumentType/:id/permission", component: AccountingDocumentTypePermission}, diff --git a/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.associateform.js b/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.associateform.js index abcf7930f..5a57c43e2 100644 --- a/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.associateform.js +++ b/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.associateform.js @@ -140,7 +140,7 @@ class AccountingDocumentTypeAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -150,7 +150,7 @@ class AccountingDocumentTypeAssociateForm extends Component { {getFieldDecorator('description', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.associateform.less b/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.associateform.less +++ b/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.base.js b/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.base.js index 5713d0272..f1c7d4f04 100644 --- a/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.base.js +++ b/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.base.js @@ -1,100 +1,85 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"会计凭证类型", menuFor: "accountingDocumentType", subItems: [ - {name: 'accountingDocumentList', displayName:'会计凭证', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'accountingDocumentList', displayName:'会计凭证', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + name: '名称', + description: '描述', + accountingPeriod: '会计期间', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'accountingDocumentType') }, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: '描述', debugtype: 'string', dataIndex: 'description', width: '74',render: (text, record)=>renderTextCell(text,record) }, - { title: '会计期间', dataIndex: 'accountingPeriod', render: (text, record) => renderReferenceCell(text, record)}, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'accountingDocumentType') , sorter: true }, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.description, debugtype: 'string', dataIndex: 'description', width: '74',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.accountingPeriod, dataIndex: 'accountingPeriod', render: (text, record) => renderReferenceCell(text, record), sorter:true}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({accountingDocumentType,targetComponent})=>{ -const fieldLabels = { - id: '序号', - name: '名称', - description: '描述', - accountingPeriod: '会计期间', + + + const {AccountingDocumentTypeService} = GlobalComponents + // const userContext = null + return ( + +{accountingDocumentType.id} +{accountingDocumentType.name} +{accountingDocumentType.description} +{accountingDocumentType.accountingPeriod==null?appLocaleName(userContext,"NotAssigned"):`${accountingDocumentType.accountingPeriod.displayName}(${accountingDocumentType.accountingPeriod.id})`} + + showTransferModel(targetComponent,"会计期间","accountSet",AccountingDocumentTypeService.requestCandidateAccountingPeriod, + AccountingDocumentTypeService.transferToAnotherAccountingPeriod,"anotherAccountingPeriodId",accountingDocumentType.accountingPeriod?accountingDocumentType.accountingPeriod.id:"")} + style={{fontSize: 20,color:"red"}} /> + + + {buildTransferModal(accountingDocumentType,targetComponent)} + + ) } + + -const AccountingDocumentTypeBase={menuData,displayColumns,fieldLabels} +const AccountingDocumentTypeBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default AccountingDocumentTypeBase diff --git a/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.createform.js b/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.createform.js index 99e079954..4be493441 100644 --- a/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.createform.js +++ b/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.createform.js @@ -208,7 +208,7 @@ class AccountingDocumentTypeCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -218,7 +218,7 @@ class AccountingDocumentTypeCreateForm extends Component { {getFieldDecorator('description', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.dashboard.js b/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.dashboard.js index b04933e2f..825f9334c 100644 --- a/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.dashboard.js +++ b/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -143,6 +143,7 @@ class AccountingDocumentTypeDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -151,13 +152,17 @@ class AccountingDocumentTypeDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.model.js b/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.model.js index d6206d5f6..d2e022115 100644 --- a/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.model.js +++ b/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/accountingDocumentType/${id}/list/\AccountingDocumentList/会计凭证+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/accountingDocumentType/${id}/list/AccountingDocumentList/会计凭证+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateAccountingDocument({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/accountingDocumentType/${id}/list/\AccountingDocumentList/会计凭证列表`, state: newPlayload } + const location = { pathname: `/accountingDocumentType/${id}/list/AccountingDocumentList/会计凭证列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextAccountingDocumentUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.permission.js b/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.permission.js new file mode 100644 index 000000000..2b112d874 --- /dev/null +++ b/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.permission.js @@ -0,0 +1,85 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './AccountingDocumentType.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (accountingDocumentType,targetComponent) =>{ + const userContext = null + return ( + +{accountingDocumentType.id} +{accountingDocumentType.name} +{accountingDocumentType.description} + + + ) +} + + +const renderPermissionSetting = accountingDocumentType => { + const {AccountingDocumentTypeBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class AccountingDocumentTypePermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const accountingDocumentType = this.props.accountingDocumentType; + const { id,displayName, accountingDocumentCount } = accountingDocumentType + const cardsData = {cardsName:"会计凭证类型",cardsFor: "accountingDocumentType",cardsSource: accountingDocumentType, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + accountingDocumentType: state._accountingDocumentType, +}))(Form.create()(AccountingDocumentTypePermission)) + diff --git a/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.permission.less b/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.preference.js b/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.preference.js index 65a0f88e2..4d261f29e 100644 --- a/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.preference.js +++ b/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.preference.js @@ -306,8 +306,12 @@ class AccountingDocumentTypePreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, accountingDocumentCount } = this.props.accountingDocumentType - const cardsData = {cardsName:"会计凭证类型",cardsFor: "accountingDocumentType",cardsSource: this.props.accountingDocumentType, + const accountingDocumentType = this.props.accountingDocumentType; + const { id,displayName, accountingDocumentCount } = accountingDocumentType + + + + const cardsData = {cardsName:"会计凭证类型",cardsFor: "accountingDocumentType",cardsSource: accountingDocumentType, subItems: [ ], diff --git a/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.profile.js b/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.profile.js new file mode 100644 index 000000000..056e66c5f --- /dev/null +++ b/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.profile.js @@ -0,0 +1,92 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './AccountingDocumentType.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (accountingDocumentType,targetComponent) =>{ + const userContext = null + return ( + +{accountingDocumentType.id} +{accountingDocumentType.name} +{accountingDocumentType.description} + + + ) +} + + + +class AccountingDocumentTypeProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const accountingDocumentType = this.props.accountingDocumentType; + const { id,displayName, accountingDocumentCount } = accountingDocumentType + + const cardsData = {cardsName:"会计凭证类型",cardsFor: "accountingDocumentType",cardsSource: accountingDocumentType, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + accountingDocumentType: state._accountingDocumentType, +}))(Form.create()(AccountingDocumentTypeProfile)) + diff --git a/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.profile.less b/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.search.js b/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.search.js index b5cd28910..3b9cfc4e9 100644 --- a/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.search.js +++ b/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.searchform.js b/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.searchform.js index 6149344ab..d2b9f87cb 100644 --- a/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.searchform.js +++ b/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`accountingDocumentTypeList.searchField`] = fieldName - value[`accountingDocumentTypeList.searchVerb`] = searchVerb - value[`accountingDocumentTypeList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,12 +127,13 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'description')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'accountingPeriod')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'description')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'accountingPeriod')) console.log("the final parameter", paramList) @@ -148,11 +149,12 @@ componentDidMount() { } - params['accountingDocumentTypeList'] = 1 - params['accountingDocumentTypeList.orderBy.0'] = "id" - params['accountingDocumentTypeList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -207,8 +209,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -286,8 +288,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.table.js b/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.table.js index da20a7562..ea8a09786 100644 --- a/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.table.js +++ b/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.table.js @@ -40,24 +40,53 @@ class AccountingDocumentTypeTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = AccountingDocumentTypeBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class AccountingDocumentTypeTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class AccountingDocumentTypeTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.updateform.js b/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.updateform.js index c848c95db..948062399 100644 --- a/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.updateform.js +++ b/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.updateform.js @@ -261,7 +261,7 @@ class AccountingDocumentTypeUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class AccountingDocumentTypeUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -285,7 +285,7 @@ class AccountingDocumentTypeUpdateForm extends Component { initialValue: selectedRow.description, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.app.js b/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.app.js index f1f929aaa..7a439433a 100644 --- a/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.app.js +++ b/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class AccountingPeriodBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class AccountingPeriodBizApp extends React.PureComponent { buildRouters = () =>{ const {AccountingPeriodDashboard} = GlobalComponents - const {AccountingPeriodPreference} = GlobalComponents + const {AccountingPeriodPermission} = GlobalComponents + const {AccountingPeriodProfile} = GlobalComponents const routers=[ {path:"/accountingPeriod/:id/dashboard", component: AccountingPeriodDashboard}, - {path:"/accountingPeriod/:id/preference", component: AccountingPeriodPreference}, + {path:"/accountingPeriod/:id/profile", component: AccountingPeriodProfile}, + {path:"/accountingPeriod/:id/permission", component: AccountingPeriodPermission}, diff --git a/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.associateform.js b/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.associateform.js index aa8191c4f..b5040b9c9 100644 --- a/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.associateform.js +++ b/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.associateform.js @@ -19,8 +19,8 @@ const testValues = {}; /* const testValues = { name: '2017年1月', - startDate: '2016-07-04', - endDate: '2017-11-21', + startDate: '2016-06-03', + endDate: '2017-06-27', accountSetId: 'AS000001', } */ @@ -141,7 +141,7 @@ class AccountingPeriodAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -151,7 +151,7 @@ class AccountingPeriodAssociateForm extends Component { {getFieldDecorator('startDate', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -161,7 +161,7 @@ class AccountingPeriodAssociateForm extends Component { {getFieldDecorator('endDate', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.associateform.less b/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.associateform.less +++ b/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.base.js b/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.base.js index 8bd27c800..d4117a23e 100644 --- a/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.base.js +++ b/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.base.js @@ -1,102 +1,88 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"会计期间", menuFor: "accountingPeriod", subItems: [ - {name: 'accountingDocumentList', displayName:'会计凭证', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'accountingDocumentList', displayName:'会计凭证', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + name: '名称', + startDate: '开始日期', + endDate: '结束日期', + accountSet: '账套', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'accountingPeriod') }, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '12',render: (text, record)=>renderTextCell(text,record) }, - { title: '开始日期', dataIndex: 'startDate', render: (text, record) =>renderDateCell(text,record) }, - { title: '结束日期', dataIndex: 'endDate', render: (text, record) =>renderDateCell(text,record) }, - { title: '账套', dataIndex: 'accountSet', render: (text, record) => renderReferenceCell(text, record)}, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'accountingPeriod') , sorter: true }, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '12',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.startDate, dataIndex: 'startDate', render: (text, record) =>renderDateCell(text,record), sorter: true }, + { title: fieldLabels.endDate, dataIndex: 'endDate', render: (text, record) =>renderDateCell(text,record), sorter: true }, + { title: fieldLabels.accountSet, dataIndex: 'accountSet', render: (text, record) => renderReferenceCell(text, record), sorter:true}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({accountingPeriod,targetComponent})=>{ -const fieldLabels = { - id: '序号', - name: '名称', - startDate: '开始日期', - endDate: '结束日期', - accountSet: '账套', + + + const {AccountingPeriodService} = GlobalComponents + // const userContext = null + return ( + +{accountingPeriod.id} +{accountingPeriod.name} +{ moment(accountingPeriod.startDate).format('YYYY-MM-DD')} +{ moment(accountingPeriod.endDate).format('YYYY-MM-DD')} +{accountingPeriod.accountSet==null?appLocaleName(userContext,"NotAssigned"):`${accountingPeriod.accountSet.displayName}(${accountingPeriod.accountSet.id})`} + + showTransferModel(targetComponent,"账套","accountSet",AccountingPeriodService.requestCandidateAccountSet, + AccountingPeriodService.transferToAnotherAccountSet,"anotherAccountSetId",accountingPeriod.accountSet?accountingPeriod.accountSet.id:"")} + style={{fontSize: 20,color:"red"}} /> + + + {buildTransferModal(accountingPeriod,targetComponent)} + + ) } + + -const AccountingPeriodBase={menuData,displayColumns,fieldLabels} +const AccountingPeriodBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default AccountingPeriodBase diff --git a/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.createform.js b/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.createform.js index 3a0a1ef83..1136d66ef 100644 --- a/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.createform.js +++ b/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.createform.js @@ -18,8 +18,8 @@ const testValues = {}; /* const testValues = { name: '2017年1月', - startDate: '2019-01-19', - endDate: '2018-01-30', + startDate: '2017-04-20', + endDate: '2018-12-24', accountSetId: 'AS000001', } */ @@ -209,7 +209,7 @@ class AccountingPeriodCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -219,7 +219,7 @@ class AccountingPeriodCreateForm extends Component { {getFieldDecorator('startDate', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -229,7 +229,7 @@ class AccountingPeriodCreateForm extends Component { {getFieldDecorator('endDate', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.dashboard.js b/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.dashboard.js index 6c449cd92..e30b7da8c 100644 --- a/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.dashboard.js +++ b/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -144,6 +144,7 @@ class AccountingPeriodDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -152,13 +153,17 @@ class AccountingPeriodDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.model.js b/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.model.js index d02c18b70..55a325858 100644 --- a/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.model.js +++ b/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/accountingPeriod/${id}/list/\AccountingDocumentList/会计凭证+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/accountingPeriod/${id}/list/AccountingDocumentList/会计凭证+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateAccountingDocument({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/accountingPeriod/${id}/list/\AccountingDocumentList/会计凭证列表`, state: newPlayload } + const location = { pathname: `/accountingPeriod/${id}/list/AccountingDocumentList/会计凭证列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextAccountingDocumentUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.permission.js b/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.permission.js new file mode 100644 index 000000000..9a2ef9de8 --- /dev/null +++ b/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.permission.js @@ -0,0 +1,86 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './AccountingPeriod.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (accountingPeriod,targetComponent) =>{ + const userContext = null + return ( + +{accountingPeriod.id} +{accountingPeriod.name} +{ moment(accountingPeriod.startDate).format('YYYY-MM-DD')} +{ moment(accountingPeriod.endDate).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = accountingPeriod => { + const {AccountingPeriodBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class AccountingPeriodPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const accountingPeriod = this.props.accountingPeriod; + const { id,displayName, accountingDocumentCount } = accountingPeriod + const cardsData = {cardsName:"会计期间",cardsFor: "accountingPeriod",cardsSource: accountingPeriod, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + accountingPeriod: state._accountingPeriod, +}))(Form.create()(AccountingPeriodPermission)) + diff --git a/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.permission.less b/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.preference.js b/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.preference.js index 8539b7017..3fdffb22e 100644 --- a/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.preference.js +++ b/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.preference.js @@ -307,8 +307,12 @@ class AccountingPeriodPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, accountingDocumentCount } = this.props.accountingPeriod - const cardsData = {cardsName:"会计期间",cardsFor: "accountingPeriod",cardsSource: this.props.accountingPeriod, + const accountingPeriod = this.props.accountingPeriod; + const { id,displayName, accountingDocumentCount } = accountingPeriod + + + + const cardsData = {cardsName:"会计期间",cardsFor: "accountingPeriod",cardsSource: accountingPeriod, subItems: [ ], diff --git a/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.profile.js b/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.profile.js new file mode 100644 index 000000000..bac453a7d --- /dev/null +++ b/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.profile.js @@ -0,0 +1,93 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './AccountingPeriod.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (accountingPeriod,targetComponent) =>{ + const userContext = null + return ( + +{accountingPeriod.id} +{accountingPeriod.name} +{ moment(accountingPeriod.startDate).format('YYYY-MM-DD')} +{ moment(accountingPeriod.endDate).format('YYYY-MM-DD')} + + + ) +} + + + +class AccountingPeriodProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const accountingPeriod = this.props.accountingPeriod; + const { id,displayName, accountingDocumentCount } = accountingPeriod + + const cardsData = {cardsName:"会计期间",cardsFor: "accountingPeriod",cardsSource: accountingPeriod, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + accountingPeriod: state._accountingPeriod, +}))(Form.create()(AccountingPeriodProfile)) + diff --git a/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.profile.less b/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.search.js b/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.search.js index 8b753e9e1..3293443ce 100644 --- a/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.search.js +++ b/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.searchform.js b/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.searchform.js index 344c9ce79..879d79fcb 100644 --- a/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.searchform.js +++ b/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`accountingPeriodList.searchField`] = fieldName - value[`accountingPeriodList.searchVerb`] = searchVerb - value[`accountingPeriodList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,11 +127,12 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'accountSet')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'accountSet')) console.log("the final parameter", paramList) @@ -147,11 +148,12 @@ componentDidMount() { } - params['accountingPeriodList'] = 1 - params['accountingPeriodList.orderBy.0'] = "id" - params['accountingPeriodList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -206,8 +208,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -277,8 +279,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.table.js b/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.table.js index 4ad461d33..e1195b31f 100644 --- a/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.table.js +++ b/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.table.js @@ -40,24 +40,53 @@ class AccountingPeriodTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = AccountingPeriodBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class AccountingPeriodTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class AccountingPeriodTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.updateform.js b/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.updateform.js index 118cf9030..70463f1a7 100644 --- a/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.updateform.js +++ b/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.updateform.js @@ -263,7 +263,7 @@ class AccountingPeriodUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -275,7 +275,7 @@ class AccountingPeriodUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -287,7 +287,7 @@ class AccountingPeriodUpdateForm extends Component { initialValue: selectedRow.startDate, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -299,7 +299,7 @@ class AccountingPeriodUpdateForm extends Component { initialValue: selectedRow.endDate, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/accountingsubject/AccountingSubject.app.js b/bizui/src/bizcomponents/accountingsubject/AccountingSubject.app.js index 0e2bea37c..1559ff64d 100644 --- a/bizui/src/bizcomponents/accountingsubject/AccountingSubject.app.js +++ b/bizui/src/bizcomponents/accountingsubject/AccountingSubject.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class AccountingSubjectBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class AccountingSubjectBizApp extends React.PureComponent { buildRouters = () =>{ const {AccountingSubjectDashboard} = GlobalComponents - const {AccountingSubjectPreference} = GlobalComponents + const {AccountingSubjectPermission} = GlobalComponents + const {AccountingSubjectProfile} = GlobalComponents const routers=[ {path:"/accountingSubject/:id/dashboard", component: AccountingSubjectDashboard}, - {path:"/accountingSubject/:id/preference", component: AccountingSubjectPreference}, + {path:"/accountingSubject/:id/profile", component: AccountingSubjectProfile}, + {path:"/accountingSubject/:id/permission", component: AccountingSubjectPermission}, diff --git a/bizui/src/bizcomponents/accountingsubject/AccountingSubject.associateform.js b/bizui/src/bizcomponents/accountingsubject/AccountingSubject.associateform.js index d252adf2e..cfe092755 100644 --- a/bizui/src/bizcomponents/accountingsubject/AccountingSubject.associateform.js +++ b/bizui/src/bizcomponents/accountingsubject/AccountingSubject.associateform.js @@ -142,7 +142,7 @@ class AccountingSubjectAssociateForm extends Component { {getFieldDecorator('accountingSubjectCode', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -152,7 +152,7 @@ class AccountingSubjectAssociateForm extends Component { {getFieldDecorator('accountingSubjectName', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -162,7 +162,7 @@ class AccountingSubjectAssociateForm extends Component { {getFieldDecorator('accountingSubjectClassCode', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -172,7 +172,7 @@ class AccountingSubjectAssociateForm extends Component { {getFieldDecorator('accountingSubjectClassName', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/accountingsubject/AccountingSubject.associateform.less b/bizui/src/bizcomponents/accountingsubject/AccountingSubject.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/accountingsubject/AccountingSubject.associateform.less +++ b/bizui/src/bizcomponents/accountingsubject/AccountingSubject.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/accountingsubject/AccountingSubject.base.js b/bizui/src/bizcomponents/accountingsubject/AccountingSubject.base.js index fef3cccc4..bf3154a98 100644 --- a/bizui/src/bizcomponents/accountingsubject/AccountingSubject.base.js +++ b/bizui/src/bizcomponents/accountingsubject/AccountingSubject.base.js @@ -1,92 +1,41 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"会计科目", menuFor: "accountingSubject", subItems: [ - {name: 'accountingDocumentLineList', displayName:'会计凭证行', icon:'line',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'accountingDocumentLineList', displayName:'会计凭证行', icon:'line',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) - -} - -const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'accountingSubject') }, - { title: '会计科目代码', debugtype: 'string', dataIndex: 'accountingSubjectCode', width: '10',render: (text, record)=>renderTextCell(text,record) }, - { title: '会计科目名称', debugtype: 'string', dataIndex: 'accountingSubjectName', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: '会计科目类别代码', debugtype: 'int', dataIndex: 'accountingSubjectClassCode', width: '5',render: (text, record)=>renderTextCell(text,record) }, - { title: '会计科目类别名称', debugtype: 'string', dataIndex: 'accountingSubjectClassName', width: '10',render: (text, record)=>renderTextCell(text,record) }, - { title: '账套', dataIndex: 'accountSet', render: (text, record) => renderReferenceCell(text, record)}, - -] - const fieldLabels = { id: '序号', accountingSubjectCode: '会计科目代码', @@ -97,8 +46,46 @@ const fieldLabels = { } +const displayColumns = [ + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'accountingSubject') , sorter: true }, + { title: fieldLabels.accountingSubjectCode, debugtype: 'string', dataIndex: 'accountingSubjectCode', width: '10',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.accountingSubjectName, debugtype: 'string', dataIndex: 'accountingSubjectName', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.accountingSubjectClassCode, debugtype: 'int', dataIndex: 'accountingSubjectClassCode', width: '5',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.accountingSubjectClassName, debugtype: 'string', dataIndex: 'accountingSubjectClassName', width: '10',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.accountSet, dataIndex: 'accountSet', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + +] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({accountingSubject,targetComponent})=>{ + + + + const {AccountingSubjectService} = GlobalComponents + // const userContext = null + return ( + +{accountingSubject.id} +{accountingSubject.accountingSubjectCode} +{accountingSubject.accountingSubjectName} +{accountingSubject.accountingSubjectClassCode} +{accountingSubject.accountingSubjectClassName} +{accountingSubject.accountSet==null?appLocaleName(userContext,"NotAssigned"):`${accountingSubject.accountSet.displayName}(${accountingSubject.accountSet.id})`} + + showTransferModel(targetComponent,"账套","accountSet",AccountingSubjectService.requestCandidateAccountSet, + AccountingSubjectService.transferToAnotherAccountSet,"anotherAccountSetId",accountingSubject.accountSet?accountingSubject.accountSet.id:"")} + style={{fontSize: 20,color:"red"}} /> + + + {buildTransferModal(accountingSubject,targetComponent)} + + ) + +} + + + -const AccountingSubjectBase={menuData,displayColumns,fieldLabels} +const AccountingSubjectBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default AccountingSubjectBase diff --git a/bizui/src/bizcomponents/accountingsubject/AccountingSubject.createform.js b/bizui/src/bizcomponents/accountingsubject/AccountingSubject.createform.js index de88b7159..4e1b45640 100644 --- a/bizui/src/bizcomponents/accountingsubject/AccountingSubject.createform.js +++ b/bizui/src/bizcomponents/accountingsubject/AccountingSubject.createform.js @@ -210,7 +210,7 @@ class AccountingSubjectCreateForm extends Component { {getFieldDecorator('accountingSubjectCode', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -220,7 +220,7 @@ class AccountingSubjectCreateForm extends Component { {getFieldDecorator('accountingSubjectName', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -230,7 +230,7 @@ class AccountingSubjectCreateForm extends Component { {getFieldDecorator('accountingSubjectClassCode', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -240,7 +240,7 @@ class AccountingSubjectCreateForm extends Component { {getFieldDecorator('accountingSubjectClassName', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/accountingsubject/AccountingSubject.dashboard.js b/bizui/src/bizcomponents/accountingsubject/AccountingSubject.dashboard.js index c7a07169c..d9c69c4e5 100644 --- a/bizui/src/bizcomponents/accountingsubject/AccountingSubject.dashboard.js +++ b/bizui/src/bizcomponents/accountingsubject/AccountingSubject.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -145,6 +145,7 @@ class AccountingSubjectDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -153,13 +154,17 @@ class AccountingSubjectDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/accountingsubject/AccountingSubject.model.js b/bizui/src/bizcomponents/accountingsubject/AccountingSubject.model.js index 75268fb90..8b9d56a64 100644 --- a/bizui/src/bizcomponents/accountingsubject/AccountingSubject.model.js +++ b/bizui/src/bizcomponents/accountingsubject/AccountingSubject.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/accountingSubject/${id}/list/\AccountingDocumentLineList/会计凭证行+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/accountingSubject/${id}/list/AccountingDocumentLineList/会计凭证行+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateAccountingDocumentLine({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/accountingSubject/${id}/list/\AccountingDocumentLineList/会计凭证行列表`, state: newPlayload } + const location = { pathname: `/accountingSubject/${id}/list/AccountingDocumentLineList/会计凭证行列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextAccountingDocumentLineUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/accountingsubject/AccountingSubject.permission.js b/bizui/src/bizcomponents/accountingsubject/AccountingSubject.permission.js new file mode 100644 index 000000000..d7c694d10 --- /dev/null +++ b/bizui/src/bizcomponents/accountingsubject/AccountingSubject.permission.js @@ -0,0 +1,87 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './AccountingSubject.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (accountingSubject,targetComponent) =>{ + const userContext = null + return ( + +{accountingSubject.id} +{accountingSubject.accountingSubjectCode} +{accountingSubject.accountingSubjectName} +{accountingSubject.accountingSubjectClassCode} +{accountingSubject.accountingSubjectClassName} + + + ) +} + + +const renderPermissionSetting = accountingSubject => { + const {AccountingSubjectBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class AccountingSubjectPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const accountingSubject = this.props.accountingSubject; + const { id,displayName, accountingDocumentLineCount } = accountingSubject + const cardsData = {cardsName:"会计科目",cardsFor: "accountingSubject",cardsSource: accountingSubject, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + accountingSubject: state._accountingSubject, +}))(Form.create()(AccountingSubjectPermission)) + diff --git a/bizui/src/bizcomponents/accountingsubject/AccountingSubject.permission.less b/bizui/src/bizcomponents/accountingsubject/AccountingSubject.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/accountingsubject/AccountingSubject.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/accountingsubject/AccountingSubject.preference.js b/bizui/src/bizcomponents/accountingsubject/AccountingSubject.preference.js index b1135727e..6c84e3685 100644 --- a/bizui/src/bizcomponents/accountingsubject/AccountingSubject.preference.js +++ b/bizui/src/bizcomponents/accountingsubject/AccountingSubject.preference.js @@ -308,8 +308,12 @@ class AccountingSubjectPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, accountingDocumentLineCount } = this.props.accountingSubject - const cardsData = {cardsName:"会计科目",cardsFor: "accountingSubject",cardsSource: this.props.accountingSubject, + const accountingSubject = this.props.accountingSubject; + const { id,displayName, accountingDocumentLineCount } = accountingSubject + + + + const cardsData = {cardsName:"会计科目",cardsFor: "accountingSubject",cardsSource: accountingSubject, subItems: [ ], diff --git a/bizui/src/bizcomponents/accountingsubject/AccountingSubject.profile.js b/bizui/src/bizcomponents/accountingsubject/AccountingSubject.profile.js new file mode 100644 index 000000000..5881ad998 --- /dev/null +++ b/bizui/src/bizcomponents/accountingsubject/AccountingSubject.profile.js @@ -0,0 +1,94 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './AccountingSubject.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (accountingSubject,targetComponent) =>{ + const userContext = null + return ( + +{accountingSubject.id} +{accountingSubject.accountingSubjectCode} +{accountingSubject.accountingSubjectName} +{accountingSubject.accountingSubjectClassCode} +{accountingSubject.accountingSubjectClassName} + + + ) +} + + + +class AccountingSubjectProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const accountingSubject = this.props.accountingSubject; + const { id,displayName, accountingDocumentLineCount } = accountingSubject + + const cardsData = {cardsName:"会计科目",cardsFor: "accountingSubject",cardsSource: accountingSubject, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + accountingSubject: state._accountingSubject, +}))(Form.create()(AccountingSubjectProfile)) + diff --git a/bizui/src/bizcomponents/accountingsubject/AccountingSubject.profile.less b/bizui/src/bizcomponents/accountingsubject/AccountingSubject.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/accountingsubject/AccountingSubject.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/accountingsubject/AccountingSubject.search.js b/bizui/src/bizcomponents/accountingsubject/AccountingSubject.search.js index 278e0f1be..45adc1932 100644 --- a/bizui/src/bizcomponents/accountingsubject/AccountingSubject.search.js +++ b/bizui/src/bizcomponents/accountingsubject/AccountingSubject.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/accountingsubject/AccountingSubject.searchform.js b/bizui/src/bizcomponents/accountingsubject/AccountingSubject.searchform.js index 3045717aa..99616bbde 100644 --- a/bizui/src/bizcomponents/accountingsubject/AccountingSubject.searchform.js +++ b/bizui/src/bizcomponents/accountingsubject/AccountingSubject.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`accountingSubjectList.searchField`] = fieldName - value[`accountingSubjectList.searchVerb`] = searchVerb - value[`accountingSubjectList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,13 +127,14 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'accountingSubjectCode')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'accountingSubjectName')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'accountingSubjectClassName')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'accountSet')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'accountingSubjectCode')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'accountingSubjectName')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'accountingSubjectClassName')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'accountSet')) console.log("the final parameter", paramList) @@ -149,11 +150,12 @@ componentDidMount() { } - params['accountingSubjectList'] = 1 - params['accountingSubjectList.orderBy.0'] = "id" - params['accountingSubjectList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -208,8 +210,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -295,8 +297,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/accountingsubject/AccountingSubject.table.js b/bizui/src/bizcomponents/accountingsubject/AccountingSubject.table.js index 8eed4961a..cc9d89ccb 100644 --- a/bizui/src/bizcomponents/accountingsubject/AccountingSubject.table.js +++ b/bizui/src/bizcomponents/accountingsubject/AccountingSubject.table.js @@ -40,24 +40,53 @@ class AccountingSubjectTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = AccountingSubjectBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class AccountingSubjectTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class AccountingSubjectTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/accountingsubject/AccountingSubject.updateform.js b/bizui/src/bizcomponents/accountingsubject/AccountingSubject.updateform.js index 7a484c4c7..3d582c87f 100644 --- a/bizui/src/bizcomponents/accountingsubject/AccountingSubject.updateform.js +++ b/bizui/src/bizcomponents/accountingsubject/AccountingSubject.updateform.js @@ -261,7 +261,7 @@ class AccountingSubjectUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class AccountingSubjectUpdateForm extends Component { initialValue: selectedRow.accountingSubjectCode, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -285,7 +285,7 @@ class AccountingSubjectUpdateForm extends Component { initialValue: selectedRow.accountingSubjectName, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -297,7 +297,7 @@ class AccountingSubjectUpdateForm extends Component { initialValue: selectedRow.accountingSubjectClassCode, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -309,7 +309,7 @@ class AccountingSubjectUpdateForm extends Component { initialValue: selectedRow.accountingSubjectClassName, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/accountset/AccountSet.app.js b/bizui/src/bizcomponents/accountset/AccountSet.app.js index 5ce9d5585..f0a430662 100644 --- a/bizui/src/bizcomponents/accountset/AccountSet.app.js +++ b/bizui/src/bizcomponents/accountset/AccountSet.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class AccountSetBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -304,12 +313,14 @@ class AccountSetBizApp extends React.PureComponent { buildRouters = () =>{ const {AccountSetDashboard} = GlobalComponents - const {AccountSetPreference} = GlobalComponents + const {AccountSetPermission} = GlobalComponents + const {AccountSetProfile} = GlobalComponents const routers=[ {path:"/accountSet/:id/dashboard", component: AccountSetDashboard}, - {path:"/accountSet/:id/preference", component: AccountSetPreference}, + {path:"/accountSet/:id/profile", component: AccountSetProfile}, + {path:"/accountSet/:id/permission", component: AccountSetPermission}, diff --git a/bizui/src/bizcomponents/accountset/AccountSet.associateform.js b/bizui/src/bizcomponents/accountset/AccountSet.associateform.js index 9d8a51a95..77c967a3c 100644 --- a/bizui/src/bizcomponents/accountset/AccountSet.associateform.js +++ b/bizui/src/bizcomponents/accountset/AccountSet.associateform.js @@ -20,7 +20,7 @@ const testValues = {}; const testValues = { name: '账套2017', yearSet: '2017年', - effectiveDate: '2018-10-16', + effectiveDate: '2018-08-21', accountingSystem: '企业会计制度', domesticCurrencyCode: 'RMB', domesticCurrencyName: '人民币', @@ -150,7 +150,7 @@ class AccountSetAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -160,7 +160,7 @@ class AccountSetAssociateForm extends Component { {getFieldDecorator('yearSet', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -170,7 +170,7 @@ class AccountSetAssociateForm extends Component { {getFieldDecorator('effectiveDate', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -180,7 +180,7 @@ class AccountSetAssociateForm extends Component { {getFieldDecorator('accountingSystem', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -190,7 +190,7 @@ class AccountSetAssociateForm extends Component { {getFieldDecorator('domesticCurrencyCode', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -200,7 +200,7 @@ class AccountSetAssociateForm extends Component { {getFieldDecorator('domesticCurrencyName', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -210,7 +210,7 @@ class AccountSetAssociateForm extends Component { {getFieldDecorator('openingBank', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -220,7 +220,7 @@ class AccountSetAssociateForm extends Component { {getFieldDecorator('accountNumber', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/accountset/AccountSet.associateform.less b/bizui/src/bizcomponents/accountset/AccountSet.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/accountset/AccountSet.associateform.less +++ b/bizui/src/bizcomponents/accountset/AccountSet.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/accountset/AccountSet.base.js b/bizui/src/bizcomponents/accountset/AccountSet.base.js index 3c268ca53..91fc2c685 100644 --- a/bizui/src/bizcomponents/accountset/AccountSet.base.js +++ b/bizui/src/bizcomponents/accountset/AccountSet.base.js @@ -1,101 +1,43 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"账套", menuFor: "accountSet", subItems: [ - {name: 'accountingSubjectList', displayName:'会计科目', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'accountingPeriodList', displayName:'会计期间', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'accountingDocumentTypeList', displayName:'会计凭证类型', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'accountingSubjectList', displayName:'会计科目', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'accountingPeriodList', displayName:'会计期间', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'accountingDocumentTypeList', displayName:'会计凭证类型', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) - -} - -const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'accountSet') }, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '10',render: (text, record)=>renderTextCell(text,record) }, - { title: '年组', debugtype: 'string', dataIndex: 'yearSet', width: '9',render: (text, record)=>renderTextCell(text,record) }, - { title: '生效日期', dataIndex: 'effectiveDate', render: (text, record) =>renderDateCell(text,record) }, - { title: '会计制度', debugtype: 'string', dataIndex: 'accountingSystem', width: '11',render: (text, record)=>renderTextCell(text,record) }, - { title: '本币代码', debugtype: 'string', dataIndex: 'domesticCurrencyCode', width: '7',render: (text, record)=>renderTextCell(text,record) }, - { title: '本币名称', debugtype: 'string', dataIndex: 'domesticCurrencyName', width: '7',render: (text, record)=>renderTextCell(text,record) }, - { title: '开户银行', debugtype: 'string', dataIndex: 'openingBank', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: '帐户号码', debugtype: 'string', dataIndex: 'accountNumber', width: '18',render: (text, record)=>renderTextCell(text,record) }, - { title: '全国运营中心', dataIndex: 'countryCenter', render: (text, record) => renderReferenceCell(text, record)}, - { title: '双链小超', dataIndex: 'retailStore', render: (text, record) => renderReferenceCell(text, record)}, - { title: '产品供应商', dataIndex: 'goodsSupplier', render: (text, record) => renderReferenceCell(text, record)}, - { title: '最后更新时间', dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record) }, - -] - const fieldLabels = { id: '序号', name: '名称', @@ -113,8 +55,64 @@ const fieldLabels = { } +const displayColumns = [ + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'accountSet') , sorter: true }, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '10',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.yearSet, debugtype: 'string', dataIndex: 'yearSet', width: '9',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.effectiveDate, dataIndex: 'effectiveDate', render: (text, record) =>renderDateCell(text,record), sorter: true }, + { title: fieldLabels.accountingSystem, debugtype: 'string', dataIndex: 'accountingSystem', width: '11',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.domesticCurrencyCode, debugtype: 'string', dataIndex: 'domesticCurrencyCode', width: '7',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.domesticCurrencyName, debugtype: 'string', dataIndex: 'domesticCurrencyName', width: '7',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.openingBank, debugtype: 'string', dataIndex: 'openingBank', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.accountNumber, debugtype: 'string', dataIndex: 'accountNumber', width: '18',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.countryCenter, dataIndex: 'countryCenter', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.retailStore, dataIndex: 'retailStore', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.goodsSupplier, dataIndex: 'goodsSupplier', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.lastUpdateTime, dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record), sorter: true}, + +] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({accountSet,targetComponent})=>{ + + + + const {AccountSetService} = GlobalComponents + // const userContext = null + return ( + +{accountSet.id} +{accountSet.name} +{accountSet.yearSet} +{ moment(accountSet.effectiveDate).format('YYYY-MM-DD')} +{accountSet.accountingSystem} +{accountSet.domesticCurrencyCode} +{accountSet.domesticCurrencyName} +{accountSet.openingBank} +{accountSet.accountNumber} +{accountSet.retailStore==null?appLocaleName(userContext,"NotAssigned"):`${accountSet.retailStore.displayName}(${accountSet.retailStore.id})`} + + showTransferModel(targetComponent,"双链小超","retailStore",AccountSetService.requestCandidateRetailStore, + AccountSetService.transferToAnotherRetailStore,"anotherRetailStoreId",accountSet.retailStore?accountSet.retailStore.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{accountSet.goodsSupplier==null?appLocaleName(userContext,"NotAssigned"):`${accountSet.goodsSupplier.displayName}(${accountSet.goodsSupplier.id})`} + + showTransferModel(targetComponent,"产品供应商","goodsSupplier",AccountSetService.requestCandidateGoodsSupplier, + AccountSetService.transferToAnotherGoodsSupplier,"anotherGoodsSupplierId",accountSet.goodsSupplier?accountSet.goodsSupplier.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{ moment(accountSet.lastUpdateTime).format('YYYY-MM-DD')} + + {buildTransferModal(accountSet,targetComponent)} + + ) + +} + + + -const AccountSetBase={menuData,displayColumns,fieldLabels} +const AccountSetBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default AccountSetBase diff --git a/bizui/src/bizcomponents/accountset/AccountSet.createform.js b/bizui/src/bizcomponents/accountset/AccountSet.createform.js index ede1bd45f..291e1046b 100644 --- a/bizui/src/bizcomponents/accountset/AccountSet.createform.js +++ b/bizui/src/bizcomponents/accountset/AccountSet.createform.js @@ -19,7 +19,7 @@ const testValues = {}; const testValues = { name: '账套2017', yearSet: '2017年', - effectiveDate: '2018-01-16', + effectiveDate: '2017-10-29', accountingSystem: '企业会计制度', domesticCurrencyCode: 'RMB', domesticCurrencyName: '人民币', @@ -216,7 +216,7 @@ class AccountSetCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -226,7 +226,7 @@ class AccountSetCreateForm extends Component { {getFieldDecorator('yearSet', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -236,7 +236,7 @@ class AccountSetCreateForm extends Component { {getFieldDecorator('effectiveDate', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -246,7 +246,7 @@ class AccountSetCreateForm extends Component { {getFieldDecorator('accountingSystem', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -256,7 +256,7 @@ class AccountSetCreateForm extends Component { {getFieldDecorator('domesticCurrencyCode', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -266,7 +266,7 @@ class AccountSetCreateForm extends Component { {getFieldDecorator('domesticCurrencyName', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -276,7 +276,7 @@ class AccountSetCreateForm extends Component { {getFieldDecorator('openingBank', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class AccountSetCreateForm extends Component { {getFieldDecorator('accountNumber', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/accountset/AccountSet.dashboard.js b/bizui/src/bizcomponents/accountset/AccountSet.dashboard.js index 2bcb7b9cd..df579896e 100644 --- a/bizui/src/bizcomponents/accountset/AccountSet.dashboard.js +++ b/bizui/src/bizcomponents/accountset/AccountSet.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -158,6 +158,7 @@ class AccountSetDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -166,13 +167,17 @@ class AccountSetDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/accountset/AccountSet.model.js b/bizui/src/bizcomponents/accountset/AccountSet.model.js index 1609b343d..91a9f2e32 100644 --- a/bizui/src/bizcomponents/accountset/AccountSet.model.js +++ b/bizui/src/bizcomponents/accountset/AccountSet.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/accountSet/${id}/list/\AccountingSubjectList/会计科目+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/accountSet/${id}/list/AccountingSubjectList/会计科目+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateAccountingSubject({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/accountSet/${id}/list/\AccountingSubjectList/会计科目列表`, state: newPlayload } + const location = { pathname: `/accountSet/${id}/list/AccountingSubjectList/会计科目列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextAccountingSubjectUpdateRow({ payload }, { call, put }) { @@ -206,7 +206,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/accountSet/${id}/list/\AccountingPeriodList/会计期间+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/accountSet/${id}/list/AccountingPeriodList/会计期间+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateAccountingPeriod({ payload }, { call, put }) { @@ -228,7 +228,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/accountSet/${id}/list/\AccountingPeriodList/会计期间列表`, state: newPlayload } + const location = { pathname: `/accountSet/${id}/list/AccountingPeriodList/会计期间列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextAccountingPeriodUpdateRow({ payload }, { call, put }) { @@ -275,7 +275,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/accountSet/${id}/list/\AccountingDocumentTypeList/会计凭证类型+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/accountSet/${id}/list/AccountingDocumentTypeList/会计凭证类型+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateAccountingDocumentType({ payload }, { call, put }) { @@ -297,7 +297,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/accountSet/${id}/list/\AccountingDocumentTypeList/会计凭证类型列表`, state: newPlayload } + const location = { pathname: `/accountSet/${id}/list/AccountingDocumentTypeList/会计凭证类型列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextAccountingDocumentTypeUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/accountset/AccountSet.permission.js b/bizui/src/bizcomponents/accountset/AccountSet.permission.js new file mode 100644 index 000000000..9e2864688 --- /dev/null +++ b/bizui/src/bizcomponents/accountset/AccountSet.permission.js @@ -0,0 +1,92 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './AccountSet.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (accountSet,targetComponent) =>{ + const userContext = null + return ( + +{accountSet.id} +{accountSet.name} +{accountSet.yearSet} +{ moment(accountSet.effectiveDate).format('YYYY-MM-DD')} +{accountSet.accountingSystem} +{accountSet.domesticCurrencyCode} +{accountSet.domesticCurrencyName} +{accountSet.openingBank} +{accountSet.accountNumber} +{ moment(accountSet.lastUpdateTime).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = accountSet => { + const {AccountSetBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class AccountSetPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const accountSet = this.props.accountSet; + const { id,displayName, accountingSubjectCount, accountingPeriodCount, accountingDocumentTypeCount } = accountSet + const cardsData = {cardsName:"账套",cardsFor: "accountSet",cardsSource: accountSet, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + accountSet: state._accountSet, +}))(Form.create()(AccountSetPermission)) + diff --git a/bizui/src/bizcomponents/accountset/AccountSet.permission.less b/bizui/src/bizcomponents/accountset/AccountSet.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/accountset/AccountSet.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/accountset/AccountSet.preference.js b/bizui/src/bizcomponents/accountset/AccountSet.preference.js index cae4846aa..f52623400 100644 --- a/bizui/src/bizcomponents/accountset/AccountSet.preference.js +++ b/bizui/src/bizcomponents/accountset/AccountSet.preference.js @@ -319,8 +319,12 @@ class AccountSetPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, accountingSubjectCount, accountingPeriodCount, accountingDocumentTypeCount } = this.props.accountSet - const cardsData = {cardsName:"账套",cardsFor: "accountSet",cardsSource: this.props.accountSet, + const accountSet = this.props.accountSet; + const { id,displayName, accountingSubjectCount, accountingPeriodCount, accountingDocumentTypeCount } = accountSet + + + + const cardsData = {cardsName:"账套",cardsFor: "accountSet",cardsSource: accountSet, subItems: [ ], diff --git a/bizui/src/bizcomponents/accountset/AccountSet.profile.js b/bizui/src/bizcomponents/accountset/AccountSet.profile.js new file mode 100644 index 000000000..f35322762 --- /dev/null +++ b/bizui/src/bizcomponents/accountset/AccountSet.profile.js @@ -0,0 +1,99 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './AccountSet.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (accountSet,targetComponent) =>{ + const userContext = null + return ( + +{accountSet.id} +{accountSet.name} +{accountSet.yearSet} +{ moment(accountSet.effectiveDate).format('YYYY-MM-DD')} +{accountSet.accountingSystem} +{accountSet.domesticCurrencyCode} +{accountSet.domesticCurrencyName} +{accountSet.openingBank} +{accountSet.accountNumber} +{ moment(accountSet.lastUpdateTime).format('YYYY-MM-DD')} + + + ) +} + + + +class AccountSetProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const accountSet = this.props.accountSet; + const { id,displayName, accountingSubjectCount, accountingPeriodCount, accountingDocumentTypeCount } = accountSet + + const cardsData = {cardsName:"账套",cardsFor: "accountSet",cardsSource: accountSet, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + accountSet: state._accountSet, +}))(Form.create()(AccountSetProfile)) + diff --git a/bizui/src/bizcomponents/accountset/AccountSet.profile.less b/bizui/src/bizcomponents/accountset/AccountSet.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/accountset/AccountSet.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/accountset/AccountSet.search.js b/bizui/src/bizcomponents/accountset/AccountSet.search.js index b0e746d1c..e9d27c192 100644 --- a/bizui/src/bizcomponents/accountset/AccountSet.search.js +++ b/bizui/src/bizcomponents/accountset/AccountSet.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/accountset/AccountSet.searchform.js b/bizui/src/bizcomponents/accountset/AccountSet.searchform.js index 398a80d3e..55cb9bad3 100644 --- a/bizui/src/bizcomponents/accountset/AccountSet.searchform.js +++ b/bizui/src/bizcomponents/accountset/AccountSet.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`accountSetList.searchField`] = fieldName - value[`accountSetList.searchVerb`] = searchVerb - value[`accountSetList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,19 +127,20 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'yearSet')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'accountingSystem')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'domesticCurrencyCode')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'domesticCurrencyName')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'openingBank')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'accountNumber')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'countryCenter')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'retailStore')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'goodsSupplier')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'yearSet')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'accountingSystem')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'domesticCurrencyCode')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'domesticCurrencyName')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'openingBank')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'accountNumber')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'countryCenter')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'retailStore')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'goodsSupplier')) console.log("the final parameter", paramList) @@ -155,11 +156,12 @@ componentDidMount() { } - params['accountSetList'] = 1 - params['accountSetList.orderBy.0'] = "id" - params['accountSetList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -214,8 +216,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -363,8 +365,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/accountset/AccountSet.table.js b/bizui/src/bizcomponents/accountset/AccountSet.table.js index 3d763da12..04040b661 100644 --- a/bizui/src/bizcomponents/accountset/AccountSet.table.js +++ b/bizui/src/bizcomponents/accountset/AccountSet.table.js @@ -40,24 +40,53 @@ class AccountSetTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = AccountSetBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class AccountSetTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class AccountSetTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/accountset/AccountSet.updateform.js b/bizui/src/bizcomponents/accountset/AccountSet.updateform.js index f7eb40d92..edc2a014f 100644 --- a/bizui/src/bizcomponents/accountset/AccountSet.updateform.js +++ b/bizui/src/bizcomponents/accountset/AccountSet.updateform.js @@ -263,7 +263,7 @@ class AccountSetUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -275,7 +275,7 @@ class AccountSetUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -287,7 +287,7 @@ class AccountSetUpdateForm extends Component { initialValue: selectedRow.yearSet, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -299,7 +299,7 @@ class AccountSetUpdateForm extends Component { initialValue: selectedRow.effectiveDate, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -311,7 +311,7 @@ class AccountSetUpdateForm extends Component { initialValue: selectedRow.accountingSystem, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -323,7 +323,7 @@ class AccountSetUpdateForm extends Component { initialValue: selectedRow.domesticCurrencyCode, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -335,7 +335,7 @@ class AccountSetUpdateForm extends Component { initialValue: selectedRow.domesticCurrencyName, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -347,7 +347,7 @@ class AccountSetUpdateForm extends Component { initialValue: selectedRow.openingBank, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -359,7 +359,7 @@ class AccountSetUpdateForm extends Component { initialValue: selectedRow.accountNumber, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/catalog/Catalog.app.js b/bizui/src/bizcomponents/catalog/Catalog.app.js index 1a99b5bf9..767fea99e 100644 --- a/bizui/src/bizcomponents/catalog/Catalog.app.js +++ b/bizui/src/bizcomponents/catalog/Catalog.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class CatalogBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class CatalogBizApp extends React.PureComponent { buildRouters = () =>{ const {CatalogDashboard} = GlobalComponents - const {CatalogPreference} = GlobalComponents + const {CatalogPermission} = GlobalComponents + const {CatalogProfile} = GlobalComponents const routers=[ {path:"/catalog/:id/dashboard", component: CatalogDashboard}, - {path:"/catalog/:id/preference", component: CatalogPreference}, + {path:"/catalog/:id/profile", component: CatalogProfile}, + {path:"/catalog/:id/permission", component: CatalogPermission}, diff --git a/bizui/src/bizcomponents/catalog/Catalog.associateform.js b/bizui/src/bizcomponents/catalog/Catalog.associateform.js index 88785b5f3..401e56511 100644 --- a/bizui/src/bizcomponents/catalog/Catalog.associateform.js +++ b/bizui/src/bizcomponents/catalog/Catalog.associateform.js @@ -139,7 +139,7 @@ class CatalogAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/catalog/Catalog.associateform.less b/bizui/src/bizcomponents/catalog/Catalog.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/catalog/Catalog.associateform.less +++ b/bizui/src/bizcomponents/catalog/Catalog.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/catalog/Catalog.base.js b/bizui/src/bizcomponents/catalog/Catalog.base.js index 5ecb10c64..4951bde98 100644 --- a/bizui/src/bizcomponents/catalog/Catalog.base.js +++ b/bizui/src/bizcomponents/catalog/Catalog.base.js @@ -1,98 +1,76 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"目录", menuFor: "catalog", subItems: [ - {name: 'levelOneCategoryList', displayName:'一级分类', icon:'at',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'levelOneCategoryList', displayName:'一级分类', icon:'at',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + name: '名称', + owner: '业主', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'catalog') }, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: '业主', dataIndex: 'owner', render: (text, record) => renderReferenceCell(text, record)}, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'catalog') , sorter: true }, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.owner, dataIndex: 'owner', render: (text, record) => renderReferenceCell(text, record), sorter:true}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({catalog,targetComponent})=>{ -const fieldLabels = { - id: '序号', - name: '名称', - owner: '业主', + + + const {CatalogService} = GlobalComponents + // const userContext = null + return ( + +{catalog.id} +{catalog.name} + + {buildTransferModal(catalog,targetComponent)} + + ) } + + -const CatalogBase={menuData,displayColumns,fieldLabels} +const CatalogBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default CatalogBase diff --git a/bizui/src/bizcomponents/catalog/Catalog.createform.js b/bizui/src/bizcomponents/catalog/Catalog.createform.js index 00e496827..b05a23b6f 100644 --- a/bizui/src/bizcomponents/catalog/Catalog.createform.js +++ b/bizui/src/bizcomponents/catalog/Catalog.createform.js @@ -207,7 +207,7 @@ class CatalogCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/catalog/Catalog.dashboard.js b/bizui/src/bizcomponents/catalog/Catalog.dashboard.js index c530ea62e..fd7aca7a1 100644 --- a/bizui/src/bizcomponents/catalog/Catalog.dashboard.js +++ b/bizui/src/bizcomponents/catalog/Catalog.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -136,6 +136,7 @@ class CatalogDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -144,13 +145,17 @@ class CatalogDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/catalog/Catalog.model.js b/bizui/src/bizcomponents/catalog/Catalog.model.js index 28909d740..def3add0e 100644 --- a/bizui/src/bizcomponents/catalog/Catalog.model.js +++ b/bizui/src/bizcomponents/catalog/Catalog.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/catalog/${id}/list/\LevelOneCategoryList/一级分类+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/catalog/${id}/list/LevelOneCategoryList/一级分类+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateLevelOneCategory({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/catalog/${id}/list/\LevelOneCategoryList/一级分类列表`, state: newPlayload } + const location = { pathname: `/catalog/${id}/list/LevelOneCategoryList/一级分类列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextLevelOneCategoryUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/catalog/Catalog.permission.js b/bizui/src/bizcomponents/catalog/Catalog.permission.js new file mode 100644 index 000000000..f2647b3b5 --- /dev/null +++ b/bizui/src/bizcomponents/catalog/Catalog.permission.js @@ -0,0 +1,84 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './Catalog.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (catalog,targetComponent) =>{ + const userContext = null + return ( + +{catalog.id} +{catalog.name} + + + ) +} + + +const renderPermissionSetting = catalog => { + const {CatalogBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class CatalogPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const catalog = this.props.catalog; + const { id,displayName, levelOneCategoryCount } = catalog + const cardsData = {cardsName:"目录",cardsFor: "catalog",cardsSource: catalog, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + catalog: state._catalog, +}))(Form.create()(CatalogPermission)) + diff --git a/bizui/src/bizcomponents/catalog/Catalog.permission.less b/bizui/src/bizcomponents/catalog/Catalog.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/catalog/Catalog.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/catalog/Catalog.preference.js b/bizui/src/bizcomponents/catalog/Catalog.preference.js index 17ef3d6fb..4420bb6cc 100644 --- a/bizui/src/bizcomponents/catalog/Catalog.preference.js +++ b/bizui/src/bizcomponents/catalog/Catalog.preference.js @@ -299,8 +299,12 @@ class CatalogPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, levelOneCategoryCount } = this.props.catalog - const cardsData = {cardsName:"目录",cardsFor: "catalog",cardsSource: this.props.catalog, + const catalog = this.props.catalog; + const { id,displayName, levelOneCategoryCount } = catalog + + + + const cardsData = {cardsName:"目录",cardsFor: "catalog",cardsSource: catalog, subItems: [ ], diff --git a/bizui/src/bizcomponents/catalog/Catalog.profile.js b/bizui/src/bizcomponents/catalog/Catalog.profile.js new file mode 100644 index 000000000..60beab7b9 --- /dev/null +++ b/bizui/src/bizcomponents/catalog/Catalog.profile.js @@ -0,0 +1,91 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './Catalog.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (catalog,targetComponent) =>{ + const userContext = null + return ( + +{catalog.id} +{catalog.name} + + + ) +} + + + +class CatalogProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const catalog = this.props.catalog; + const { id,displayName, levelOneCategoryCount } = catalog + + const cardsData = {cardsName:"目录",cardsFor: "catalog",cardsSource: catalog, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + catalog: state._catalog, +}))(Form.create()(CatalogProfile)) + diff --git a/bizui/src/bizcomponents/catalog/Catalog.profile.less b/bizui/src/bizcomponents/catalog/Catalog.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/catalog/Catalog.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/catalog/Catalog.search.js b/bizui/src/bizcomponents/catalog/Catalog.search.js index bf6ad608f..51c1fc003 100644 --- a/bizui/src/bizcomponents/catalog/Catalog.search.js +++ b/bizui/src/bizcomponents/catalog/Catalog.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/catalog/Catalog.searchform.js b/bizui/src/bizcomponents/catalog/Catalog.searchform.js index f65ce4b43..290c5e1f7 100644 --- a/bizui/src/bizcomponents/catalog/Catalog.searchform.js +++ b/bizui/src/bizcomponents/catalog/Catalog.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`catalogList.searchField`] = fieldName - value[`catalogList.searchVerb`] = searchVerb - value[`catalogList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,11 +127,12 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'owner')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'owner')) console.log("the final parameter", paramList) @@ -147,11 +148,12 @@ componentDidMount() { } - params['catalogList'] = 1 - params['catalogList.orderBy.0'] = "id" - params['catalogList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -206,8 +208,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -277,8 +279,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/catalog/Catalog.table.js b/bizui/src/bizcomponents/catalog/Catalog.table.js index 0f86fd907..2a0913c4e 100644 --- a/bizui/src/bizcomponents/catalog/Catalog.table.js +++ b/bizui/src/bizcomponents/catalog/Catalog.table.js @@ -40,24 +40,53 @@ class CatalogTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = CatalogBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class CatalogTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class CatalogTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/catalog/Catalog.updateform.js b/bizui/src/bizcomponents/catalog/Catalog.updateform.js index 08f50bef9..2dbee95f0 100644 --- a/bizui/src/bizcomponents/catalog/Catalog.updateform.js +++ b/bizui/src/bizcomponents/catalog/Catalog.updateform.js @@ -261,7 +261,7 @@ class CatalogUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class CatalogUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/cityevent/CityEvent.app.js b/bizui/src/bizcomponents/cityevent/CityEvent.app.js index 8c4070aa4..3cd95da47 100644 --- a/bizui/src/bizcomponents/cityevent/CityEvent.app.js +++ b/bizui/src/bizcomponents/cityevent/CityEvent.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class CityEventBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class CityEventBizApp extends React.PureComponent { buildRouters = () =>{ const {CityEventDashboard} = GlobalComponents - const {CityEventPreference} = GlobalComponents + const {CityEventPermission} = GlobalComponents + const {CityEventProfile} = GlobalComponents const routers=[ {path:"/cityEvent/:id/dashboard", component: CityEventDashboard}, - {path:"/cityEvent/:id/preference", component: CityEventPreference}, + {path:"/cityEvent/:id/profile", component: CityEventProfile}, + {path:"/cityEvent/:id/permission", component: CityEventPermission}, diff --git a/bizui/src/bizcomponents/cityevent/CityEvent.associateform.js b/bizui/src/bizcomponents/cityevent/CityEvent.associateform.js index 5f64ad8ad..3b487b58f 100644 --- a/bizui/src/bizcomponents/cityevent/CityEvent.associateform.js +++ b/bizui/src/bizcomponents/cityevent/CityEvent.associateform.js @@ -141,7 +141,7 @@ class CityEventAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -151,7 +151,7 @@ class CityEventAssociateForm extends Component { {getFieldDecorator('mobile', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -161,7 +161,7 @@ class CityEventAssociateForm extends Component { {getFieldDecorator('description', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/cityevent/CityEvent.associateform.less b/bizui/src/bizcomponents/cityevent/CityEvent.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/cityevent/CityEvent.associateform.less +++ b/bizui/src/bizcomponents/cityevent/CityEvent.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/cityevent/CityEvent.base.js b/bizui/src/bizcomponents/cityevent/CityEvent.base.js index b79d04b92..76ef3ed1f 100644 --- a/bizui/src/bizcomponents/cityevent/CityEvent.base.js +++ b/bizui/src/bizcomponents/cityevent/CityEvent.base.js @@ -1,92 +1,41 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"城市活动", menuFor: "cityEvent", subItems: [ - {name: 'eventAttendanceList', displayName:'活动的参与情况', icon:'at',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'eventAttendanceList', displayName:'活动的参与情况', icon:'at',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) - -} - -const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'cityEvent') }, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '11',render: (text, record)=>renderTextCell(text,record) }, - { title: '手机', debugtype: 'string_china_mobile_phone', dataIndex: 'mobile', width: '15',render: (text, record)=>renderTextCell(text,record) }, - { title: '城市服务中心', dataIndex: 'cityServiceCenter', render: (text, record) => renderReferenceCell(text, record)}, - { title: '描述', debugtype: 'string', dataIndex: 'description', width: '16',render: (text, record)=>renderTextCell(text,record) }, - { title: '最后更新时间', dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record) }, - -] - const fieldLabels = { id: '序号', name: '名称', @@ -97,8 +46,46 @@ const fieldLabels = { } +const displayColumns = [ + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'cityEvent') , sorter: true }, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '11',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.mobile, debugtype: 'string_china_mobile_phone', dataIndex: 'mobile', width: '15',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.cityServiceCenter, dataIndex: 'cityServiceCenter', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.description, debugtype: 'string', dataIndex: 'description', width: '16',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.lastUpdateTime, dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record), sorter: true}, + +] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({cityEvent,targetComponent})=>{ + + + + const {CityEventService} = GlobalComponents + // const userContext = null + return ( + +{cityEvent.id} +{cityEvent.name} +{cityEvent.mobile} +{cityEvent.cityServiceCenter==null?appLocaleName(userContext,"NotAssigned"):`${cityEvent.cityServiceCenter.displayName}(${cityEvent.cityServiceCenter.id})`} + + showTransferModel(targetComponent,"城市服务中心","retailStoreCityServiceCenter",CityEventService.requestCandidateCityServiceCenter, + CityEventService.transferToAnotherCityServiceCenter,"anotherCityServiceCenterId",cityEvent.cityServiceCenter?cityEvent.cityServiceCenter.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{cityEvent.description} +{ moment(cityEvent.lastUpdateTime).format('YYYY-MM-DD')} + + {buildTransferModal(cityEvent,targetComponent)} + + ) + +} + + + -const CityEventBase={menuData,displayColumns,fieldLabels} +const CityEventBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default CityEventBase diff --git a/bizui/src/bizcomponents/cityevent/CityEvent.createform.js b/bizui/src/bizcomponents/cityevent/CityEvent.createform.js index 37f8314db..f062c3970 100644 --- a/bizui/src/bizcomponents/cityevent/CityEvent.createform.js +++ b/bizui/src/bizcomponents/cityevent/CityEvent.createform.js @@ -209,7 +209,7 @@ class CityEventCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -219,7 +219,7 @@ class CityEventCreateForm extends Component { {getFieldDecorator('mobile', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -229,7 +229,7 @@ class CityEventCreateForm extends Component { {getFieldDecorator('description', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/cityevent/CityEvent.dashboard.js b/bizui/src/bizcomponents/cityevent/CityEvent.dashboard.js index b606eae70..cadacaee9 100644 --- a/bizui/src/bizcomponents/cityevent/CityEvent.dashboard.js +++ b/bizui/src/bizcomponents/cityevent/CityEvent.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -145,6 +145,7 @@ class CityEventDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -153,13 +154,17 @@ class CityEventDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/cityevent/CityEvent.model.js b/bizui/src/bizcomponents/cityevent/CityEvent.model.js index cb573e873..4665e2f1e 100644 --- a/bizui/src/bizcomponents/cityevent/CityEvent.model.js +++ b/bizui/src/bizcomponents/cityevent/CityEvent.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/cityEvent/${id}/list/\EventAttendanceList/活动的参与情况+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/cityEvent/${id}/list/EventAttendanceList/活动的参与情况+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateEventAttendance({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/cityEvent/${id}/list/\EventAttendanceList/活动的参与情况列表`, state: newPlayload } + const location = { pathname: `/cityEvent/${id}/list/EventAttendanceList/活动的参与情况列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextEventAttendanceUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/cityevent/CityEvent.permission.js b/bizui/src/bizcomponents/cityevent/CityEvent.permission.js new file mode 100644 index 000000000..7fc1eb5bc --- /dev/null +++ b/bizui/src/bizcomponents/cityevent/CityEvent.permission.js @@ -0,0 +1,87 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './CityEvent.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (cityEvent,targetComponent) =>{ + const userContext = null + return ( + +{cityEvent.id} +{cityEvent.name} +{cityEvent.mobile} +{cityEvent.description} +{ moment(cityEvent.lastUpdateTime).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = cityEvent => { + const {CityEventBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class CityEventPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const cityEvent = this.props.cityEvent; + const { id,displayName, eventAttendanceCount } = cityEvent + const cardsData = {cardsName:"城市活动",cardsFor: "cityEvent",cardsSource: cityEvent, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + cityEvent: state._cityEvent, +}))(Form.create()(CityEventPermission)) + diff --git a/bizui/src/bizcomponents/cityevent/CityEvent.permission.less b/bizui/src/bizcomponents/cityevent/CityEvent.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/cityevent/CityEvent.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/cityevent/CityEvent.preference.js b/bizui/src/bizcomponents/cityevent/CityEvent.preference.js index b3f71fed1..c1f0ddedc 100644 --- a/bizui/src/bizcomponents/cityevent/CityEvent.preference.js +++ b/bizui/src/bizcomponents/cityevent/CityEvent.preference.js @@ -308,8 +308,12 @@ class CityEventPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, eventAttendanceCount } = this.props.cityEvent - const cardsData = {cardsName:"城市活动",cardsFor: "cityEvent",cardsSource: this.props.cityEvent, + const cityEvent = this.props.cityEvent; + const { id,displayName, eventAttendanceCount } = cityEvent + + + + const cardsData = {cardsName:"城市活动",cardsFor: "cityEvent",cardsSource: cityEvent, subItems: [ ], diff --git a/bizui/src/bizcomponents/cityevent/CityEvent.profile.js b/bizui/src/bizcomponents/cityevent/CityEvent.profile.js new file mode 100644 index 000000000..ba9d80764 --- /dev/null +++ b/bizui/src/bizcomponents/cityevent/CityEvent.profile.js @@ -0,0 +1,94 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './CityEvent.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (cityEvent,targetComponent) =>{ + const userContext = null + return ( + +{cityEvent.id} +{cityEvent.name} +{cityEvent.mobile} +{cityEvent.description} +{ moment(cityEvent.lastUpdateTime).format('YYYY-MM-DD')} + + + ) +} + + + +class CityEventProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const cityEvent = this.props.cityEvent; + const { id,displayName, eventAttendanceCount } = cityEvent + + const cardsData = {cardsName:"城市活动",cardsFor: "cityEvent",cardsSource: cityEvent, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + cityEvent: state._cityEvent, +}))(Form.create()(CityEventProfile)) + diff --git a/bizui/src/bizcomponents/cityevent/CityEvent.profile.less b/bizui/src/bizcomponents/cityevent/CityEvent.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/cityevent/CityEvent.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/cityevent/CityEvent.search.js b/bizui/src/bizcomponents/cityevent/CityEvent.search.js index 8cfa94d6b..450931eb4 100644 --- a/bizui/src/bizcomponents/cityevent/CityEvent.search.js +++ b/bizui/src/bizcomponents/cityevent/CityEvent.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/cityevent/CityEvent.searchform.js b/bizui/src/bizcomponents/cityevent/CityEvent.searchform.js index da39312e1..6ed5ada2a 100644 --- a/bizui/src/bizcomponents/cityevent/CityEvent.searchform.js +++ b/bizui/src/bizcomponents/cityevent/CityEvent.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`cityEventList.searchField`] = fieldName - value[`cityEventList.searchVerb`] = searchVerb - value[`cityEventList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,13 +127,14 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'mobile')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'cityServiceCenter')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'description')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'mobile')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'cityServiceCenter')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'description')) console.log("the final parameter", paramList) @@ -149,11 +150,12 @@ componentDidMount() { } - params['cityEventList'] = 1 - params['cityEventList.orderBy.0'] = "id" - params['cityEventList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -208,8 +210,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -295,8 +297,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/cityevent/CityEvent.table.js b/bizui/src/bizcomponents/cityevent/CityEvent.table.js index f2327b8c2..cf672aa89 100644 --- a/bizui/src/bizcomponents/cityevent/CityEvent.table.js +++ b/bizui/src/bizcomponents/cityevent/CityEvent.table.js @@ -40,24 +40,53 @@ class CityEventTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = CityEventBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class CityEventTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class CityEventTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/cityevent/CityEvent.updateform.js b/bizui/src/bizcomponents/cityevent/CityEvent.updateform.js index b0f327738..6285950c1 100644 --- a/bizui/src/bizcomponents/cityevent/CityEvent.updateform.js +++ b/bizui/src/bizcomponents/cityevent/CityEvent.updateform.js @@ -262,7 +262,7 @@ class CityEventUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class CityEventUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class CityEventUpdateForm extends Component { initialValue: selectedRow.mobile, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -298,7 +298,7 @@ class CityEventUpdateForm extends Component { initialValue: selectedRow.description, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/citypartner/CityPartner.app.js b/bizui/src/bizcomponents/citypartner/CityPartner.app.js index 3efa748cc..848e3f296 100644 --- a/bizui/src/bizcomponents/citypartner/CityPartner.app.js +++ b/bizui/src/bizcomponents/citypartner/CityPartner.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class CityPartnerBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -255,12 +264,14 @@ class CityPartnerBizApp extends React.PureComponent { buildRouters = () =>{ const {CityPartnerDashboard} = GlobalComponents - const {CityPartnerPreference} = GlobalComponents + const {CityPartnerPermission} = GlobalComponents + const {CityPartnerProfile} = GlobalComponents const routers=[ {path:"/cityPartner/:id/dashboard", component: CityPartnerDashboard}, - {path:"/cityPartner/:id/preference", component: CityPartnerPreference}, + {path:"/cityPartner/:id/profile", component: CityPartnerProfile}, + {path:"/cityPartner/:id/permission", component: CityPartnerPermission}, diff --git a/bizui/src/bizcomponents/citypartner/CityPartner.associateform.js b/bizui/src/bizcomponents/citypartner/CityPartner.associateform.js index 5a60cf804..257acb2c5 100644 --- a/bizui/src/bizcomponents/citypartner/CityPartner.associateform.js +++ b/bizui/src/bizcomponents/citypartner/CityPartner.associateform.js @@ -142,7 +142,7 @@ class CityPartnerAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -152,7 +152,7 @@ class CityPartnerAssociateForm extends Component { {getFieldDecorator('mobile', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -162,7 +162,7 @@ class CityPartnerAssociateForm extends Component { {getFieldDecorator('description', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/citypartner/CityPartner.associateform.less b/bizui/src/bizcomponents/citypartner/CityPartner.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/citypartner/CityPartner.associateform.less +++ b/bizui/src/bizcomponents/citypartner/CityPartner.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/citypartner/CityPartner.base.js b/bizui/src/bizcomponents/citypartner/CityPartner.base.js index de14cb5f7..edf0f3495 100644 --- a/bizui/src/bizcomponents/citypartner/CityPartner.base.js +++ b/bizui/src/bizcomponents/citypartner/CityPartner.base.js @@ -1,93 +1,42 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"城市合伙人", menuFor: "cityPartner", subItems: [ - {name: 'potentialCustomerList', displayName:'潜在的客户', icon:'om',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'potentialCustomerContactList', displayName:'潜在客户联系', icon:'om',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'potentialCustomerList', displayName:'潜在的客户', icon:'om',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'potentialCustomerContactList', displayName:'潜在客户联系', icon:'om',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) - -} - -const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'cityPartner') }, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '7',render: (text, record)=>renderTextCell(text,record) }, - { title: '手机', debugtype: 'string_china_mobile_phone', dataIndex: 'mobile', width: '15',render: (text, record)=>renderTextCell(text,record) }, - { title: '城市服务中心', dataIndex: 'cityServiceCenter', render: (text, record) => renderReferenceCell(text, record)}, - { title: '描述', debugtype: 'string', dataIndex: 'description', width: '20',render: (text, record)=>renderTextCell(text,record) }, - { title: '最后更新时间', dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record) }, - -] - const fieldLabels = { id: '序号', name: '名称', @@ -98,8 +47,46 @@ const fieldLabels = { } +const displayColumns = [ + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'cityPartner') , sorter: true }, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '7',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.mobile, debugtype: 'string_china_mobile_phone', dataIndex: 'mobile', width: '15',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.cityServiceCenter, dataIndex: 'cityServiceCenter', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.description, debugtype: 'string', dataIndex: 'description', width: '20',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.lastUpdateTime, dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record), sorter: true}, + +] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({cityPartner,targetComponent})=>{ + + + + const {CityPartnerService} = GlobalComponents + // const userContext = null + return ( + +{cityPartner.id} +{cityPartner.name} +{cityPartner.mobile} +{cityPartner.cityServiceCenter==null?appLocaleName(userContext,"NotAssigned"):`${cityPartner.cityServiceCenter.displayName}(${cityPartner.cityServiceCenter.id})`} + + showTransferModel(targetComponent,"城市服务中心","retailStoreCityServiceCenter",CityPartnerService.requestCandidateCityServiceCenter, + CityPartnerService.transferToAnotherCityServiceCenter,"anotherCityServiceCenterId",cityPartner.cityServiceCenter?cityPartner.cityServiceCenter.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{cityPartner.description} +{ moment(cityPartner.lastUpdateTime).format('YYYY-MM-DD')} + + {buildTransferModal(cityPartner,targetComponent)} + + ) + +} + + + -const CityPartnerBase={menuData,displayColumns,fieldLabels} +const CityPartnerBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default CityPartnerBase diff --git a/bizui/src/bizcomponents/citypartner/CityPartner.createform.js b/bizui/src/bizcomponents/citypartner/CityPartner.createform.js index 37f19a954..ae936fbfd 100644 --- a/bizui/src/bizcomponents/citypartner/CityPartner.createform.js +++ b/bizui/src/bizcomponents/citypartner/CityPartner.createform.js @@ -209,7 +209,7 @@ class CityPartnerCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -219,7 +219,7 @@ class CityPartnerCreateForm extends Component { {getFieldDecorator('mobile', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -229,7 +229,7 @@ class CityPartnerCreateForm extends Component { {getFieldDecorator('description', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/citypartner/CityPartner.dashboard.js b/bizui/src/bizcomponents/citypartner/CityPartner.dashboard.js index c8b07817f..83913476b 100644 --- a/bizui/src/bizcomponents/citypartner/CityPartner.dashboard.js +++ b/bizui/src/bizcomponents/citypartner/CityPartner.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -146,6 +146,7 @@ class CityPartnerDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -154,13 +155,17 @@ class CityPartnerDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/citypartner/CityPartner.model.js b/bizui/src/bizcomponents/citypartner/CityPartner.model.js index ad11e013c..5a6536ad1 100644 --- a/bizui/src/bizcomponents/citypartner/CityPartner.model.js +++ b/bizui/src/bizcomponents/citypartner/CityPartner.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/cityPartner/${id}/list/\PotentialCustomerList/潜在的客户+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/cityPartner/${id}/list/PotentialCustomerList/潜在的客户+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updatePotentialCustomer({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/cityPartner/${id}/list/\PotentialCustomerList/潜在的客户列表`, state: newPlayload } + const location = { pathname: `/cityPartner/${id}/list/PotentialCustomerList/潜在的客户列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextPotentialCustomerUpdateRow({ payload }, { call, put }) { @@ -206,7 +206,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/cityPartner/${id}/list/\PotentialCustomerContactList/潜在客户联系+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/cityPartner/${id}/list/PotentialCustomerContactList/潜在客户联系+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updatePotentialCustomerContact({ payload }, { call, put }) { @@ -228,7 +228,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/cityPartner/${id}/list/\PotentialCustomerContactList/潜在客户联系列表`, state: newPlayload } + const location = { pathname: `/cityPartner/${id}/list/PotentialCustomerContactList/潜在客户联系列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextPotentialCustomerContactUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/citypartner/CityPartner.permission.js b/bizui/src/bizcomponents/citypartner/CityPartner.permission.js new file mode 100644 index 000000000..dee7e98be --- /dev/null +++ b/bizui/src/bizcomponents/citypartner/CityPartner.permission.js @@ -0,0 +1,87 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './CityPartner.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (cityPartner,targetComponent) =>{ + const userContext = null + return ( + +{cityPartner.id} +{cityPartner.name} +{cityPartner.mobile} +{cityPartner.description} +{ moment(cityPartner.lastUpdateTime).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = cityPartner => { + const {CityPartnerBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class CityPartnerPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const cityPartner = this.props.cityPartner; + const { id,displayName, potentialCustomerCount, potentialCustomerContactCount } = cityPartner + const cardsData = {cardsName:"城市合伙人",cardsFor: "cityPartner",cardsSource: cityPartner, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + cityPartner: state._cityPartner, +}))(Form.create()(CityPartnerPermission)) + diff --git a/bizui/src/bizcomponents/citypartner/CityPartner.permission.less b/bizui/src/bizcomponents/citypartner/CityPartner.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/citypartner/CityPartner.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/citypartner/CityPartner.preference.js b/bizui/src/bizcomponents/citypartner/CityPartner.preference.js index 1845e2c43..45575a479 100644 --- a/bizui/src/bizcomponents/citypartner/CityPartner.preference.js +++ b/bizui/src/bizcomponents/citypartner/CityPartner.preference.js @@ -308,8 +308,12 @@ class CityPartnerPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, potentialCustomerCount, potentialCustomerContactCount } = this.props.cityPartner - const cardsData = {cardsName:"城市合伙人",cardsFor: "cityPartner",cardsSource: this.props.cityPartner, + const cityPartner = this.props.cityPartner; + const { id,displayName, potentialCustomerCount, potentialCustomerContactCount } = cityPartner + + + + const cardsData = {cardsName:"城市合伙人",cardsFor: "cityPartner",cardsSource: cityPartner, subItems: [ ], diff --git a/bizui/src/bizcomponents/citypartner/CityPartner.profile.js b/bizui/src/bizcomponents/citypartner/CityPartner.profile.js new file mode 100644 index 000000000..5d32cafd1 --- /dev/null +++ b/bizui/src/bizcomponents/citypartner/CityPartner.profile.js @@ -0,0 +1,94 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './CityPartner.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (cityPartner,targetComponent) =>{ + const userContext = null + return ( + +{cityPartner.id} +{cityPartner.name} +{cityPartner.mobile} +{cityPartner.description} +{ moment(cityPartner.lastUpdateTime).format('YYYY-MM-DD')} + + + ) +} + + + +class CityPartnerProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const cityPartner = this.props.cityPartner; + const { id,displayName, potentialCustomerCount, potentialCustomerContactCount } = cityPartner + + const cardsData = {cardsName:"城市合伙人",cardsFor: "cityPartner",cardsSource: cityPartner, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + cityPartner: state._cityPartner, +}))(Form.create()(CityPartnerProfile)) + diff --git a/bizui/src/bizcomponents/citypartner/CityPartner.profile.less b/bizui/src/bizcomponents/citypartner/CityPartner.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/citypartner/CityPartner.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/citypartner/CityPartner.search.js b/bizui/src/bizcomponents/citypartner/CityPartner.search.js index 88536b818..cf1403b46 100644 --- a/bizui/src/bizcomponents/citypartner/CityPartner.search.js +++ b/bizui/src/bizcomponents/citypartner/CityPartner.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/citypartner/CityPartner.searchform.js b/bizui/src/bizcomponents/citypartner/CityPartner.searchform.js index 560b255da..5b7938657 100644 --- a/bizui/src/bizcomponents/citypartner/CityPartner.searchform.js +++ b/bizui/src/bizcomponents/citypartner/CityPartner.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`cityPartnerList.searchField`] = fieldName - value[`cityPartnerList.searchVerb`] = searchVerb - value[`cityPartnerList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,13 +127,14 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'mobile')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'cityServiceCenter')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'description')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'mobile')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'cityServiceCenter')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'description')) console.log("the final parameter", paramList) @@ -149,11 +150,12 @@ componentDidMount() { } - params['cityPartnerList'] = 1 - params['cityPartnerList.orderBy.0'] = "id" - params['cityPartnerList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -208,8 +210,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -295,8 +297,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/citypartner/CityPartner.table.js b/bizui/src/bizcomponents/citypartner/CityPartner.table.js index 0727f52b8..f4d7fa19d 100644 --- a/bizui/src/bizcomponents/citypartner/CityPartner.table.js +++ b/bizui/src/bizcomponents/citypartner/CityPartner.table.js @@ -40,24 +40,53 @@ class CityPartnerTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = CityPartnerBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class CityPartnerTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class CityPartnerTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/citypartner/CityPartner.updateform.js b/bizui/src/bizcomponents/citypartner/CityPartner.updateform.js index 1f9591e57..8ccbf0143 100644 --- a/bizui/src/bizcomponents/citypartner/CityPartner.updateform.js +++ b/bizui/src/bizcomponents/citypartner/CityPartner.updateform.js @@ -262,7 +262,7 @@ class CityPartnerUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class CityPartnerUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class CityPartnerUpdateForm extends Component { initialValue: selectedRow.mobile, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -298,7 +298,7 @@ class CityPartnerUpdateForm extends Component { initialValue: selectedRow.description, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/companytraining/CompanyTraining.app.js b/bizui/src/bizcomponents/companytraining/CompanyTraining.app.js index e7a717bf4..f1faac990 100644 --- a/bizui/src/bizcomponents/companytraining/CompanyTraining.app.js +++ b/bizui/src/bizcomponents/companytraining/CompanyTraining.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class CompanyTrainingBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class CompanyTrainingBizApp extends React.PureComponent { buildRouters = () =>{ const {CompanyTrainingDashboard} = GlobalComponents - const {CompanyTrainingPreference} = GlobalComponents + const {CompanyTrainingPermission} = GlobalComponents + const {CompanyTrainingProfile} = GlobalComponents const routers=[ {path:"/companyTraining/:id/dashboard", component: CompanyTrainingDashboard}, - {path:"/companyTraining/:id/preference", component: CompanyTrainingPreference}, + {path:"/companyTraining/:id/profile", component: CompanyTrainingProfile}, + {path:"/companyTraining/:id/permission", component: CompanyTrainingPermission}, diff --git a/bizui/src/bizcomponents/companytraining/CompanyTraining.associateform.js b/bizui/src/bizcomponents/companytraining/CompanyTraining.associateform.js index 8d0f08161..f9245a54b 100644 --- a/bizui/src/bizcomponents/companytraining/CompanyTraining.associateform.js +++ b/bizui/src/bizcomponents/companytraining/CompanyTraining.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { title: '入职培训', - timeStart: '2017-05-06', + timeStart: '2016-10-22', durationHours: '3', companyId: 'RSCC000001', instructorId: 'I000001', @@ -143,7 +143,7 @@ class CompanyTrainingAssociateForm extends Component { {getFieldDecorator('title', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -153,7 +153,7 @@ class CompanyTrainingAssociateForm extends Component { {getFieldDecorator('timeStart', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -163,7 +163,7 @@ class CompanyTrainingAssociateForm extends Component { {getFieldDecorator('durationHours', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/companytraining/CompanyTraining.associateform.less b/bizui/src/bizcomponents/companytraining/CompanyTraining.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/companytraining/CompanyTraining.associateform.less +++ b/bizui/src/bizcomponents/companytraining/CompanyTraining.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/companytraining/CompanyTraining.base.js b/bizui/src/bizcomponents/companytraining/CompanyTraining.base.js index 6fe98ac30..b1c717bdb 100644 --- a/bizui/src/bizcomponents/companytraining/CompanyTraining.base.js +++ b/bizui/src/bizcomponents/companytraining/CompanyTraining.base.js @@ -1,94 +1,41 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"公司培训", menuFor: "companyTraining", subItems: [ - {name: 'employeeCompanyTrainingList', displayName:'员工参与的公司培训', icon:'om',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'employeeCompanyTrainingList', displayName:'员工参与的公司培训', icon:'om',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) - -} - -const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'companyTraining') }, - { title: '头衔', debugtype: 'string', dataIndex: 'title', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: '公司', dataIndex: 'company', render: (text, record) => renderReferenceCell(text, record)}, - { title: '讲师', dataIndex: 'instructor', render: (text, record) => renderReferenceCell(text, record)}, - { title: '培训课程类型', dataIndex: 'trainingCourseType', render: (text, record) => renderReferenceCell(text, record)}, - { title: '时间开始', dataIndex: 'timeStart', render: (text, record) =>renderDateCell(text,record) }, - { title: '持续时间', debugtype: 'int', dataIndex: 'durationHours', width: '5',render: (text, record)=>renderTextCell(text,record) }, - { title: '最后更新时间', dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record) }, - -] - const fieldLabels = { id: '序号', title: '头衔', @@ -101,8 +48,54 @@ const fieldLabels = { } +const displayColumns = [ + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'companyTraining') , sorter: true }, + { title: fieldLabels.title, debugtype: 'string', dataIndex: 'title', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.company, dataIndex: 'company', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.instructor, dataIndex: 'instructor', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.trainingCourseType, dataIndex: 'trainingCourseType', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.timeStart, dataIndex: 'timeStart', render: (text, record) =>renderDateCell(text,record), sorter: true }, + { title: fieldLabels.durationHours, debugtype: 'int', dataIndex: 'durationHours', width: '5',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.lastUpdateTime, dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record), sorter: true}, + +] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({companyTraining,targetComponent})=>{ + + + + const {CompanyTrainingService} = GlobalComponents + // const userContext = null + return ( + +{companyTraining.id} +{companyTraining.title} +{companyTraining.instructor==null?appLocaleName(userContext,"NotAssigned"):`${companyTraining.instructor.displayName}(${companyTraining.instructor.id})`} + + showTransferModel(targetComponent,"讲师","instructor",CompanyTrainingService.requestCandidateInstructor, + CompanyTrainingService.transferToAnotherInstructor,"anotherInstructorId",companyTraining.instructor?companyTraining.instructor.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{companyTraining.trainingCourseType==null?appLocaleName(userContext,"NotAssigned"):`${companyTraining.trainingCourseType.displayName}(${companyTraining.trainingCourseType.id})`} + + showTransferModel(targetComponent,"培训课程类型","trainingCourseType",CompanyTrainingService.requestCandidateTrainingCourseType, + CompanyTrainingService.transferToAnotherTrainingCourseType,"anotherTrainingCourseTypeId",companyTraining.trainingCourseType?companyTraining.trainingCourseType.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{ moment(companyTraining.timeStart).format('YYYY-MM-DD')} +{companyTraining.durationHours} +{ moment(companyTraining.lastUpdateTime).format('YYYY-MM-DD')} + + {buildTransferModal(companyTraining,targetComponent)} + + ) + +} + + + -const CompanyTrainingBase={menuData,displayColumns,fieldLabels} +const CompanyTrainingBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default CompanyTrainingBase diff --git a/bizui/src/bizcomponents/companytraining/CompanyTraining.createform.js b/bizui/src/bizcomponents/companytraining/CompanyTraining.createform.js index 154d178b8..eef334ebf 100644 --- a/bizui/src/bizcomponents/companytraining/CompanyTraining.createform.js +++ b/bizui/src/bizcomponents/companytraining/CompanyTraining.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { title: '入职培训', - timeStart: '2017-01-08', + timeStart: '2016-07-23', durationHours: '3', companyId: 'RSCC000001', instructorId: 'I000001', @@ -211,7 +211,7 @@ class CompanyTrainingCreateForm extends Component { {getFieldDecorator('title', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -221,7 +221,7 @@ class CompanyTrainingCreateForm extends Component { {getFieldDecorator('timeStart', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -231,7 +231,7 @@ class CompanyTrainingCreateForm extends Component { {getFieldDecorator('durationHours', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/companytraining/CompanyTraining.dashboard.js b/bizui/src/bizcomponents/companytraining/CompanyTraining.dashboard.js index 9957d30b5..403094184 100644 --- a/bizui/src/bizcomponents/companytraining/CompanyTraining.dashboard.js +++ b/bizui/src/bizcomponents/companytraining/CompanyTraining.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -151,6 +151,7 @@ class CompanyTrainingDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -159,13 +160,17 @@ class CompanyTrainingDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/companytraining/CompanyTraining.model.js b/bizui/src/bizcomponents/companytraining/CompanyTraining.model.js index 4dc01c610..3087ca100 100644 --- a/bizui/src/bizcomponents/companytraining/CompanyTraining.model.js +++ b/bizui/src/bizcomponents/companytraining/CompanyTraining.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/companyTraining/${id}/list/\EmployeeCompanyTrainingList/员工参与的公司培训+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/companyTraining/${id}/list/EmployeeCompanyTrainingList/员工参与的公司培训+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateEmployeeCompanyTraining({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/companyTraining/${id}/list/\EmployeeCompanyTrainingList/员工参与的公司培训列表`, state: newPlayload } + const location = { pathname: `/companyTraining/${id}/list/EmployeeCompanyTrainingList/员工参与的公司培训列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextEmployeeCompanyTrainingUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/companytraining/CompanyTraining.permission.js b/bizui/src/bizcomponents/companytraining/CompanyTraining.permission.js new file mode 100644 index 000000000..554665d1d --- /dev/null +++ b/bizui/src/bizcomponents/companytraining/CompanyTraining.permission.js @@ -0,0 +1,87 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './CompanyTraining.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (companyTraining,targetComponent) =>{ + const userContext = null + return ( + +{companyTraining.id} +{companyTraining.title} +{ moment(companyTraining.timeStart).format('YYYY-MM-DD')} +{companyTraining.durationHours} +{ moment(companyTraining.lastUpdateTime).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = companyTraining => { + const {CompanyTrainingBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class CompanyTrainingPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const companyTraining = this.props.companyTraining; + const { id,displayName, employeeCompanyTrainingCount } = companyTraining + const cardsData = {cardsName:"公司培训",cardsFor: "companyTraining",cardsSource: companyTraining, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + companyTraining: state._companyTraining, +}))(Form.create()(CompanyTrainingPermission)) + diff --git a/bizui/src/bizcomponents/companytraining/CompanyTraining.permission.less b/bizui/src/bizcomponents/companytraining/CompanyTraining.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/companytraining/CompanyTraining.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/companytraining/CompanyTraining.preference.js b/bizui/src/bizcomponents/companytraining/CompanyTraining.preference.js index 340dcaf3a..87b519557 100644 --- a/bizui/src/bizcomponents/companytraining/CompanyTraining.preference.js +++ b/bizui/src/bizcomponents/companytraining/CompanyTraining.preference.js @@ -314,8 +314,12 @@ class CompanyTrainingPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, employeeCompanyTrainingCount } = this.props.companyTraining - const cardsData = {cardsName:"公司培训",cardsFor: "companyTraining",cardsSource: this.props.companyTraining, + const companyTraining = this.props.companyTraining; + const { id,displayName, employeeCompanyTrainingCount } = companyTraining + + + + const cardsData = {cardsName:"公司培训",cardsFor: "companyTraining",cardsSource: companyTraining, subItems: [ ], diff --git a/bizui/src/bizcomponents/companytraining/CompanyTraining.profile.js b/bizui/src/bizcomponents/companytraining/CompanyTraining.profile.js new file mode 100644 index 000000000..01416414b --- /dev/null +++ b/bizui/src/bizcomponents/companytraining/CompanyTraining.profile.js @@ -0,0 +1,94 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './CompanyTraining.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (companyTraining,targetComponent) =>{ + const userContext = null + return ( + +{companyTraining.id} +{companyTraining.title} +{ moment(companyTraining.timeStart).format('YYYY-MM-DD')} +{companyTraining.durationHours} +{ moment(companyTraining.lastUpdateTime).format('YYYY-MM-DD')} + + + ) +} + + + +class CompanyTrainingProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const companyTraining = this.props.companyTraining; + const { id,displayName, employeeCompanyTrainingCount } = companyTraining + + const cardsData = {cardsName:"公司培训",cardsFor: "companyTraining",cardsSource: companyTraining, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + companyTraining: state._companyTraining, +}))(Form.create()(CompanyTrainingProfile)) + diff --git a/bizui/src/bizcomponents/companytraining/CompanyTraining.profile.less b/bizui/src/bizcomponents/companytraining/CompanyTraining.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/companytraining/CompanyTraining.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/companytraining/CompanyTraining.search.js b/bizui/src/bizcomponents/companytraining/CompanyTraining.search.js index 4b6515b05..c591f2ffc 100644 --- a/bizui/src/bizcomponents/companytraining/CompanyTraining.search.js +++ b/bizui/src/bizcomponents/companytraining/CompanyTraining.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/companytraining/CompanyTraining.searchform.js b/bizui/src/bizcomponents/companytraining/CompanyTraining.searchform.js index aa78264be..35e5d52aa 100644 --- a/bizui/src/bizcomponents/companytraining/CompanyTraining.searchform.js +++ b/bizui/src/bizcomponents/companytraining/CompanyTraining.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`companyTrainingList.searchField`] = fieldName - value[`companyTrainingList.searchVerb`] = searchVerb - value[`companyTrainingList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,13 +127,14 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'title')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'company')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'instructor')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'trainingCourseType')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'title')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'company')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'instructor')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'trainingCourseType')) console.log("the final parameter", paramList) @@ -149,11 +150,12 @@ componentDidMount() { } - params['companyTrainingList'] = 1 - params['companyTrainingList.orderBy.0'] = "id" - params['companyTrainingList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -208,8 +210,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -309,8 +311,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/companytraining/CompanyTraining.table.js b/bizui/src/bizcomponents/companytraining/CompanyTraining.table.js index 84b1451ed..2cde79da7 100644 --- a/bizui/src/bizcomponents/companytraining/CompanyTraining.table.js +++ b/bizui/src/bizcomponents/companytraining/CompanyTraining.table.js @@ -40,24 +40,53 @@ class CompanyTrainingTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = CompanyTrainingBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class CompanyTrainingTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class CompanyTrainingTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/companytraining/CompanyTraining.updateform.js b/bizui/src/bizcomponents/companytraining/CompanyTraining.updateform.js index 472f491a3..29779ccf1 100644 --- a/bizui/src/bizcomponents/companytraining/CompanyTraining.updateform.js +++ b/bizui/src/bizcomponents/companytraining/CompanyTraining.updateform.js @@ -263,7 +263,7 @@ class CompanyTrainingUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -275,7 +275,7 @@ class CompanyTrainingUpdateForm extends Component { initialValue: selectedRow.title, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -287,7 +287,7 @@ class CompanyTrainingUpdateForm extends Component { initialValue: selectedRow.timeStart, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -299,7 +299,7 @@ class CompanyTrainingUpdateForm extends Component { initialValue: selectedRow.durationHours, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/consumerorder/ConsumerOrder.app.js b/bizui/src/bizcomponents/consumerorder/ConsumerOrder.app.js index c887d2759..b6d829a74 100644 --- a/bizui/src/bizcomponents/consumerorder/ConsumerOrder.app.js +++ b/bizui/src/bizcomponents/consumerorder/ConsumerOrder.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class ConsumerOrderBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -402,12 +411,14 @@ class ConsumerOrderBizApp extends React.PureComponent { buildRouters = () =>{ const {ConsumerOrderDashboard} = GlobalComponents - const {ConsumerOrderPreference} = GlobalComponents + const {ConsumerOrderPermission} = GlobalComponents + const {ConsumerOrderProfile} = GlobalComponents const routers=[ {path:"/consumerOrder/:id/dashboard", component: ConsumerOrderDashboard}, - {path:"/consumerOrder/:id/preference", component: ConsumerOrderPreference}, + {path:"/consumerOrder/:id/profile", component: ConsumerOrderProfile}, + {path:"/consumerOrder/:id/permission", component: ConsumerOrderPermission}, diff --git a/bizui/src/bizcomponents/consumerorder/ConsumerOrder.associateform.js b/bizui/src/bizcomponents/consumerorder/ConsumerOrder.associateform.js index d577e86d0..ccb61b140 100644 --- a/bizui/src/bizcomponents/consumerorder/ConsumerOrder.associateform.js +++ b/bizui/src/bizcomponents/consumerorder/ConsumerOrder.associateform.js @@ -144,7 +144,7 @@ class ConsumerOrderAssociateForm extends Component { {getFieldDecorator('title', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/consumerorder/ConsumerOrder.associateform.less b/bizui/src/bizcomponents/consumerorder/ConsumerOrder.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/consumerorder/ConsumerOrder.associateform.less +++ b/bizui/src/bizcomponents/consumerorder/ConsumerOrder.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/consumerorder/ConsumerOrder.base.js b/bizui/src/bizcomponents/consumerorder/ConsumerOrder.base.js index 1946f1dea..da49c02fc 100644 --- a/bizui/src/bizcomponents/consumerorder/ConsumerOrder.base.js +++ b/bizui/src/bizcomponents/consumerorder/ConsumerOrder.base.js @@ -1,101 +1,45 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"消费者订单", menuFor: "consumerOrder", subItems: [ - {name: 'consumerOrderLineItemList', displayName:'消费者订单行项目', icon:'line',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'consumerOrderShippingGroupList', displayName:'消费订单送货分组', icon:'first-order',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'consumerOrderPaymentGroupList', displayName:'消费者订单付款组', icon:'first-order',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'consumerOrderPriceAdjustmentList', displayName:'消费品价格调整', icon:'ad',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'retailStoreMemberGiftCardConsumeRecordList', displayName:'零售商店会员卡消费记录', icon:'gift',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'consumerOrderLineItemList', displayName:'消费者订单行项目', icon:'line',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'consumerOrderShippingGroupList', displayName:'消费订单送货分组', icon:'first-order',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'consumerOrderPaymentGroupList', displayName:'消费者订单付款组', icon:'first-order',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'consumerOrderPriceAdjustmentList', displayName:'消费品价格调整', icon:'ad',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'retailStoreMemberGiftCardConsumeRecordList', displayName:'零售商店会员卡消费记录', icon:'gift',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) - -} - -const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'consumerOrder') }, - { title: '头衔', debugtype: 'string', dataIndex: 'title', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: '消费者', dataIndex: 'consumer', render: (text, record) => renderReferenceCell(text, record)}, - { title: '确认', dataIndex: 'confirmation', render: (text, record) => renderReferenceCell(text, record)}, - { title: '验收', dataIndex: 'approval', render: (text, record) => renderReferenceCell(text, record)}, - { title: '处理', dataIndex: 'processing', render: (text, record) => renderReferenceCell(text, record)}, - { title: '装运', dataIndex: 'shipment', render: (text, record) => renderReferenceCell(text, record)}, - { title: '送货', dataIndex: 'delivery', render: (text, record) => renderReferenceCell(text, record)}, - { title: '商场', dataIndex: 'store', render: (text, record) => renderReferenceCell(text, record)}, - { title: '最后更新时间', dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record) }, - { title: '当前状态', debugtype: 'string', dataIndex: 'currentStatus', width: '13',render: (text, record)=>renderTextCell(text,record) }, - -] - const fieldLabels = { id: '序号', title: '头衔', @@ -111,8 +55,56 @@ const fieldLabels = { } +const displayColumns = [ + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'consumerOrder') , sorter: true }, + { title: fieldLabels.title, debugtype: 'string', dataIndex: 'title', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.consumer, dataIndex: 'consumer', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.confirmation, dataIndex: 'confirmation', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.approval, dataIndex: 'approval', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.processing, dataIndex: 'processing', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.shipment, dataIndex: 'shipment', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.delivery, dataIndex: 'delivery', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.store, dataIndex: 'store', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.lastUpdateTime, dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record), sorter: true}, + { title: fieldLabels.currentStatus, debugtype: 'string', dataIndex: 'currentStatus', width: '13',render: (text, record)=>renderTextCell(text,record)}, + +] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({consumerOrder,targetComponent})=>{ + + + + const {ConsumerOrderService} = GlobalComponents + // const userContext = null + return ( + +{consumerOrder.id} +{consumerOrder.title} +{consumerOrder.consumer==null?appLocaleName(userContext,"NotAssigned"):`${consumerOrder.consumer.displayName}(${consumerOrder.consumer.id})`} + + showTransferModel(targetComponent,"消费者","retailStoreMember",ConsumerOrderService.requestCandidateConsumer, + ConsumerOrderService.transferToAnotherConsumer,"anotherConsumerId",consumerOrder.consumer?consumerOrder.consumer.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{consumerOrder.store==null?appLocaleName(userContext,"NotAssigned"):`${consumerOrder.store.displayName}(${consumerOrder.store.id})`} + + showTransferModel(targetComponent,"商场","retailStore",ConsumerOrderService.requestCandidateStore, + ConsumerOrderService.transferToAnotherStore,"anotherStoreId",consumerOrder.store?consumerOrder.store.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{ moment(consumerOrder.lastUpdateTime).format('YYYY-MM-DD')} +{consumerOrder.currentStatus} + + {buildTransferModal(consumerOrder,targetComponent)} + + ) + +} + + + -const ConsumerOrderBase={menuData,displayColumns,fieldLabels} +const ConsumerOrderBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default ConsumerOrderBase diff --git a/bizui/src/bizcomponents/consumerorder/ConsumerOrder.createform.js b/bizui/src/bizcomponents/consumerorder/ConsumerOrder.createform.js index c19bc5e99..333f88f19 100644 --- a/bizui/src/bizcomponents/consumerorder/ConsumerOrder.createform.js +++ b/bizui/src/bizcomponents/consumerorder/ConsumerOrder.createform.js @@ -208,7 +208,7 @@ class ConsumerOrderCreateForm extends Component { {getFieldDecorator('title', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/consumerorder/ConsumerOrder.dashboard.js b/bizui/src/bizcomponents/consumerorder/ConsumerOrder.dashboard.js index 410302254..de1be6d3c 100644 --- a/bizui/src/bizcomponents/consumerorder/ConsumerOrder.dashboard.js +++ b/bizui/src/bizcomponents/consumerorder/ConsumerOrder.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -154,6 +154,7 @@ class ConsumerOrderDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -162,13 +163,17 @@ class ConsumerOrderDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/consumerorder/ConsumerOrder.model.js b/bizui/src/bizcomponents/consumerorder/ConsumerOrder.model.js index e9b1eedf3..281034b46 100644 --- a/bizui/src/bizcomponents/consumerorder/ConsumerOrder.model.js +++ b/bizui/src/bizcomponents/consumerorder/ConsumerOrder.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/consumerOrder/${id}/list/\ConsumerOrderLineItemList/消费者订单行项目+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/consumerOrder/${id}/list/ConsumerOrderLineItemList/消费者订单行项目+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateConsumerOrderLineItem({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/consumerOrder/${id}/list/\ConsumerOrderLineItemList/消费者订单行项目列表`, state: newPlayload } + const location = { pathname: `/consumerOrder/${id}/list/ConsumerOrderLineItemList/消费者订单行项目列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextConsumerOrderLineItemUpdateRow({ payload }, { call, put }) { @@ -206,7 +206,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/consumerOrder/${id}/list/\ConsumerOrderShippingGroupList/消费订单送货分组+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/consumerOrder/${id}/list/ConsumerOrderShippingGroupList/消费订单送货分组+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateConsumerOrderShippingGroup({ payload }, { call, put }) { @@ -228,7 +228,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/consumerOrder/${id}/list/\ConsumerOrderShippingGroupList/消费订单送货分组列表`, state: newPlayload } + const location = { pathname: `/consumerOrder/${id}/list/ConsumerOrderShippingGroupList/消费订单送货分组列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextConsumerOrderShippingGroupUpdateRow({ payload }, { call, put }) { @@ -275,7 +275,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/consumerOrder/${id}/list/\ConsumerOrderPaymentGroupList/消费者订单付款组+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/consumerOrder/${id}/list/ConsumerOrderPaymentGroupList/消费者订单付款组+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateConsumerOrderPaymentGroup({ payload }, { call, put }) { @@ -297,7 +297,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/consumerOrder/${id}/list/\ConsumerOrderPaymentGroupList/消费者订单付款组列表`, state: newPlayload } + const location = { pathname: `/consumerOrder/${id}/list/ConsumerOrderPaymentGroupList/消费者订单付款组列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextConsumerOrderPaymentGroupUpdateRow({ payload }, { call, put }) { @@ -344,7 +344,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/consumerOrder/${id}/list/\ConsumerOrderPriceAdjustmentList/消费品价格调整+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/consumerOrder/${id}/list/ConsumerOrderPriceAdjustmentList/消费品价格调整+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateConsumerOrderPriceAdjustment({ payload }, { call, put }) { @@ -366,7 +366,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/consumerOrder/${id}/list/\ConsumerOrderPriceAdjustmentList/消费品价格调整列表`, state: newPlayload } + const location = { pathname: `/consumerOrder/${id}/list/ConsumerOrderPriceAdjustmentList/消费品价格调整列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextConsumerOrderPriceAdjustmentUpdateRow({ payload }, { call, put }) { @@ -413,7 +413,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/consumerOrder/${id}/list/\RetailStoreMemberGiftCardConsumeRecordList/零售商店会员卡消费记录+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/consumerOrder/${id}/list/RetailStoreMemberGiftCardConsumeRecordList/零售商店会员卡消费记录+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateRetailStoreMemberGiftCardConsumeRecord({ payload }, { call, put }) { @@ -435,7 +435,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/consumerOrder/${id}/list/\RetailStoreMemberGiftCardConsumeRecordList/零售商店会员卡消费记录列表`, state: newPlayload } + const location = { pathname: `/consumerOrder/${id}/list/RetailStoreMemberGiftCardConsumeRecordList/零售商店会员卡消费记录列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextRetailStoreMemberGiftCardConsumeRecordUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/consumerorder/ConsumerOrder.permission.js b/bizui/src/bizcomponents/consumerorder/ConsumerOrder.permission.js new file mode 100644 index 000000000..e353c153e --- /dev/null +++ b/bizui/src/bizcomponents/consumerorder/ConsumerOrder.permission.js @@ -0,0 +1,86 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './ConsumerOrder.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (consumerOrder,targetComponent) =>{ + const userContext = null + return ( + +{consumerOrder.id} +{consumerOrder.title} +{ moment(consumerOrder.lastUpdateTime).format('YYYY-MM-DD')} +{consumerOrder.currentStatus} + + + ) +} + + +const renderPermissionSetting = consumerOrder => { + const {ConsumerOrderBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class ConsumerOrderPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const consumerOrder = this.props.consumerOrder; + const { id,displayName, consumerOrderLineItemCount, consumerOrderShippingGroupCount, consumerOrderPaymentGroupCount, consumerOrderPriceAdjustmentCount, retailStoreMemberGiftCardConsumeRecordCount } = consumerOrder + const cardsData = {cardsName:"消费者订单",cardsFor: "consumerOrder",cardsSource: consumerOrder, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + consumerOrder: state._consumerOrder, +}))(Form.create()(ConsumerOrderPermission)) + diff --git a/bizui/src/bizcomponents/consumerorder/ConsumerOrder.permission.less b/bizui/src/bizcomponents/consumerorder/ConsumerOrder.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/consumerorder/ConsumerOrder.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/consumerorder/ConsumerOrder.preference.js b/bizui/src/bizcomponents/consumerorder/ConsumerOrder.preference.js index 37de96416..09e910690 100644 --- a/bizui/src/bizcomponents/consumerorder/ConsumerOrder.preference.js +++ b/bizui/src/bizcomponents/consumerorder/ConsumerOrder.preference.js @@ -313,8 +313,12 @@ class ConsumerOrderPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, consumerOrderLineItemCount, consumerOrderShippingGroupCount, consumerOrderPaymentGroupCount, consumerOrderPriceAdjustmentCount, retailStoreMemberGiftCardConsumeRecordCount } = this.props.consumerOrder - const cardsData = {cardsName:"消费者订单",cardsFor: "consumerOrder",cardsSource: this.props.consumerOrder, + const consumerOrder = this.props.consumerOrder; + const { id,displayName, consumerOrderLineItemCount, consumerOrderShippingGroupCount, consumerOrderPaymentGroupCount, consumerOrderPriceAdjustmentCount, retailStoreMemberGiftCardConsumeRecordCount } = consumerOrder + + + + const cardsData = {cardsName:"消费者订单",cardsFor: "consumerOrder",cardsSource: consumerOrder, subItems: [ ], diff --git a/bizui/src/bizcomponents/consumerorder/ConsumerOrder.profile.js b/bizui/src/bizcomponents/consumerorder/ConsumerOrder.profile.js new file mode 100644 index 000000000..29224b358 --- /dev/null +++ b/bizui/src/bizcomponents/consumerorder/ConsumerOrder.profile.js @@ -0,0 +1,93 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './ConsumerOrder.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (consumerOrder,targetComponent) =>{ + const userContext = null + return ( + +{consumerOrder.id} +{consumerOrder.title} +{ moment(consumerOrder.lastUpdateTime).format('YYYY-MM-DD')} +{consumerOrder.currentStatus} + + + ) +} + + + +class ConsumerOrderProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const consumerOrder = this.props.consumerOrder; + const { id,displayName, consumerOrderLineItemCount, consumerOrderShippingGroupCount, consumerOrderPaymentGroupCount, consumerOrderPriceAdjustmentCount, retailStoreMemberGiftCardConsumeRecordCount } = consumerOrder + + const cardsData = {cardsName:"消费者订单",cardsFor: "consumerOrder",cardsSource: consumerOrder, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + consumerOrder: state._consumerOrder, +}))(Form.create()(ConsumerOrderProfile)) + diff --git a/bizui/src/bizcomponents/consumerorder/ConsumerOrder.profile.less b/bizui/src/bizcomponents/consumerorder/ConsumerOrder.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/consumerorder/ConsumerOrder.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/consumerorder/ConsumerOrder.search.js b/bizui/src/bizcomponents/consumerorder/ConsumerOrder.search.js index 5ca5ebd20..a9c7948d0 100644 --- a/bizui/src/bizcomponents/consumerorder/ConsumerOrder.search.js +++ b/bizui/src/bizcomponents/consumerorder/ConsumerOrder.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/consumerorder/ConsumerOrder.searchform.js b/bizui/src/bizcomponents/consumerorder/ConsumerOrder.searchform.js index cdf5c0266..a023cf4b5 100644 --- a/bizui/src/bizcomponents/consumerorder/ConsumerOrder.searchform.js +++ b/bizui/src/bizcomponents/consumerorder/ConsumerOrder.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`consumerOrderList.searchField`] = fieldName - value[`consumerOrderList.searchVerb`] = searchVerb - value[`consumerOrderList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,13 +127,14 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'title')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'consumer')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'store')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'currentStatus')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'title')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'consumer')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'store')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'currentStatus')) console.log("the final parameter", paramList) @@ -149,11 +150,12 @@ componentDidMount() { } - params['consumerOrderList'] = 1 - params['consumerOrderList.orderBy.0'] = "id" - params['consumerOrderList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -208,8 +210,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -302,8 +304,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/consumerorder/ConsumerOrder.table.js b/bizui/src/bizcomponents/consumerorder/ConsumerOrder.table.js index 545205947..89d9cbf32 100644 --- a/bizui/src/bizcomponents/consumerorder/ConsumerOrder.table.js +++ b/bizui/src/bizcomponents/consumerorder/ConsumerOrder.table.js @@ -40,24 +40,53 @@ class ConsumerOrderTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = ConsumerOrderBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class ConsumerOrderTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class ConsumerOrderTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/consumerorder/ConsumerOrder.updateform.js b/bizui/src/bizcomponents/consumerorder/ConsumerOrder.updateform.js index 4c3bccbe3..10deea5f9 100644 --- a/bizui/src/bizcomponents/consumerorder/ConsumerOrder.updateform.js +++ b/bizui/src/bizcomponents/consumerorder/ConsumerOrder.updateform.js @@ -262,7 +262,7 @@ class ConsumerOrderUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class ConsumerOrderUpdateForm extends Component { initialValue: selectedRow.title, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.app.js b/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.app.js index 1f8705653..569331058 100644 --- a/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.app.js +++ b/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class ConsumerOrderApprovalBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -157,12 +166,14 @@ class ConsumerOrderApprovalBizApp extends React.PureComponent { buildRouters = () =>{ const {ConsumerOrderApprovalDashboard} = GlobalComponents - const {ConsumerOrderApprovalPreference} = GlobalComponents + const {ConsumerOrderApprovalPermission} = GlobalComponents + const {ConsumerOrderApprovalProfile} = GlobalComponents const routers=[ {path:"/consumerOrderApproval/:id/dashboard", component: ConsumerOrderApprovalDashboard}, - {path:"/consumerOrderApproval/:id/preference", component: ConsumerOrderApprovalPreference}, + {path:"/consumerOrderApproval/:id/profile", component: ConsumerOrderApprovalProfile}, + {path:"/consumerOrderApproval/:id/permission", component: ConsumerOrderApprovalPermission}, diff --git a/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.associateform.js b/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.associateform.js index a85e94ed7..080005736 100644 --- a/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.associateform.js +++ b/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { who: '批准者', - approveTime: '2018-06-22', + approveTime: '2016-06-07', } */ @@ -138,7 +138,7 @@ class ConsumerOrderApprovalAssociateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -148,7 +148,7 @@ class ConsumerOrderApprovalAssociateForm extends Component { {getFieldDecorator('approveTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.associateform.less b/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.associateform.less +++ b/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.base.js b/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.base.js index 38afee901..3c2d4d9ae 100644 --- a/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.base.js +++ b/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.base.js @@ -1,10 +1,33 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"消费者的订单审批", menuFor: "consumerOrderApproval", subItems: [ @@ -12,86 +35,42 @@ const menuData = {menuName:"消费者的订单审批", menuFor: "consumerOrderAp ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + who: '谁', + approveTime: '批准时间', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record) }, - { title: '谁', debugtype: 'string', dataIndex: 'who', width: '7',render: (text, record)=>renderTextCell(text,record) }, - { title: '批准时间', dataIndex: 'approveTime', render: (text, record) =>renderDateCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.who, debugtype: 'string', dataIndex: 'who', width: '7',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.approveTime, dataIndex: 'approveTime', render: (text, record) =>renderDateCell(text,record), sorter: true }, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({consumerOrderApproval,targetComponent})=>{ -const fieldLabels = { - id: '序号', - who: '谁', - approveTime: '批准时间', + + + const {ConsumerOrderApprovalService} = GlobalComponents + // const userContext = null + return ( + +{consumerOrderApproval.id} +{consumerOrderApproval.who} +{ moment(consumerOrderApproval.approveTime).format('YYYY-MM-DD')} + + {buildTransferModal(consumerOrderApproval,targetComponent)} + + ) } + + -const ConsumerOrderApprovalBase={menuData,displayColumns,fieldLabels} +const ConsumerOrderApprovalBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default ConsumerOrderApprovalBase diff --git a/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.createform.js b/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.createform.js index 7c4fca623..46c72ff7e 100644 --- a/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.createform.js +++ b/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { who: '批准者', - approveTime: '2019-03-03', + approveTime: '2018-05-09', } */ @@ -207,7 +207,7 @@ class ConsumerOrderApprovalCreateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -217,7 +217,7 @@ class ConsumerOrderApprovalCreateForm extends Component { {getFieldDecorator('approveTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.dashboard.js b/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.dashboard.js index 0f40e0f85..c0902d3b6 100644 --- a/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.dashboard.js +++ b/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -136,6 +136,7 @@ class ConsumerOrderApprovalDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -144,13 +145,17 @@ class ConsumerOrderApprovalDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.model.js b/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.model.js index 5195e78dd..bdb2eedb4 100644 --- a/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.model.js +++ b/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' diff --git a/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.permission.js b/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.permission.js new file mode 100644 index 000000000..884269316 --- /dev/null +++ b/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.permission.js @@ -0,0 +1,85 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './ConsumerOrderApproval.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (consumerOrderApproval,targetComponent) =>{ + const userContext = null + return ( + +{consumerOrderApproval.id} +{consumerOrderApproval.who} +{ moment(consumerOrderApproval.approveTime).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = consumerOrderApproval => { + const {ConsumerOrderApprovalBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class ConsumerOrderApprovalPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const consumerOrderApproval = this.props.consumerOrderApproval; + const { id,displayName, } = consumerOrderApproval + const cardsData = {cardsName:"消费者的订单审批",cardsFor: "consumerOrderApproval",cardsSource: consumerOrderApproval, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + consumerOrderApproval: state._consumerOrderApproval, +}))(Form.create()(ConsumerOrderApprovalPermission)) + diff --git a/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.permission.less b/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.preference.js b/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.preference.js index b948debf7..4b9121534 100644 --- a/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.preference.js +++ b/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.preference.js @@ -300,8 +300,12 @@ class ConsumerOrderApprovalPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, } = this.props.consumerOrderApproval - const cardsData = {cardsName:"消费者的订单审批",cardsFor: "consumerOrderApproval",cardsSource: this.props.consumerOrderApproval, + const consumerOrderApproval = this.props.consumerOrderApproval; + const { id,displayName, } = consumerOrderApproval + + + + const cardsData = {cardsName:"消费者的订单审批",cardsFor: "consumerOrderApproval",cardsSource: consumerOrderApproval, subItems: [ ], diff --git a/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.profile.js b/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.profile.js new file mode 100644 index 000000000..cded03efb --- /dev/null +++ b/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.profile.js @@ -0,0 +1,92 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './ConsumerOrderApproval.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (consumerOrderApproval,targetComponent) =>{ + const userContext = null + return ( + +{consumerOrderApproval.id} +{consumerOrderApproval.who} +{ moment(consumerOrderApproval.approveTime).format('YYYY-MM-DD')} + + + ) +} + + + +class ConsumerOrderApprovalProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const consumerOrderApproval = this.props.consumerOrderApproval; + const { id,displayName, } = consumerOrderApproval + + const cardsData = {cardsName:"消费者的订单审批",cardsFor: "consumerOrderApproval",cardsSource: consumerOrderApproval, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + consumerOrderApproval: state._consumerOrderApproval, +}))(Form.create()(ConsumerOrderApprovalProfile)) + diff --git a/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.profile.less b/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.search.js b/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.search.js index 95d70cea5..11d00341a 100644 --- a/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.search.js +++ b/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.searchform.js b/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.searchform.js index 5a635884d..3fcccd6b4 100644 --- a/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.searchform.js +++ b/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`consumerOrderApprovalList.searchField`] = fieldName - value[`consumerOrderApprovalList.searchVerb`] = searchVerb - value[`consumerOrderApprovalList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,10 +127,11 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'who')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'who')) console.log("the final parameter", paramList) @@ -146,11 +147,12 @@ componentDidMount() { } - params['consumerOrderApprovalList'] = 1 - params['consumerOrderApprovalList.orderBy.0'] = "id" - params['consumerOrderApprovalList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -205,8 +207,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -261,8 +263,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.table.js b/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.table.js index 0f9969389..74cda41e3 100644 --- a/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.table.js +++ b/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.table.js @@ -40,24 +40,53 @@ class ConsumerOrderApprovalTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = ConsumerOrderApprovalBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class ConsumerOrderApprovalTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class ConsumerOrderApprovalTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.updateform.js b/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.updateform.js index 00cce5e8d..3e8c66c27 100644 --- a/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.updateform.js +++ b/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.updateform.js @@ -262,7 +262,7 @@ class ConsumerOrderApprovalUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class ConsumerOrderApprovalUpdateForm extends Component { initialValue: selectedRow.who, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class ConsumerOrderApprovalUpdateForm extends Component { initialValue: selectedRow.approveTime, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.app.js b/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.app.js index 9ff29d97a..790e71442 100644 --- a/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.app.js +++ b/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class ConsumerOrderConfirmationBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -157,12 +166,14 @@ class ConsumerOrderConfirmationBizApp extends React.PureComponent { buildRouters = () =>{ const {ConsumerOrderConfirmationDashboard} = GlobalComponents - const {ConsumerOrderConfirmationPreference} = GlobalComponents + const {ConsumerOrderConfirmationPermission} = GlobalComponents + const {ConsumerOrderConfirmationProfile} = GlobalComponents const routers=[ {path:"/consumerOrderConfirmation/:id/dashboard", component: ConsumerOrderConfirmationDashboard}, - {path:"/consumerOrderConfirmation/:id/preference", component: ConsumerOrderConfirmationPreference}, + {path:"/consumerOrderConfirmation/:id/profile", component: ConsumerOrderConfirmationProfile}, + {path:"/consumerOrderConfirmation/:id/permission", component: ConsumerOrderConfirmationPermission}, diff --git a/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.associateform.js b/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.associateform.js index f6e4e71e2..35811123d 100644 --- a/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.associateform.js +++ b/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { who: '确认者', - confirmTime: '2018-03-28', + confirmTime: '2017-09-09', } */ @@ -138,7 +138,7 @@ class ConsumerOrderConfirmationAssociateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -148,7 +148,7 @@ class ConsumerOrderConfirmationAssociateForm extends Component { {getFieldDecorator('confirmTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.associateform.less b/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.associateform.less +++ b/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.base.js b/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.base.js index ce98ceec0..e45fa2516 100644 --- a/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.base.js +++ b/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.base.js @@ -1,10 +1,33 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"客户订单确认", menuFor: "consumerOrderConfirmation", subItems: [ @@ -12,86 +35,42 @@ const menuData = {menuName:"客户订单确认", menuFor: "consumerOrderConfirma ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + who: '谁', + confirmTime: '确认时间', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record) }, - { title: '谁', debugtype: 'string', dataIndex: 'who', width: '7',render: (text, record)=>renderTextCell(text,record) }, - { title: '确认时间', dataIndex: 'confirmTime', render: (text, record) =>renderDateCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.who, debugtype: 'string', dataIndex: 'who', width: '7',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.confirmTime, dataIndex: 'confirmTime', render: (text, record) =>renderDateCell(text,record), sorter: true }, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({consumerOrderConfirmation,targetComponent})=>{ -const fieldLabels = { - id: '序号', - who: '谁', - confirmTime: '确认时间', + + + const {ConsumerOrderConfirmationService} = GlobalComponents + // const userContext = null + return ( + +{consumerOrderConfirmation.id} +{consumerOrderConfirmation.who} +{ moment(consumerOrderConfirmation.confirmTime).format('YYYY-MM-DD')} + + {buildTransferModal(consumerOrderConfirmation,targetComponent)} + + ) } + + -const ConsumerOrderConfirmationBase={menuData,displayColumns,fieldLabels} +const ConsumerOrderConfirmationBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default ConsumerOrderConfirmationBase diff --git a/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.createform.js b/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.createform.js index c56cd1355..bde79f168 100644 --- a/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.createform.js +++ b/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { who: '确认者', - confirmTime: '2017-03-14', + confirmTime: '2017-11-24', } */ @@ -207,7 +207,7 @@ class ConsumerOrderConfirmationCreateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -217,7 +217,7 @@ class ConsumerOrderConfirmationCreateForm extends Component { {getFieldDecorator('confirmTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.dashboard.js b/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.dashboard.js index b22585e84..0105dd2df 100644 --- a/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.dashboard.js +++ b/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -136,6 +136,7 @@ class ConsumerOrderConfirmationDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -144,13 +145,17 @@ class ConsumerOrderConfirmationDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.model.js b/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.model.js index e341e7535..cd73c866b 100644 --- a/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.model.js +++ b/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' diff --git a/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.permission.js b/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.permission.js new file mode 100644 index 000000000..fafe1534c --- /dev/null +++ b/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.permission.js @@ -0,0 +1,85 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './ConsumerOrderConfirmation.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (consumerOrderConfirmation,targetComponent) =>{ + const userContext = null + return ( + +{consumerOrderConfirmation.id} +{consumerOrderConfirmation.who} +{ moment(consumerOrderConfirmation.confirmTime).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = consumerOrderConfirmation => { + const {ConsumerOrderConfirmationBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class ConsumerOrderConfirmationPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const consumerOrderConfirmation = this.props.consumerOrderConfirmation; + const { id,displayName, } = consumerOrderConfirmation + const cardsData = {cardsName:"客户订单确认",cardsFor: "consumerOrderConfirmation",cardsSource: consumerOrderConfirmation, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + consumerOrderConfirmation: state._consumerOrderConfirmation, +}))(Form.create()(ConsumerOrderConfirmationPermission)) + diff --git a/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.permission.less b/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.preference.js b/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.preference.js index 20ede1ba2..dfe03fa5e 100644 --- a/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.preference.js +++ b/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.preference.js @@ -300,8 +300,12 @@ class ConsumerOrderConfirmationPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, } = this.props.consumerOrderConfirmation - const cardsData = {cardsName:"客户订单确认",cardsFor: "consumerOrderConfirmation",cardsSource: this.props.consumerOrderConfirmation, + const consumerOrderConfirmation = this.props.consumerOrderConfirmation; + const { id,displayName, } = consumerOrderConfirmation + + + + const cardsData = {cardsName:"客户订单确认",cardsFor: "consumerOrderConfirmation",cardsSource: consumerOrderConfirmation, subItems: [ ], diff --git a/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.profile.js b/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.profile.js new file mode 100644 index 000000000..78c0e9255 --- /dev/null +++ b/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.profile.js @@ -0,0 +1,92 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './ConsumerOrderConfirmation.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (consumerOrderConfirmation,targetComponent) =>{ + const userContext = null + return ( + +{consumerOrderConfirmation.id} +{consumerOrderConfirmation.who} +{ moment(consumerOrderConfirmation.confirmTime).format('YYYY-MM-DD')} + + + ) +} + + + +class ConsumerOrderConfirmationProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const consumerOrderConfirmation = this.props.consumerOrderConfirmation; + const { id,displayName, } = consumerOrderConfirmation + + const cardsData = {cardsName:"客户订单确认",cardsFor: "consumerOrderConfirmation",cardsSource: consumerOrderConfirmation, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + consumerOrderConfirmation: state._consumerOrderConfirmation, +}))(Form.create()(ConsumerOrderConfirmationProfile)) + diff --git a/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.profile.less b/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.search.js b/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.search.js index ae5208aca..eac0aa45d 100644 --- a/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.search.js +++ b/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.searchform.js b/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.searchform.js index aab71a69f..933233343 100644 --- a/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.searchform.js +++ b/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`consumerOrderConfirmationList.searchField`] = fieldName - value[`consumerOrderConfirmationList.searchVerb`] = searchVerb - value[`consumerOrderConfirmationList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,10 +127,11 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'who')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'who')) console.log("the final parameter", paramList) @@ -146,11 +147,12 @@ componentDidMount() { } - params['consumerOrderConfirmationList'] = 1 - params['consumerOrderConfirmationList.orderBy.0'] = "id" - params['consumerOrderConfirmationList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -205,8 +207,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -261,8 +263,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.table.js b/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.table.js index 5498ca6ca..aaa4df026 100644 --- a/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.table.js +++ b/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.table.js @@ -40,24 +40,53 @@ class ConsumerOrderConfirmationTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = ConsumerOrderConfirmationBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class ConsumerOrderConfirmationTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class ConsumerOrderConfirmationTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.updateform.js b/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.updateform.js index e57b1b503..d9fbb75bb 100644 --- a/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.updateform.js +++ b/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.updateform.js @@ -262,7 +262,7 @@ class ConsumerOrderConfirmationUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class ConsumerOrderConfirmationUpdateForm extends Component { initialValue: selectedRow.who, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class ConsumerOrderConfirmationUpdateForm extends Component { initialValue: selectedRow.confirmTime, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.app.js b/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.app.js index a1a7924ce..3c829a75e 100644 --- a/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.app.js +++ b/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class ConsumerOrderDeliveryBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -157,12 +166,14 @@ class ConsumerOrderDeliveryBizApp extends React.PureComponent { buildRouters = () =>{ const {ConsumerOrderDeliveryDashboard} = GlobalComponents - const {ConsumerOrderDeliveryPreference} = GlobalComponents + const {ConsumerOrderDeliveryPermission} = GlobalComponents + const {ConsumerOrderDeliveryProfile} = GlobalComponents const routers=[ {path:"/consumerOrderDelivery/:id/dashboard", component: ConsumerOrderDeliveryDashboard}, - {path:"/consumerOrderDelivery/:id/preference", component: ConsumerOrderDeliveryPreference}, + {path:"/consumerOrderDelivery/:id/profile", component: ConsumerOrderDeliveryProfile}, + {path:"/consumerOrderDelivery/:id/permission", component: ConsumerOrderDeliveryPermission}, diff --git a/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.associateform.js b/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.associateform.js index 17200569f..c463be194 100644 --- a/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.associateform.js +++ b/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { who: '送货者', - deliveryTime: '2016-04-28', + deliveryTime: '2016-09-29', } */ @@ -138,7 +138,7 @@ class ConsumerOrderDeliveryAssociateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -148,7 +148,7 @@ class ConsumerOrderDeliveryAssociateForm extends Component { {getFieldDecorator('deliveryTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.associateform.less b/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.associateform.less +++ b/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.base.js b/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.base.js index 782a374b6..1985fea48 100644 --- a/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.base.js +++ b/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.base.js @@ -1,10 +1,33 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"消费者订单交货", menuFor: "consumerOrderDelivery", subItems: [ @@ -12,86 +35,42 @@ const menuData = {menuName:"消费者订单交货", menuFor: "consumerOrderDeliv ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + who: '谁', + deliveryTime: '交货时间', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record) }, - { title: '谁', debugtype: 'string', dataIndex: 'who', width: '7',render: (text, record)=>renderTextCell(text,record) }, - { title: '交货时间', dataIndex: 'deliveryTime', render: (text, record) =>renderDateCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.who, debugtype: 'string', dataIndex: 'who', width: '7',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.deliveryTime, dataIndex: 'deliveryTime', render: (text, record) =>renderDateCell(text,record), sorter: true }, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({consumerOrderDelivery,targetComponent})=>{ -const fieldLabels = { - id: '序号', - who: '谁', - deliveryTime: '交货时间', + + + const {ConsumerOrderDeliveryService} = GlobalComponents + // const userContext = null + return ( + +{consumerOrderDelivery.id} +{consumerOrderDelivery.who} +{ moment(consumerOrderDelivery.deliveryTime).format('YYYY-MM-DD')} + + {buildTransferModal(consumerOrderDelivery,targetComponent)} + + ) } + + -const ConsumerOrderDeliveryBase={menuData,displayColumns,fieldLabels} +const ConsumerOrderDeliveryBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default ConsumerOrderDeliveryBase diff --git a/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.createform.js b/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.createform.js index 472addeee..1045169d1 100644 --- a/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.createform.js +++ b/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { who: '送货者', - deliveryTime: '2018-12-09', + deliveryTime: '2018-02-26', } */ @@ -207,7 +207,7 @@ class ConsumerOrderDeliveryCreateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -217,7 +217,7 @@ class ConsumerOrderDeliveryCreateForm extends Component { {getFieldDecorator('deliveryTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.dashboard.js b/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.dashboard.js index 9348ca834..1f888ca6b 100644 --- a/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.dashboard.js +++ b/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -136,6 +136,7 @@ class ConsumerOrderDeliveryDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -144,13 +145,17 @@ class ConsumerOrderDeliveryDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.model.js b/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.model.js index 1f1b5059c..9fe372a02 100644 --- a/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.model.js +++ b/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' diff --git a/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.permission.js b/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.permission.js new file mode 100644 index 000000000..a669bd236 --- /dev/null +++ b/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.permission.js @@ -0,0 +1,85 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './ConsumerOrderDelivery.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (consumerOrderDelivery,targetComponent) =>{ + const userContext = null + return ( + +{consumerOrderDelivery.id} +{consumerOrderDelivery.who} +{ moment(consumerOrderDelivery.deliveryTime).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = consumerOrderDelivery => { + const {ConsumerOrderDeliveryBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class ConsumerOrderDeliveryPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const consumerOrderDelivery = this.props.consumerOrderDelivery; + const { id,displayName, } = consumerOrderDelivery + const cardsData = {cardsName:"消费者订单交货",cardsFor: "consumerOrderDelivery",cardsSource: consumerOrderDelivery, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + consumerOrderDelivery: state._consumerOrderDelivery, +}))(Form.create()(ConsumerOrderDeliveryPermission)) + diff --git a/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.permission.less b/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.preference.js b/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.preference.js index 81095a9d6..11700d547 100644 --- a/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.preference.js +++ b/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.preference.js @@ -300,8 +300,12 @@ class ConsumerOrderDeliveryPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, } = this.props.consumerOrderDelivery - const cardsData = {cardsName:"消费者订单交货",cardsFor: "consumerOrderDelivery",cardsSource: this.props.consumerOrderDelivery, + const consumerOrderDelivery = this.props.consumerOrderDelivery; + const { id,displayName, } = consumerOrderDelivery + + + + const cardsData = {cardsName:"消费者订单交货",cardsFor: "consumerOrderDelivery",cardsSource: consumerOrderDelivery, subItems: [ ], diff --git a/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.profile.js b/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.profile.js new file mode 100644 index 000000000..1b1d169ed --- /dev/null +++ b/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.profile.js @@ -0,0 +1,92 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './ConsumerOrderDelivery.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (consumerOrderDelivery,targetComponent) =>{ + const userContext = null + return ( + +{consumerOrderDelivery.id} +{consumerOrderDelivery.who} +{ moment(consumerOrderDelivery.deliveryTime).format('YYYY-MM-DD')} + + + ) +} + + + +class ConsumerOrderDeliveryProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const consumerOrderDelivery = this.props.consumerOrderDelivery; + const { id,displayName, } = consumerOrderDelivery + + const cardsData = {cardsName:"消费者订单交货",cardsFor: "consumerOrderDelivery",cardsSource: consumerOrderDelivery, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + consumerOrderDelivery: state._consumerOrderDelivery, +}))(Form.create()(ConsumerOrderDeliveryProfile)) + diff --git a/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.profile.less b/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.search.js b/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.search.js index 3a630023f..6df82bee9 100644 --- a/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.search.js +++ b/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.searchform.js b/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.searchform.js index 7b4b76c51..bffa1d061 100644 --- a/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.searchform.js +++ b/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`consumerOrderDeliveryList.searchField`] = fieldName - value[`consumerOrderDeliveryList.searchVerb`] = searchVerb - value[`consumerOrderDeliveryList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,10 +127,11 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'who')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'who')) console.log("the final parameter", paramList) @@ -146,11 +147,12 @@ componentDidMount() { } - params['consumerOrderDeliveryList'] = 1 - params['consumerOrderDeliveryList.orderBy.0'] = "id" - params['consumerOrderDeliveryList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -205,8 +207,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -261,8 +263,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.table.js b/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.table.js index 0621d0d0b..594ef5236 100644 --- a/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.table.js +++ b/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.table.js @@ -40,24 +40,53 @@ class ConsumerOrderDeliveryTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = ConsumerOrderDeliveryBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class ConsumerOrderDeliveryTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class ConsumerOrderDeliveryTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.updateform.js b/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.updateform.js index 003681556..9f3ffb677 100644 --- a/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.updateform.js +++ b/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.updateform.js @@ -262,7 +262,7 @@ class ConsumerOrderDeliveryUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class ConsumerOrderDeliveryUpdateForm extends Component { initialValue: selectedRow.who, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class ConsumerOrderDeliveryUpdateForm extends Component { initialValue: selectedRow.deliveryTime, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.app.js b/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.app.js index 6d5648a00..11fe7b598 100644 --- a/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.app.js +++ b/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class ConsumerOrderLineItemBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -157,12 +166,14 @@ class ConsumerOrderLineItemBizApp extends React.PureComponent { buildRouters = () =>{ const {ConsumerOrderLineItemDashboard} = GlobalComponents - const {ConsumerOrderLineItemPreference} = GlobalComponents + const {ConsumerOrderLineItemPermission} = GlobalComponents + const {ConsumerOrderLineItemProfile} = GlobalComponents const routers=[ {path:"/consumerOrderLineItem/:id/dashboard", component: ConsumerOrderLineItemDashboard}, - {path:"/consumerOrderLineItem/:id/preference", component: ConsumerOrderLineItemPreference}, + {path:"/consumerOrderLineItem/:id/profile", component: ConsumerOrderLineItemProfile}, + {path:"/consumerOrderLineItem/:id/permission", component: ConsumerOrderLineItemPermission}, diff --git a/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.associateform.js b/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.associateform.js index 9c07e3dc6..b8a6aa039 100644 --- a/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.associateform.js +++ b/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.associateform.js @@ -20,9 +20,9 @@ const testValues = {}; const testValues = { skuId: 'SKU', skuName: '大瓶可乐', - price: '5.85', - quantity: '812.60', - amount: '9672.72', + price: '5.26', + quantity: '848.95', + amount: '9191.32', bizOrderId: 'CO000001', } */ @@ -142,7 +142,7 @@ class ConsumerOrderLineItemAssociateForm extends Component { {getFieldDecorator('skuId', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -152,7 +152,7 @@ class ConsumerOrderLineItemAssociateForm extends Component { {getFieldDecorator('skuName', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -162,7 +162,7 @@ class ConsumerOrderLineItemAssociateForm extends Component { {getFieldDecorator('price', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -172,7 +172,7 @@ class ConsumerOrderLineItemAssociateForm extends Component { {getFieldDecorator('quantity', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -182,7 +182,7 @@ class ConsumerOrderLineItemAssociateForm extends Component { {getFieldDecorator('amount', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.associateform.less b/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.associateform.less +++ b/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.base.js b/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.base.js index a07334023..d1a930a30 100644 --- a/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.base.js +++ b/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.base.js @@ -1,10 +1,33 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"消费者订单行项目", menuFor: "consumerOrderLineItem", subItems: [ @@ -12,82 +35,6 @@ const menuData = {menuName:"消费者订单行项目", menuFor: "consumerOrderLi ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) - -} - -const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record) }, - { title: '订单', dataIndex: 'bizOrder', render: (text, record) => renderReferenceCell(text, record)}, - { title: '产品ID', debugtype: 'string', dataIndex: 'skuId', width: '7',render: (text, record)=>renderTextCell(text,record) }, - { title: '产品名称', debugtype: 'string', dataIndex: 'skuName', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: '价格', dataIndex: 'price', className:'money', render: (text, record) => renderMoneyCell(text, record) }, - { title: '数量', debugtype: 'double', dataIndex: 'quantity', width: '11',render: (text, record)=>renderTextCell(text,record) }, - { title: '金额', dataIndex: 'amount', className:'money', render: (text, record) => renderMoneyCell(text, record) }, - { title: '最后更新时间', dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record) }, - -] - const fieldLabels = { id: '序号', bizOrder: '订单', @@ -100,8 +47,50 @@ const fieldLabels = { } +const displayColumns = [ + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.bizOrder, dataIndex: 'bizOrder', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.skuId, debugtype: 'string', dataIndex: 'skuId', width: '7',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.skuName, debugtype: 'string', dataIndex: 'skuName', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.price, dataIndex: 'price', className:'money', render: (text, record) => renderMoneyCell(text, record), sorter: true }, + { title: fieldLabels.quantity, debugtype: 'double', dataIndex: 'quantity', width: '11',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.amount, dataIndex: 'amount', className:'money', render: (text, record) => renderMoneyCell(text, record), sorter: true }, + { title: fieldLabels.lastUpdateTime, dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record), sorter: true}, + +] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({consumerOrderLineItem,targetComponent})=>{ + + + + const {ConsumerOrderLineItemService} = GlobalComponents + // const userContext = null + return ( + +{consumerOrderLineItem.id} +{consumerOrderLineItem.bizOrder==null?appLocaleName(userContext,"NotAssigned"):`${consumerOrderLineItem.bizOrder.displayName}(${consumerOrderLineItem.bizOrder.id})`} + + showTransferModel(targetComponent,"订单","consumerOrder",ConsumerOrderLineItemService.requestCandidateBizOrder, + ConsumerOrderLineItemService.transferToAnotherBizOrder,"anotherBizOrderId",consumerOrderLineItem.bizOrder?consumerOrderLineItem.bizOrder.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{consumerOrderLineItem.skuId} +{consumerOrderLineItem.skuName} +{consumerOrderLineItem.price} +{consumerOrderLineItem.quantity} +{consumerOrderLineItem.amount} +{ moment(consumerOrderLineItem.lastUpdateTime).format('YYYY-MM-DD')} + + {buildTransferModal(consumerOrderLineItem,targetComponent)} + + ) + +} + + + -const ConsumerOrderLineItemBase={menuData,displayColumns,fieldLabels} +const ConsumerOrderLineItemBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default ConsumerOrderLineItemBase diff --git a/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.createform.js b/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.createform.js index adfdc4856..182792ac7 100644 --- a/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.createform.js +++ b/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.createform.js @@ -19,9 +19,9 @@ const testValues = {}; const testValues = { skuId: 'SKU', skuName: '大瓶可乐', - price: '5.92', - quantity: '796.90', - amount: '7830.55', + price: '4.40', + quantity: '971.77', + amount: '7242.78', bizOrderId: 'CO000001', } */ @@ -211,7 +211,7 @@ class ConsumerOrderLineItemCreateForm extends Component { {getFieldDecorator('skuId', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -221,7 +221,7 @@ class ConsumerOrderLineItemCreateForm extends Component { {getFieldDecorator('skuName', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -231,7 +231,7 @@ class ConsumerOrderLineItemCreateForm extends Component { {getFieldDecorator('price', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -241,7 +241,7 @@ class ConsumerOrderLineItemCreateForm extends Component { {getFieldDecorator('quantity', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -251,7 +251,7 @@ class ConsumerOrderLineItemCreateForm extends Component { {getFieldDecorator('amount', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.dashboard.js b/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.dashboard.js index 774fcf3f5..e4d7240c2 100644 --- a/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.dashboard.js +++ b/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -146,6 +146,7 @@ class ConsumerOrderLineItemDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -154,13 +155,17 @@ class ConsumerOrderLineItemDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.model.js b/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.model.js index ea37c3b60..773886715 100644 --- a/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.model.js +++ b/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' diff --git a/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.permission.js b/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.permission.js new file mode 100644 index 000000000..7240ee784 --- /dev/null +++ b/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.permission.js @@ -0,0 +1,89 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './ConsumerOrderLineItem.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (consumerOrderLineItem,targetComponent) =>{ + const userContext = null + return ( + +{consumerOrderLineItem.id} +{consumerOrderLineItem.skuId} +{consumerOrderLineItem.skuName} +{consumerOrderLineItem.price} +{consumerOrderLineItem.quantity} +{consumerOrderLineItem.amount} +{ moment(consumerOrderLineItem.lastUpdateTime).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = consumerOrderLineItem => { + const {ConsumerOrderLineItemBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class ConsumerOrderLineItemPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const consumerOrderLineItem = this.props.consumerOrderLineItem; + const { id,displayName, } = consumerOrderLineItem + const cardsData = {cardsName:"消费者订单行项目",cardsFor: "consumerOrderLineItem",cardsSource: consumerOrderLineItem, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + consumerOrderLineItem: state._consumerOrderLineItem, +}))(Form.create()(ConsumerOrderLineItemPermission)) + diff --git a/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.permission.less b/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.preference.js b/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.preference.js index be69f7012..0d3f1e594 100644 --- a/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.preference.js +++ b/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.preference.js @@ -310,8 +310,12 @@ class ConsumerOrderLineItemPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, } = this.props.consumerOrderLineItem - const cardsData = {cardsName:"消费者订单行项目",cardsFor: "consumerOrderLineItem",cardsSource: this.props.consumerOrderLineItem, + const consumerOrderLineItem = this.props.consumerOrderLineItem; + const { id,displayName, } = consumerOrderLineItem + + + + const cardsData = {cardsName:"消费者订单行项目",cardsFor: "consumerOrderLineItem",cardsSource: consumerOrderLineItem, subItems: [ ], diff --git a/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.profile.js b/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.profile.js new file mode 100644 index 000000000..963c28083 --- /dev/null +++ b/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.profile.js @@ -0,0 +1,96 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './ConsumerOrderLineItem.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (consumerOrderLineItem,targetComponent) =>{ + const userContext = null + return ( + +{consumerOrderLineItem.id} +{consumerOrderLineItem.skuId} +{consumerOrderLineItem.skuName} +{consumerOrderLineItem.price} +{consumerOrderLineItem.quantity} +{consumerOrderLineItem.amount} +{ moment(consumerOrderLineItem.lastUpdateTime).format('YYYY-MM-DD')} + + + ) +} + + + +class ConsumerOrderLineItemProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const consumerOrderLineItem = this.props.consumerOrderLineItem; + const { id,displayName, } = consumerOrderLineItem + + const cardsData = {cardsName:"消费者订单行项目",cardsFor: "consumerOrderLineItem",cardsSource: consumerOrderLineItem, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + consumerOrderLineItem: state._consumerOrderLineItem, +}))(Form.create()(ConsumerOrderLineItemProfile)) + diff --git a/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.profile.less b/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.search.js b/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.search.js index 394872dd8..454e34721 100644 --- a/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.search.js +++ b/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.searchform.js b/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.searchform.js index 13976cc12..d2bb238e0 100644 --- a/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.searchform.js +++ b/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`consumerOrderLineItemList.searchField`] = fieldName - value[`consumerOrderLineItemList.searchVerb`] = searchVerb - value[`consumerOrderLineItemList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,12 +127,13 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'bizOrder')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'skuId')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'skuName')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'bizOrder')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'skuId')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'skuName')) console.log("the final parameter", paramList) @@ -148,11 +149,12 @@ componentDidMount() { } - params['consumerOrderLineItemList'] = 1 - params['consumerOrderLineItemList.orderBy.0'] = "id" - params['consumerOrderLineItemList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -214,8 +216,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -293,8 +295,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.table.js b/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.table.js index 71b04ad4e..720087b6a 100644 --- a/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.table.js +++ b/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.table.js @@ -40,24 +40,53 @@ class ConsumerOrderLineItemTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = ConsumerOrderLineItemBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class ConsumerOrderLineItemTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class ConsumerOrderLineItemTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.updateform.js b/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.updateform.js index 461a069f2..3af7dce1b 100644 --- a/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.updateform.js +++ b/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.updateform.js @@ -262,7 +262,7 @@ class ConsumerOrderLineItemUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class ConsumerOrderLineItemUpdateForm extends Component { initialValue: selectedRow.skuId, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class ConsumerOrderLineItemUpdateForm extends Component { initialValue: selectedRow.skuName, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -298,7 +298,7 @@ class ConsumerOrderLineItemUpdateForm extends Component { initialValue: selectedRow.price, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -310,7 +310,7 @@ class ConsumerOrderLineItemUpdateForm extends Component { initialValue: selectedRow.quantity, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -322,7 +322,7 @@ class ConsumerOrderLineItemUpdateForm extends Component { initialValue: selectedRow.amount, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.app.js b/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.app.js index 5c3e72516..8a726ff52 100644 --- a/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.app.js +++ b/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class ConsumerOrderPaymentGroupBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -157,12 +166,14 @@ class ConsumerOrderPaymentGroupBizApp extends React.PureComponent { buildRouters = () =>{ const {ConsumerOrderPaymentGroupDashboard} = GlobalComponents - const {ConsumerOrderPaymentGroupPreference} = GlobalComponents + const {ConsumerOrderPaymentGroupPermission} = GlobalComponents + const {ConsumerOrderPaymentGroupProfile} = GlobalComponents const routers=[ {path:"/consumerOrderPaymentGroup/:id/dashboard", component: ConsumerOrderPaymentGroupDashboard}, - {path:"/consumerOrderPaymentGroup/:id/preference", component: ConsumerOrderPaymentGroupPreference}, + {path:"/consumerOrderPaymentGroup/:id/profile", component: ConsumerOrderPaymentGroupProfile}, + {path:"/consumerOrderPaymentGroup/:id/permission", component: ConsumerOrderPaymentGroupPermission}, diff --git a/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.associateform.js b/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.associateform.js index b06208c81..85ce5dfa7 100644 --- a/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.associateform.js +++ b/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.associateform.js @@ -139,7 +139,7 @@ class ConsumerOrderPaymentGroupAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -149,7 +149,7 @@ class ConsumerOrderPaymentGroupAssociateForm extends Component { {getFieldDecorator('cardNumber', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.associateform.less b/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.associateform.less +++ b/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.base.js b/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.base.js index 4bdb1dc2a..37f2e03fa 100644 --- a/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.base.js +++ b/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.base.js @@ -1,10 +1,33 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"消费者订单付款组", menuFor: "consumerOrderPaymentGroup", subItems: [ @@ -12,88 +35,50 @@ const menuData = {menuName:"消费者订单付款组", menuFor: "consumerOrderPa ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + name: '名称', + bizOrder: '订单', + cardNumber: '卡号码', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record) }, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: '订单', dataIndex: 'bizOrder', render: (text, record) => renderReferenceCell(text, record)}, - { title: '卡号码', debugtype: 'string', dataIndex: 'cardNumber', width: '21',render: (text, record)=>renderTextCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.bizOrder, dataIndex: 'bizOrder', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.cardNumber, debugtype: 'string', dataIndex: 'cardNumber', width: '21',render: (text, record)=>renderTextCell(text,record)}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({consumerOrderPaymentGroup,targetComponent})=>{ -const fieldLabels = { - id: '序号', - name: '名称', - bizOrder: '订单', - cardNumber: '卡号码', + + + const {ConsumerOrderPaymentGroupService} = GlobalComponents + // const userContext = null + return ( + +{consumerOrderPaymentGroup.id} +{consumerOrderPaymentGroup.name} +{consumerOrderPaymentGroup.bizOrder==null?appLocaleName(userContext,"NotAssigned"):`${consumerOrderPaymentGroup.bizOrder.displayName}(${consumerOrderPaymentGroup.bizOrder.id})`} + + showTransferModel(targetComponent,"订单","consumerOrder",ConsumerOrderPaymentGroupService.requestCandidateBizOrder, + ConsumerOrderPaymentGroupService.transferToAnotherBizOrder,"anotherBizOrderId",consumerOrderPaymentGroup.bizOrder?consumerOrderPaymentGroup.bizOrder.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{consumerOrderPaymentGroup.cardNumber} + + {buildTransferModal(consumerOrderPaymentGroup,targetComponent)} + + ) } + + -const ConsumerOrderPaymentGroupBase={menuData,displayColumns,fieldLabels} +const ConsumerOrderPaymentGroupBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default ConsumerOrderPaymentGroupBase diff --git a/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.createform.js b/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.createform.js index 5a3bcfca4..1f2a29bfb 100644 --- a/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.createform.js +++ b/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.createform.js @@ -208,7 +208,7 @@ class ConsumerOrderPaymentGroupCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -218,7 +218,7 @@ class ConsumerOrderPaymentGroupCreateForm extends Component { {getFieldDecorator('cardNumber', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.dashboard.js b/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.dashboard.js index 699664513..1b15de627 100644 --- a/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.dashboard.js +++ b/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -142,6 +142,7 @@ class ConsumerOrderPaymentGroupDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -150,13 +151,17 @@ class ConsumerOrderPaymentGroupDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.model.js b/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.model.js index b2ccde4ea..2f650e86a 100644 --- a/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.model.js +++ b/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' diff --git a/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.permission.js b/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.permission.js new file mode 100644 index 000000000..566f495fd --- /dev/null +++ b/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.permission.js @@ -0,0 +1,85 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './ConsumerOrderPaymentGroup.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (consumerOrderPaymentGroup,targetComponent) =>{ + const userContext = null + return ( + +{consumerOrderPaymentGroup.id} +{consumerOrderPaymentGroup.name} +{consumerOrderPaymentGroup.cardNumber} + + + ) +} + + +const renderPermissionSetting = consumerOrderPaymentGroup => { + const {ConsumerOrderPaymentGroupBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class ConsumerOrderPaymentGroupPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const consumerOrderPaymentGroup = this.props.consumerOrderPaymentGroup; + const { id,displayName, } = consumerOrderPaymentGroup + const cardsData = {cardsName:"消费者订单付款组",cardsFor: "consumerOrderPaymentGroup",cardsSource: consumerOrderPaymentGroup, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + consumerOrderPaymentGroup: state._consumerOrderPaymentGroup, +}))(Form.create()(ConsumerOrderPaymentGroupPermission)) + diff --git a/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.permission.less b/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.preference.js b/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.preference.js index 1d06b9d51..d427cbe7b 100644 --- a/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.preference.js +++ b/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.preference.js @@ -306,8 +306,12 @@ class ConsumerOrderPaymentGroupPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, } = this.props.consumerOrderPaymentGroup - const cardsData = {cardsName:"消费者订单付款组",cardsFor: "consumerOrderPaymentGroup",cardsSource: this.props.consumerOrderPaymentGroup, + const consumerOrderPaymentGroup = this.props.consumerOrderPaymentGroup; + const { id,displayName, } = consumerOrderPaymentGroup + + + + const cardsData = {cardsName:"消费者订单付款组",cardsFor: "consumerOrderPaymentGroup",cardsSource: consumerOrderPaymentGroup, subItems: [ ], diff --git a/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.profile.js b/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.profile.js new file mode 100644 index 000000000..a29a534e1 --- /dev/null +++ b/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.profile.js @@ -0,0 +1,92 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './ConsumerOrderPaymentGroup.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (consumerOrderPaymentGroup,targetComponent) =>{ + const userContext = null + return ( + +{consumerOrderPaymentGroup.id} +{consumerOrderPaymentGroup.name} +{consumerOrderPaymentGroup.cardNumber} + + + ) +} + + + +class ConsumerOrderPaymentGroupProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const consumerOrderPaymentGroup = this.props.consumerOrderPaymentGroup; + const { id,displayName, } = consumerOrderPaymentGroup + + const cardsData = {cardsName:"消费者订单付款组",cardsFor: "consumerOrderPaymentGroup",cardsSource: consumerOrderPaymentGroup, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + consumerOrderPaymentGroup: state._consumerOrderPaymentGroup, +}))(Form.create()(ConsumerOrderPaymentGroupProfile)) + diff --git a/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.profile.less b/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.search.js b/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.search.js index 1be5b5c4e..36ce42f03 100644 --- a/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.search.js +++ b/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.searchform.js b/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.searchform.js index a22738c5c..d9bbc786f 100644 --- a/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.searchform.js +++ b/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`consumerOrderPaymentGroupList.searchField`] = fieldName - value[`consumerOrderPaymentGroupList.searchVerb`] = searchVerb - value[`consumerOrderPaymentGroupList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,12 +127,13 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'bizOrder')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'cardNumber')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'bizOrder')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'cardNumber')) console.log("the final parameter", paramList) @@ -148,11 +149,12 @@ componentDidMount() { } - params['consumerOrderPaymentGroupList'] = 1 - params['consumerOrderPaymentGroupList.orderBy.0'] = "id" - params['consumerOrderPaymentGroupList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -207,8 +209,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -286,8 +288,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.table.js b/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.table.js index f9e612b7a..08c046a61 100644 --- a/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.table.js +++ b/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.table.js @@ -40,24 +40,53 @@ class ConsumerOrderPaymentGroupTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = ConsumerOrderPaymentGroupBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class ConsumerOrderPaymentGroupTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class ConsumerOrderPaymentGroupTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.updateform.js b/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.updateform.js index 0afd3979e..aafd2b92c 100644 --- a/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.updateform.js +++ b/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.updateform.js @@ -261,7 +261,7 @@ class ConsumerOrderPaymentGroupUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class ConsumerOrderPaymentGroupUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -285,7 +285,7 @@ class ConsumerOrderPaymentGroupUpdateForm extends Component { initialValue: selectedRow.cardNumber, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.app.js b/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.app.js index 757d2da3d..e1d09aff5 100644 --- a/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.app.js +++ b/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class ConsumerOrderPriceAdjustmentBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -157,12 +166,14 @@ class ConsumerOrderPriceAdjustmentBizApp extends React.PureComponent { buildRouters = () =>{ const {ConsumerOrderPriceAdjustmentDashboard} = GlobalComponents - const {ConsumerOrderPriceAdjustmentPreference} = GlobalComponents + const {ConsumerOrderPriceAdjustmentPermission} = GlobalComponents + const {ConsumerOrderPriceAdjustmentProfile} = GlobalComponents const routers=[ {path:"/consumerOrderPriceAdjustment/:id/dashboard", component: ConsumerOrderPriceAdjustmentDashboard}, - {path:"/consumerOrderPriceAdjustment/:id/preference", component: ConsumerOrderPriceAdjustmentPreference}, + {path:"/consumerOrderPriceAdjustment/:id/profile", component: ConsumerOrderPriceAdjustmentProfile}, + {path:"/consumerOrderPriceAdjustment/:id/permission", component: ConsumerOrderPriceAdjustmentPermission}, diff --git a/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.associateform.js b/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.associateform.js index 2cb95fae4..bdef284e3 100644 --- a/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.associateform.js +++ b/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { name: '端午促销', - amount: '435.04', + amount: '429.73', provider: '供货商', bizOrderId: 'CO000001', } @@ -140,7 +140,7 @@ class ConsumerOrderPriceAdjustmentAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -150,7 +150,7 @@ class ConsumerOrderPriceAdjustmentAssociateForm extends Component { {getFieldDecorator('amount', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -160,7 +160,7 @@ class ConsumerOrderPriceAdjustmentAssociateForm extends Component { {getFieldDecorator('provider', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.associateform.less b/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.associateform.less +++ b/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.base.js b/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.base.js index a467e1fc7..8ebcff587 100644 --- a/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.base.js +++ b/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.base.js @@ -1,10 +1,33 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"消费品价格调整", menuFor: "consumerOrderPriceAdjustment", subItems: [ @@ -12,90 +35,53 @@ const menuData = {menuName:"消费品价格调整", menuFor: "consumerOrderPrice ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + name: '名称', + bizOrder: '订单', + amount: '金额', + provider: '供应商', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record) }, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: '订单', dataIndex: 'bizOrder', render: (text, record) => renderReferenceCell(text, record)}, - { title: '金额', dataIndex: 'amount', className:'money', render: (text, record) => renderMoneyCell(text, record) }, - { title: '供应商', debugtype: 'string', dataIndex: 'provider', width: '8',render: (text, record)=>renderTextCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.bizOrder, dataIndex: 'bizOrder', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.amount, dataIndex: 'amount', className:'money', render: (text, record) => renderMoneyCell(text, record), sorter: true }, + { title: fieldLabels.provider, debugtype: 'string', dataIndex: 'provider', width: '8',render: (text, record)=>renderTextCell(text,record)}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({consumerOrderPriceAdjustment,targetComponent})=>{ -const fieldLabels = { - id: '序号', - name: '名称', - bizOrder: '订单', - amount: '金额', - provider: '供应商', + + + const {ConsumerOrderPriceAdjustmentService} = GlobalComponents + // const userContext = null + return ( + +{consumerOrderPriceAdjustment.id} +{consumerOrderPriceAdjustment.name} +{consumerOrderPriceAdjustment.bizOrder==null?appLocaleName(userContext,"NotAssigned"):`${consumerOrderPriceAdjustment.bizOrder.displayName}(${consumerOrderPriceAdjustment.bizOrder.id})`} + + showTransferModel(targetComponent,"订单","consumerOrder",ConsumerOrderPriceAdjustmentService.requestCandidateBizOrder, + ConsumerOrderPriceAdjustmentService.transferToAnotherBizOrder,"anotherBizOrderId",consumerOrderPriceAdjustment.bizOrder?consumerOrderPriceAdjustment.bizOrder.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{consumerOrderPriceAdjustment.amount} +{consumerOrderPriceAdjustment.provider} + + {buildTransferModal(consumerOrderPriceAdjustment,targetComponent)} + + ) } + + -const ConsumerOrderPriceAdjustmentBase={menuData,displayColumns,fieldLabels} +const ConsumerOrderPriceAdjustmentBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default ConsumerOrderPriceAdjustmentBase diff --git a/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.createform.js b/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.createform.js index 0a42f91ba..004a5b66b 100644 --- a/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.createform.js +++ b/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { name: '端午促销', - amount: '468.60', + amount: '493.61', provider: '供货商', bizOrderId: 'CO000001', } @@ -209,7 +209,7 @@ class ConsumerOrderPriceAdjustmentCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -219,7 +219,7 @@ class ConsumerOrderPriceAdjustmentCreateForm extends Component { {getFieldDecorator('amount', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -229,7 +229,7 @@ class ConsumerOrderPriceAdjustmentCreateForm extends Component { {getFieldDecorator('provider', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.dashboard.js b/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.dashboard.js index 9ddf2327d..f53e02fe5 100644 --- a/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.dashboard.js +++ b/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -143,6 +143,7 @@ class ConsumerOrderPriceAdjustmentDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -151,13 +152,17 @@ class ConsumerOrderPriceAdjustmentDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.model.js b/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.model.js index 76a6a6076..8ab3e66b4 100644 --- a/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.model.js +++ b/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' diff --git a/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.permission.js b/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.permission.js new file mode 100644 index 000000000..8c6952f67 --- /dev/null +++ b/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.permission.js @@ -0,0 +1,86 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './ConsumerOrderPriceAdjustment.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (consumerOrderPriceAdjustment,targetComponent) =>{ + const userContext = null + return ( + +{consumerOrderPriceAdjustment.id} +{consumerOrderPriceAdjustment.name} +{consumerOrderPriceAdjustment.amount} +{consumerOrderPriceAdjustment.provider} + + + ) +} + + +const renderPermissionSetting = consumerOrderPriceAdjustment => { + const {ConsumerOrderPriceAdjustmentBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class ConsumerOrderPriceAdjustmentPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const consumerOrderPriceAdjustment = this.props.consumerOrderPriceAdjustment; + const { id,displayName, } = consumerOrderPriceAdjustment + const cardsData = {cardsName:"消费品价格调整",cardsFor: "consumerOrderPriceAdjustment",cardsSource: consumerOrderPriceAdjustment, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + consumerOrderPriceAdjustment: state._consumerOrderPriceAdjustment, +}))(Form.create()(ConsumerOrderPriceAdjustmentPermission)) + diff --git a/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.permission.less b/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.preference.js b/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.preference.js index e805249f7..67eef8eab 100644 --- a/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.preference.js +++ b/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.preference.js @@ -307,8 +307,12 @@ class ConsumerOrderPriceAdjustmentPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, } = this.props.consumerOrderPriceAdjustment - const cardsData = {cardsName:"消费品价格调整",cardsFor: "consumerOrderPriceAdjustment",cardsSource: this.props.consumerOrderPriceAdjustment, + const consumerOrderPriceAdjustment = this.props.consumerOrderPriceAdjustment; + const { id,displayName, } = consumerOrderPriceAdjustment + + + + const cardsData = {cardsName:"消费品价格调整",cardsFor: "consumerOrderPriceAdjustment",cardsSource: consumerOrderPriceAdjustment, subItems: [ ], diff --git a/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.profile.js b/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.profile.js new file mode 100644 index 000000000..4c804a426 --- /dev/null +++ b/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.profile.js @@ -0,0 +1,93 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './ConsumerOrderPriceAdjustment.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (consumerOrderPriceAdjustment,targetComponent) =>{ + const userContext = null + return ( + +{consumerOrderPriceAdjustment.id} +{consumerOrderPriceAdjustment.name} +{consumerOrderPriceAdjustment.amount} +{consumerOrderPriceAdjustment.provider} + + + ) +} + + + +class ConsumerOrderPriceAdjustmentProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const consumerOrderPriceAdjustment = this.props.consumerOrderPriceAdjustment; + const { id,displayName, } = consumerOrderPriceAdjustment + + const cardsData = {cardsName:"消费品价格调整",cardsFor: "consumerOrderPriceAdjustment",cardsSource: consumerOrderPriceAdjustment, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + consumerOrderPriceAdjustment: state._consumerOrderPriceAdjustment, +}))(Form.create()(ConsumerOrderPriceAdjustmentProfile)) + diff --git a/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.profile.less b/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.search.js b/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.search.js index ca4b1df6f..e9d89ea95 100644 --- a/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.search.js +++ b/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.searchform.js b/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.searchform.js index 9e6479211..3949745a9 100644 --- a/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.searchform.js +++ b/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`consumerOrderPriceAdjustmentList.searchField`] = fieldName - value[`consumerOrderPriceAdjustmentList.searchVerb`] = searchVerb - value[`consumerOrderPriceAdjustmentList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,12 +127,13 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'bizOrder')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'provider')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'bizOrder')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'provider')) console.log("the final parameter", paramList) @@ -148,11 +149,12 @@ componentDidMount() { } - params['consumerOrderPriceAdjustmentList'] = 1 - params['consumerOrderPriceAdjustmentList.orderBy.0'] = "id" - params['consumerOrderPriceAdjustmentList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -207,8 +209,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -286,8 +288,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.table.js b/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.table.js index 6810075d0..2673f1a04 100644 --- a/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.table.js +++ b/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.table.js @@ -40,24 +40,53 @@ class ConsumerOrderPriceAdjustmentTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = ConsumerOrderPriceAdjustmentBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class ConsumerOrderPriceAdjustmentTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class ConsumerOrderPriceAdjustmentTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.updateform.js b/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.updateform.js index 1abb1fa58..cde924410 100644 --- a/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.updateform.js +++ b/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.updateform.js @@ -261,7 +261,7 @@ class ConsumerOrderPriceAdjustmentUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class ConsumerOrderPriceAdjustmentUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -285,7 +285,7 @@ class ConsumerOrderPriceAdjustmentUpdateForm extends Component { initialValue: selectedRow.amount, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -297,7 +297,7 @@ class ConsumerOrderPriceAdjustmentUpdateForm extends Component { initialValue: selectedRow.provider, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.app.js b/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.app.js index 3ef805ef4..a1609d535 100644 --- a/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.app.js +++ b/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class ConsumerOrderProcessingBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -157,12 +166,14 @@ class ConsumerOrderProcessingBizApp extends React.PureComponent { buildRouters = () =>{ const {ConsumerOrderProcessingDashboard} = GlobalComponents - const {ConsumerOrderProcessingPreference} = GlobalComponents + const {ConsumerOrderProcessingPermission} = GlobalComponents + const {ConsumerOrderProcessingProfile} = GlobalComponents const routers=[ {path:"/consumerOrderProcessing/:id/dashboard", component: ConsumerOrderProcessingDashboard}, - {path:"/consumerOrderProcessing/:id/preference", component: ConsumerOrderProcessingPreference}, + {path:"/consumerOrderProcessing/:id/profile", component: ConsumerOrderProcessingProfile}, + {path:"/consumerOrderProcessing/:id/permission", component: ConsumerOrderProcessingPermission}, diff --git a/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.associateform.js b/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.associateform.js index 8c2631cfb..2ddfc2e11 100644 --- a/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.associateform.js +++ b/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { who: '处理者', - processTime: '2017-03-26', + processTime: '2019-01-12', } */ @@ -138,7 +138,7 @@ class ConsumerOrderProcessingAssociateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -148,7 +148,7 @@ class ConsumerOrderProcessingAssociateForm extends Component { {getFieldDecorator('processTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.associateform.less b/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.associateform.less +++ b/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.base.js b/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.base.js index 929598d35..16bc7c8b2 100644 --- a/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.base.js +++ b/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.base.js @@ -1,10 +1,33 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"消费者的订单处理", menuFor: "consumerOrderProcessing", subItems: [ @@ -12,86 +35,42 @@ const menuData = {menuName:"消费者的订单处理", menuFor: "consumerOrderPr ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + who: '谁', + processTime: '过程的时间', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record) }, - { title: '谁', debugtype: 'string', dataIndex: 'who', width: '7',render: (text, record)=>renderTextCell(text,record) }, - { title: '过程的时间', dataIndex: 'processTime', render: (text, record) =>renderDateCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.who, debugtype: 'string', dataIndex: 'who', width: '7',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.processTime, dataIndex: 'processTime', render: (text, record) =>renderDateCell(text,record), sorter: true }, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({consumerOrderProcessing,targetComponent})=>{ -const fieldLabels = { - id: '序号', - who: '谁', - processTime: '过程的时间', + + + const {ConsumerOrderProcessingService} = GlobalComponents + // const userContext = null + return ( + +{consumerOrderProcessing.id} +{consumerOrderProcessing.who} +{ moment(consumerOrderProcessing.processTime).format('YYYY-MM-DD')} + + {buildTransferModal(consumerOrderProcessing,targetComponent)} + + ) } + + -const ConsumerOrderProcessingBase={menuData,displayColumns,fieldLabels} +const ConsumerOrderProcessingBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default ConsumerOrderProcessingBase diff --git a/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.createform.js b/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.createform.js index ecabfab5a..8d28659c2 100644 --- a/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.createform.js +++ b/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { who: '处理者', - processTime: '2016-07-23', + processTime: '2019-05-04', } */ @@ -207,7 +207,7 @@ class ConsumerOrderProcessingCreateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -217,7 +217,7 @@ class ConsumerOrderProcessingCreateForm extends Component { {getFieldDecorator('processTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.dashboard.js b/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.dashboard.js index 62eb2b75f..80c98a5cd 100644 --- a/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.dashboard.js +++ b/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -136,6 +136,7 @@ class ConsumerOrderProcessingDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -144,13 +145,17 @@ class ConsumerOrderProcessingDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.model.js b/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.model.js index 9d2af4cbb..9b9754b75 100644 --- a/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.model.js +++ b/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' diff --git a/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.permission.js b/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.permission.js new file mode 100644 index 000000000..6f101617e --- /dev/null +++ b/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.permission.js @@ -0,0 +1,85 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './ConsumerOrderProcessing.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (consumerOrderProcessing,targetComponent) =>{ + const userContext = null + return ( + +{consumerOrderProcessing.id} +{consumerOrderProcessing.who} +{ moment(consumerOrderProcessing.processTime).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = consumerOrderProcessing => { + const {ConsumerOrderProcessingBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class ConsumerOrderProcessingPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const consumerOrderProcessing = this.props.consumerOrderProcessing; + const { id,displayName, } = consumerOrderProcessing + const cardsData = {cardsName:"消费者的订单处理",cardsFor: "consumerOrderProcessing",cardsSource: consumerOrderProcessing, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + consumerOrderProcessing: state._consumerOrderProcessing, +}))(Form.create()(ConsumerOrderProcessingPermission)) + diff --git a/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.permission.less b/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.preference.js b/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.preference.js index 617d21aac..826cfe988 100644 --- a/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.preference.js +++ b/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.preference.js @@ -300,8 +300,12 @@ class ConsumerOrderProcessingPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, } = this.props.consumerOrderProcessing - const cardsData = {cardsName:"消费者的订单处理",cardsFor: "consumerOrderProcessing",cardsSource: this.props.consumerOrderProcessing, + const consumerOrderProcessing = this.props.consumerOrderProcessing; + const { id,displayName, } = consumerOrderProcessing + + + + const cardsData = {cardsName:"消费者的订单处理",cardsFor: "consumerOrderProcessing",cardsSource: consumerOrderProcessing, subItems: [ ], diff --git a/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.profile.js b/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.profile.js new file mode 100644 index 000000000..a5ab6bd88 --- /dev/null +++ b/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.profile.js @@ -0,0 +1,92 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './ConsumerOrderProcessing.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (consumerOrderProcessing,targetComponent) =>{ + const userContext = null + return ( + +{consumerOrderProcessing.id} +{consumerOrderProcessing.who} +{ moment(consumerOrderProcessing.processTime).format('YYYY-MM-DD')} + + + ) +} + + + +class ConsumerOrderProcessingProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const consumerOrderProcessing = this.props.consumerOrderProcessing; + const { id,displayName, } = consumerOrderProcessing + + const cardsData = {cardsName:"消费者的订单处理",cardsFor: "consumerOrderProcessing",cardsSource: consumerOrderProcessing, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + consumerOrderProcessing: state._consumerOrderProcessing, +}))(Form.create()(ConsumerOrderProcessingProfile)) + diff --git a/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.profile.less b/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.search.js b/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.search.js index a77b2ad30..7855a8dd6 100644 --- a/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.search.js +++ b/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.searchform.js b/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.searchform.js index b013c8ec4..635033b5c 100644 --- a/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.searchform.js +++ b/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`consumerOrderProcessingList.searchField`] = fieldName - value[`consumerOrderProcessingList.searchVerb`] = searchVerb - value[`consumerOrderProcessingList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,10 +127,11 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'who')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'who')) console.log("the final parameter", paramList) @@ -146,11 +147,12 @@ componentDidMount() { } - params['consumerOrderProcessingList'] = 1 - params['consumerOrderProcessingList.orderBy.0'] = "id" - params['consumerOrderProcessingList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -205,8 +207,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -261,8 +263,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.table.js b/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.table.js index da61e9cd7..f6781f47d 100644 --- a/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.table.js +++ b/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.table.js @@ -40,24 +40,53 @@ class ConsumerOrderProcessingTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = ConsumerOrderProcessingBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class ConsumerOrderProcessingTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class ConsumerOrderProcessingTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.updateform.js b/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.updateform.js index afc1162d5..74bec763c 100644 --- a/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.updateform.js +++ b/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.updateform.js @@ -262,7 +262,7 @@ class ConsumerOrderProcessingUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class ConsumerOrderProcessingUpdateForm extends Component { initialValue: selectedRow.who, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class ConsumerOrderProcessingUpdateForm extends Component { initialValue: selectedRow.processTime, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.app.js b/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.app.js index 5b9c4f059..c0d610646 100644 --- a/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.app.js +++ b/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class ConsumerOrderShipmentBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -157,12 +166,14 @@ class ConsumerOrderShipmentBizApp extends React.PureComponent { buildRouters = () =>{ const {ConsumerOrderShipmentDashboard} = GlobalComponents - const {ConsumerOrderShipmentPreference} = GlobalComponents + const {ConsumerOrderShipmentPermission} = GlobalComponents + const {ConsumerOrderShipmentProfile} = GlobalComponents const routers=[ {path:"/consumerOrderShipment/:id/dashboard", component: ConsumerOrderShipmentDashboard}, - {path:"/consumerOrderShipment/:id/preference", component: ConsumerOrderShipmentPreference}, + {path:"/consumerOrderShipment/:id/profile", component: ConsumerOrderShipmentProfile}, + {path:"/consumerOrderShipment/:id/permission", component: ConsumerOrderShipmentPermission}, diff --git a/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.associateform.js b/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.associateform.js index 73371a071..96d73ba12 100644 --- a/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.associateform.js +++ b/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { who: '运货者', - shipTime: '2018-12-14', + shipTime: '2019-01-13', } */ @@ -138,7 +138,7 @@ class ConsumerOrderShipmentAssociateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -148,7 +148,7 @@ class ConsumerOrderShipmentAssociateForm extends Component { {getFieldDecorator('shipTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.associateform.less b/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.associateform.less +++ b/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.base.js b/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.base.js index 4d72d670a..4e8ef531c 100644 --- a/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.base.js +++ b/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.base.js @@ -1,10 +1,33 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"消费者的订单发货", menuFor: "consumerOrderShipment", subItems: [ @@ -12,86 +35,42 @@ const menuData = {menuName:"消费者的订单发货", menuFor: "consumerOrderSh ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + who: '谁', + shipTime: '船的时间', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record) }, - { title: '谁', debugtype: 'string', dataIndex: 'who', width: '7',render: (text, record)=>renderTextCell(text,record) }, - { title: '船的时间', dataIndex: 'shipTime', render: (text, record) =>renderDateCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.who, debugtype: 'string', dataIndex: 'who', width: '7',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.shipTime, dataIndex: 'shipTime', render: (text, record) =>renderDateCell(text,record), sorter: true }, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({consumerOrderShipment,targetComponent})=>{ -const fieldLabels = { - id: '序号', - who: '谁', - shipTime: '船的时间', + + + const {ConsumerOrderShipmentService} = GlobalComponents + // const userContext = null + return ( + +{consumerOrderShipment.id} +{consumerOrderShipment.who} +{ moment(consumerOrderShipment.shipTime).format('YYYY-MM-DD')} + + {buildTransferModal(consumerOrderShipment,targetComponent)} + + ) } + + -const ConsumerOrderShipmentBase={menuData,displayColumns,fieldLabels} +const ConsumerOrderShipmentBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default ConsumerOrderShipmentBase diff --git a/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.createform.js b/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.createform.js index 6f3d2ed64..53196d9fa 100644 --- a/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.createform.js +++ b/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { who: '运货者', - shipTime: '2016-08-10', + shipTime: '2019-02-06', } */ @@ -207,7 +207,7 @@ class ConsumerOrderShipmentCreateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -217,7 +217,7 @@ class ConsumerOrderShipmentCreateForm extends Component { {getFieldDecorator('shipTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.dashboard.js b/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.dashboard.js index a6408372e..798072a74 100644 --- a/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.dashboard.js +++ b/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -136,6 +136,7 @@ class ConsumerOrderShipmentDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -144,13 +145,17 @@ class ConsumerOrderShipmentDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.model.js b/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.model.js index 930324eba..447012805 100644 --- a/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.model.js +++ b/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' diff --git a/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.permission.js b/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.permission.js new file mode 100644 index 000000000..1509cb2e1 --- /dev/null +++ b/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.permission.js @@ -0,0 +1,85 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './ConsumerOrderShipment.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (consumerOrderShipment,targetComponent) =>{ + const userContext = null + return ( + +{consumerOrderShipment.id} +{consumerOrderShipment.who} +{ moment(consumerOrderShipment.shipTime).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = consumerOrderShipment => { + const {ConsumerOrderShipmentBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class ConsumerOrderShipmentPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const consumerOrderShipment = this.props.consumerOrderShipment; + const { id,displayName, } = consumerOrderShipment + const cardsData = {cardsName:"消费者的订单发货",cardsFor: "consumerOrderShipment",cardsSource: consumerOrderShipment, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + consumerOrderShipment: state._consumerOrderShipment, +}))(Form.create()(ConsumerOrderShipmentPermission)) + diff --git a/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.permission.less b/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.preference.js b/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.preference.js index e28f2d8f4..665f213b2 100644 --- a/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.preference.js +++ b/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.preference.js @@ -300,8 +300,12 @@ class ConsumerOrderShipmentPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, } = this.props.consumerOrderShipment - const cardsData = {cardsName:"消费者的订单发货",cardsFor: "consumerOrderShipment",cardsSource: this.props.consumerOrderShipment, + const consumerOrderShipment = this.props.consumerOrderShipment; + const { id,displayName, } = consumerOrderShipment + + + + const cardsData = {cardsName:"消费者的订单发货",cardsFor: "consumerOrderShipment",cardsSource: consumerOrderShipment, subItems: [ ], diff --git a/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.profile.js b/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.profile.js new file mode 100644 index 000000000..4e3283ba0 --- /dev/null +++ b/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.profile.js @@ -0,0 +1,92 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './ConsumerOrderShipment.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (consumerOrderShipment,targetComponent) =>{ + const userContext = null + return ( + +{consumerOrderShipment.id} +{consumerOrderShipment.who} +{ moment(consumerOrderShipment.shipTime).format('YYYY-MM-DD')} + + + ) +} + + + +class ConsumerOrderShipmentProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const consumerOrderShipment = this.props.consumerOrderShipment; + const { id,displayName, } = consumerOrderShipment + + const cardsData = {cardsName:"消费者的订单发货",cardsFor: "consumerOrderShipment",cardsSource: consumerOrderShipment, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + consumerOrderShipment: state._consumerOrderShipment, +}))(Form.create()(ConsumerOrderShipmentProfile)) + diff --git a/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.profile.less b/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.search.js b/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.search.js index c4dac22bd..05df5dec4 100644 --- a/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.search.js +++ b/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.searchform.js b/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.searchform.js index 6ce0648f8..14e403e15 100644 --- a/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.searchform.js +++ b/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`consumerOrderShipmentList.searchField`] = fieldName - value[`consumerOrderShipmentList.searchVerb`] = searchVerb - value[`consumerOrderShipmentList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,10 +127,11 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'who')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'who')) console.log("the final parameter", paramList) @@ -146,11 +147,12 @@ componentDidMount() { } - params['consumerOrderShipmentList'] = 1 - params['consumerOrderShipmentList.orderBy.0'] = "id" - params['consumerOrderShipmentList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -205,8 +207,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -261,8 +263,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.table.js b/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.table.js index 5f75e59db..112bdc10c 100644 --- a/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.table.js +++ b/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.table.js @@ -40,24 +40,53 @@ class ConsumerOrderShipmentTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = ConsumerOrderShipmentBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class ConsumerOrderShipmentTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class ConsumerOrderShipmentTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.updateform.js b/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.updateform.js index 5487a0fd7..205d4c683 100644 --- a/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.updateform.js +++ b/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.updateform.js @@ -262,7 +262,7 @@ class ConsumerOrderShipmentUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class ConsumerOrderShipmentUpdateForm extends Component { initialValue: selectedRow.who, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class ConsumerOrderShipmentUpdateForm extends Component { initialValue: selectedRow.shipTime, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.app.js b/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.app.js index befded0ef..5c09af3b8 100644 --- a/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.app.js +++ b/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class ConsumerOrderShippingGroupBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -157,12 +166,14 @@ class ConsumerOrderShippingGroupBizApp extends React.PureComponent { buildRouters = () =>{ const {ConsumerOrderShippingGroupDashboard} = GlobalComponents - const {ConsumerOrderShippingGroupPreference} = GlobalComponents + const {ConsumerOrderShippingGroupPermission} = GlobalComponents + const {ConsumerOrderShippingGroupProfile} = GlobalComponents const routers=[ {path:"/consumerOrderShippingGroup/:id/dashboard", component: ConsumerOrderShippingGroupDashboard}, - {path:"/consumerOrderShippingGroup/:id/preference", component: ConsumerOrderShippingGroupPreference}, + {path:"/consumerOrderShippingGroup/:id/profile", component: ConsumerOrderShippingGroupProfile}, + {path:"/consumerOrderShippingGroup/:id/permission", component: ConsumerOrderShippingGroupPermission}, diff --git a/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.associateform.js b/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.associateform.js index 4ee760a3b..52e5fcbd1 100644 --- a/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.associateform.js +++ b/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { name: '送货到刘强家', - amount: '592.02', + amount: '440.19', bizOrderId: 'CO000001', } */ @@ -139,7 +139,7 @@ class ConsumerOrderShippingGroupAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -149,7 +149,7 @@ class ConsumerOrderShippingGroupAssociateForm extends Component { {getFieldDecorator('amount', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.associateform.less b/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.associateform.less +++ b/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.base.js b/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.base.js index ba30b13e4..0a890e631 100644 --- a/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.base.js +++ b/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.base.js @@ -1,10 +1,33 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"消费订单送货分组", menuFor: "consumerOrderShippingGroup", subItems: [ @@ -12,88 +35,50 @@ const menuData = {menuName:"消费订单送货分组", menuFor: "consumerOrderSh ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + name: '名称', + bizOrder: '订单', + amount: '金额', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record) }, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '10',render: (text, record)=>renderTextCell(text,record) }, - { title: '订单', dataIndex: 'bizOrder', render: (text, record) => renderReferenceCell(text, record)}, - { title: '金额', dataIndex: 'amount', className:'money', render: (text, record) => renderMoneyCell(text, record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '10',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.bizOrder, dataIndex: 'bizOrder', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.amount, dataIndex: 'amount', className:'money', render: (text, record) => renderMoneyCell(text, record), sorter: true }, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({consumerOrderShippingGroup,targetComponent})=>{ -const fieldLabels = { - id: '序号', - name: '名称', - bizOrder: '订单', - amount: '金额', + + + const {ConsumerOrderShippingGroupService} = GlobalComponents + // const userContext = null + return ( + +{consumerOrderShippingGroup.id} +{consumerOrderShippingGroup.name} +{consumerOrderShippingGroup.bizOrder==null?appLocaleName(userContext,"NotAssigned"):`${consumerOrderShippingGroup.bizOrder.displayName}(${consumerOrderShippingGroup.bizOrder.id})`} + + showTransferModel(targetComponent,"订单","consumerOrder",ConsumerOrderShippingGroupService.requestCandidateBizOrder, + ConsumerOrderShippingGroupService.transferToAnotherBizOrder,"anotherBizOrderId",consumerOrderShippingGroup.bizOrder?consumerOrderShippingGroup.bizOrder.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{consumerOrderShippingGroup.amount} + + {buildTransferModal(consumerOrderShippingGroup,targetComponent)} + + ) } + + -const ConsumerOrderShippingGroupBase={menuData,displayColumns,fieldLabels} +const ConsumerOrderShippingGroupBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default ConsumerOrderShippingGroupBase diff --git a/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.createform.js b/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.createform.js index 16ab70097..1de0fc713 100644 --- a/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.createform.js +++ b/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { name: '送货到刘强家', - amount: '560.26', + amount: '534.58', bizOrderId: 'CO000001', } */ @@ -208,7 +208,7 @@ class ConsumerOrderShippingGroupCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -218,7 +218,7 @@ class ConsumerOrderShippingGroupCreateForm extends Component { {getFieldDecorator('amount', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.dashboard.js b/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.dashboard.js index 6ca3fac29..9c0d69090 100644 --- a/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.dashboard.js +++ b/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -142,6 +142,7 @@ class ConsumerOrderShippingGroupDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -150,13 +151,17 @@ class ConsumerOrderShippingGroupDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.model.js b/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.model.js index 40c88b26b..c7b6ba8a0 100644 --- a/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.model.js +++ b/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' diff --git a/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.permission.js b/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.permission.js new file mode 100644 index 000000000..9dc0c0504 --- /dev/null +++ b/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.permission.js @@ -0,0 +1,85 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './ConsumerOrderShippingGroup.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (consumerOrderShippingGroup,targetComponent) =>{ + const userContext = null + return ( + +{consumerOrderShippingGroup.id} +{consumerOrderShippingGroup.name} +{consumerOrderShippingGroup.amount} + + + ) +} + + +const renderPermissionSetting = consumerOrderShippingGroup => { + const {ConsumerOrderShippingGroupBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class ConsumerOrderShippingGroupPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const consumerOrderShippingGroup = this.props.consumerOrderShippingGroup; + const { id,displayName, } = consumerOrderShippingGroup + const cardsData = {cardsName:"消费订单送货分组",cardsFor: "consumerOrderShippingGroup",cardsSource: consumerOrderShippingGroup, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + consumerOrderShippingGroup: state._consumerOrderShippingGroup, +}))(Form.create()(ConsumerOrderShippingGroupPermission)) + diff --git a/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.permission.less b/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.preference.js b/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.preference.js index 07708585e..3699abc80 100644 --- a/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.preference.js +++ b/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.preference.js @@ -306,8 +306,12 @@ class ConsumerOrderShippingGroupPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, } = this.props.consumerOrderShippingGroup - const cardsData = {cardsName:"消费订单送货分组",cardsFor: "consumerOrderShippingGroup",cardsSource: this.props.consumerOrderShippingGroup, + const consumerOrderShippingGroup = this.props.consumerOrderShippingGroup; + const { id,displayName, } = consumerOrderShippingGroup + + + + const cardsData = {cardsName:"消费订单送货分组",cardsFor: "consumerOrderShippingGroup",cardsSource: consumerOrderShippingGroup, subItems: [ ], diff --git a/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.profile.js b/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.profile.js new file mode 100644 index 000000000..b90741545 --- /dev/null +++ b/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.profile.js @@ -0,0 +1,92 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './ConsumerOrderShippingGroup.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (consumerOrderShippingGroup,targetComponent) =>{ + const userContext = null + return ( + +{consumerOrderShippingGroup.id} +{consumerOrderShippingGroup.name} +{consumerOrderShippingGroup.amount} + + + ) +} + + + +class ConsumerOrderShippingGroupProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const consumerOrderShippingGroup = this.props.consumerOrderShippingGroup; + const { id,displayName, } = consumerOrderShippingGroup + + const cardsData = {cardsName:"消费订单送货分组",cardsFor: "consumerOrderShippingGroup",cardsSource: consumerOrderShippingGroup, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + consumerOrderShippingGroup: state._consumerOrderShippingGroup, +}))(Form.create()(ConsumerOrderShippingGroupProfile)) + diff --git a/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.profile.less b/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.search.js b/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.search.js index 12b0b1709..112e48812 100644 --- a/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.search.js +++ b/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.searchform.js b/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.searchform.js index df7f866a1..ba9e3cbf1 100644 --- a/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.searchform.js +++ b/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`consumerOrderShippingGroupList.searchField`] = fieldName - value[`consumerOrderShippingGroupList.searchVerb`] = searchVerb - value[`consumerOrderShippingGroupList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,11 +127,12 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'bizOrder')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'bizOrder')) console.log("the final parameter", paramList) @@ -147,11 +148,12 @@ componentDidMount() { } - params['consumerOrderShippingGroupList'] = 1 - params['consumerOrderShippingGroupList.orderBy.0'] = "id" - params['consumerOrderShippingGroupList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -206,8 +208,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -277,8 +279,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.table.js b/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.table.js index 1293a5af1..cac7cfb58 100644 --- a/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.table.js +++ b/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.table.js @@ -40,24 +40,53 @@ class ConsumerOrderShippingGroupTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = ConsumerOrderShippingGroupBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class ConsumerOrderShippingGroupTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class ConsumerOrderShippingGroupTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.updateform.js b/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.updateform.js index 07e25b891..7d153adfa 100644 --- a/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.updateform.js +++ b/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.updateform.js @@ -261,7 +261,7 @@ class ConsumerOrderShippingGroupUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class ConsumerOrderShippingGroupUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -285,7 +285,7 @@ class ConsumerOrderShippingGroupUpdateForm extends Component { initialValue: selectedRow.amount, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/damagespace/DamageSpace.app.js b/bizui/src/bizcomponents/damagespace/DamageSpace.app.js index 81e80effb..2eea42f46 100644 --- a/bizui/src/bizcomponents/damagespace/DamageSpace.app.js +++ b/bizui/src/bizcomponents/damagespace/DamageSpace.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class DamageSpaceBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class DamageSpaceBizApp extends React.PureComponent { buildRouters = () =>{ const {DamageSpaceDashboard} = GlobalComponents - const {DamageSpacePreference} = GlobalComponents + const {DamageSpacePermission} = GlobalComponents + const {DamageSpaceProfile} = GlobalComponents const routers=[ {path:"/damageSpace/:id/dashboard", component: DamageSpaceDashboard}, - {path:"/damageSpace/:id/preference", component: DamageSpacePreference}, + {path:"/damageSpace/:id/profile", component: DamageSpaceProfile}, + {path:"/damageSpace/:id/permission", component: DamageSpacePermission}, diff --git a/bizui/src/bizcomponents/damagespace/DamageSpace.associateform.js b/bizui/src/bizcomponents/damagespace/DamageSpace.associateform.js index 9b2a375d1..8921c2cbc 100644 --- a/bizui/src/bizcomponents/damagespace/DamageSpace.associateform.js +++ b/bizui/src/bizcomponents/damagespace/DamageSpace.associateform.js @@ -21,8 +21,8 @@ const testValues = { location: '成都龙泉驿飞鹤路20号仓库损坏货物堆放区', contactNumber: '02887654321', totalArea: '1876平方米', - latitude: '42.32311053641463', - longitude: '130.73956720781223', + latitude: '40.9131411992218', + longitude: '131.67405608988966', warehouseId: 'W000001', } */ @@ -143,7 +143,7 @@ class DamageSpaceAssociateForm extends Component { {getFieldDecorator('location', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -153,7 +153,7 @@ class DamageSpaceAssociateForm extends Component { {getFieldDecorator('contactNumber', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -163,7 +163,7 @@ class DamageSpaceAssociateForm extends Component { {getFieldDecorator('totalArea', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -173,7 +173,7 @@ class DamageSpaceAssociateForm extends Component { {getFieldDecorator('latitude', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -183,7 +183,7 @@ class DamageSpaceAssociateForm extends Component { {getFieldDecorator('longitude', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/damagespace/DamageSpace.associateform.less b/bizui/src/bizcomponents/damagespace/DamageSpace.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/damagespace/DamageSpace.associateform.less +++ b/bizui/src/bizcomponents/damagespace/DamageSpace.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/damagespace/DamageSpace.base.js b/bizui/src/bizcomponents/damagespace/DamageSpace.base.js index 51bd7b0fc..7aafe6850 100644 --- a/bizui/src/bizcomponents/damagespace/DamageSpace.base.js +++ b/bizui/src/bizcomponents/damagespace/DamageSpace.base.js @@ -1,94 +1,41 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"残次货物存放区", menuFor: "damageSpace", subItems: [ - {name: 'goodsShelfList', displayName:'货架', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'goodsShelfList', displayName:'货架', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) - -} - -const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'damageSpace') }, - { title: '位置', debugtype: 'string', dataIndex: 'location', width: '24',render: (text, record)=>renderTextCell(text,record) }, - { title: '联系电话', debugtype: 'string', dataIndex: 'contactNumber', width: '15',render: (text, record)=>renderTextCell(text,record) }, - { title: '总面积', debugtype: 'string', dataIndex: 'totalArea', width: '11',render: (text, record)=>renderTextCell(text,record) }, - { title: '纬度', debugtype: 'double', dataIndex: 'latitude', width: '13',render: (text, record)=>renderTextCell(text,record) }, - { title: '经度', debugtype: 'double', dataIndex: 'longitude', width: '14',render: (text, record)=>renderTextCell(text,record) }, - { title: '仓库', dataIndex: 'warehouse', render: (text, record) => renderReferenceCell(text, record)}, - { title: '最后更新时间', dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record) }, - -] - const fieldLabels = { id: '序号', location: '位置', @@ -101,8 +48,50 @@ const fieldLabels = { } +const displayColumns = [ + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'damageSpace') , sorter: true }, + { title: fieldLabels.location, debugtype: 'string', dataIndex: 'location', width: '24',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.contactNumber, debugtype: 'string', dataIndex: 'contactNumber', width: '15',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.totalArea, debugtype: 'string', dataIndex: 'totalArea', width: '11',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.latitude, debugtype: 'double', dataIndex: 'latitude', width: '13',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.longitude, debugtype: 'double', dataIndex: 'longitude', width: '14',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.warehouse, dataIndex: 'warehouse', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.lastUpdateTime, dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record), sorter: true}, + +] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({damageSpace,targetComponent})=>{ + + + + const {DamageSpaceService} = GlobalComponents + // const userContext = null + return ( + +{damageSpace.id} +{damageSpace.location} +{damageSpace.contactNumber} +{damageSpace.totalArea} +{damageSpace.latitude} +{damageSpace.longitude} +{damageSpace.warehouse==null?appLocaleName(userContext,"NotAssigned"):`${damageSpace.warehouse.displayName}(${damageSpace.warehouse.id})`} + + showTransferModel(targetComponent,"仓库","warehouse",DamageSpaceService.requestCandidateWarehouse, + DamageSpaceService.transferToAnotherWarehouse,"anotherWarehouseId",damageSpace.warehouse?damageSpace.warehouse.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{ moment(damageSpace.lastUpdateTime).format('YYYY-MM-DD')} + + {buildTransferModal(damageSpace,targetComponent)} + + ) + +} + + + -const DamageSpaceBase={menuData,displayColumns,fieldLabels} +const DamageSpaceBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default DamageSpaceBase diff --git a/bizui/src/bizcomponents/damagespace/DamageSpace.createform.js b/bizui/src/bizcomponents/damagespace/DamageSpace.createform.js index 4ed7ddc24..870508c16 100644 --- a/bizui/src/bizcomponents/damagespace/DamageSpace.createform.js +++ b/bizui/src/bizcomponents/damagespace/DamageSpace.createform.js @@ -20,8 +20,8 @@ const testValues = { location: '成都龙泉驿飞鹤路20号仓库损坏货物堆放区', contactNumber: '02887654321', totalArea: '1876平方米', - latitude: '41.56288870377293', - longitude: '129.69832776210427', + latitude: '41.12233422115167', + longitude: '130.05604157914584', warehouseId: 'W000001', } */ @@ -211,7 +211,7 @@ class DamageSpaceCreateForm extends Component { {getFieldDecorator('location', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -221,7 +221,7 @@ class DamageSpaceCreateForm extends Component { {getFieldDecorator('contactNumber', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -231,7 +231,7 @@ class DamageSpaceCreateForm extends Component { {getFieldDecorator('totalArea', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -241,7 +241,7 @@ class DamageSpaceCreateForm extends Component { {getFieldDecorator('latitude', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -251,7 +251,7 @@ class DamageSpaceCreateForm extends Component { {getFieldDecorator('longitude', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/damagespace/DamageSpace.dashboard.js b/bizui/src/bizcomponents/damagespace/DamageSpace.dashboard.js index a295eac79..93de529b8 100644 --- a/bizui/src/bizcomponents/damagespace/DamageSpace.dashboard.js +++ b/bizui/src/bizcomponents/damagespace/DamageSpace.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -147,6 +147,7 @@ class DamageSpaceDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -155,13 +156,17 @@ class DamageSpaceDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/damagespace/DamageSpace.model.js b/bizui/src/bizcomponents/damagespace/DamageSpace.model.js index e7031ecfd..27617c12c 100644 --- a/bizui/src/bizcomponents/damagespace/DamageSpace.model.js +++ b/bizui/src/bizcomponents/damagespace/DamageSpace.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/damageSpace/${id}/list/\GoodsShelfList/货架+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/damageSpace/${id}/list/GoodsShelfList/货架+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateGoodsShelf({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/damageSpace/${id}/list/\GoodsShelfList/货架列表`, state: newPlayload } + const location = { pathname: `/damageSpace/${id}/list/GoodsShelfList/货架列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextGoodsShelfUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/damagespace/DamageSpace.permission.js b/bizui/src/bizcomponents/damagespace/DamageSpace.permission.js new file mode 100644 index 000000000..738e20942 --- /dev/null +++ b/bizui/src/bizcomponents/damagespace/DamageSpace.permission.js @@ -0,0 +1,89 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './DamageSpace.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (damageSpace,targetComponent) =>{ + const userContext = null + return ( + +{damageSpace.id} +{damageSpace.location} +{damageSpace.contactNumber} +{damageSpace.totalArea} +{damageSpace.latitude} +{damageSpace.longitude} +{ moment(damageSpace.lastUpdateTime).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = damageSpace => { + const {DamageSpaceBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class DamageSpacePermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const damageSpace = this.props.damageSpace; + const { id,displayName, goodsShelfCount } = damageSpace + const cardsData = {cardsName:"残次货物存放区",cardsFor: "damageSpace",cardsSource: damageSpace, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + damageSpace: state._damageSpace, +}))(Form.create()(DamageSpacePermission)) + diff --git a/bizui/src/bizcomponents/damagespace/DamageSpace.permission.less b/bizui/src/bizcomponents/damagespace/DamageSpace.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/damagespace/DamageSpace.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/damagespace/DamageSpace.preference.js b/bizui/src/bizcomponents/damagespace/DamageSpace.preference.js index 7ebf878a9..0dd29b6ff 100644 --- a/bizui/src/bizcomponents/damagespace/DamageSpace.preference.js +++ b/bizui/src/bizcomponents/damagespace/DamageSpace.preference.js @@ -310,8 +310,12 @@ class DamageSpacePreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, goodsShelfCount } = this.props.damageSpace - const cardsData = {cardsName:"残次货物存放区",cardsFor: "damageSpace",cardsSource: this.props.damageSpace, + const damageSpace = this.props.damageSpace; + const { id,displayName, goodsShelfCount } = damageSpace + + + + const cardsData = {cardsName:"残次货物存放区",cardsFor: "damageSpace",cardsSource: damageSpace, subItems: [ ], diff --git a/bizui/src/bizcomponents/damagespace/DamageSpace.profile.js b/bizui/src/bizcomponents/damagespace/DamageSpace.profile.js new file mode 100644 index 000000000..53920a042 --- /dev/null +++ b/bizui/src/bizcomponents/damagespace/DamageSpace.profile.js @@ -0,0 +1,96 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './DamageSpace.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (damageSpace,targetComponent) =>{ + const userContext = null + return ( + +{damageSpace.id} +{damageSpace.location} +{damageSpace.contactNumber} +{damageSpace.totalArea} +{damageSpace.latitude} +{damageSpace.longitude} +{ moment(damageSpace.lastUpdateTime).format('YYYY-MM-DD')} + + + ) +} + + + +class DamageSpaceProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const damageSpace = this.props.damageSpace; + const { id,displayName, goodsShelfCount } = damageSpace + + const cardsData = {cardsName:"残次货物存放区",cardsFor: "damageSpace",cardsSource: damageSpace, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + damageSpace: state._damageSpace, +}))(Form.create()(DamageSpaceProfile)) + diff --git a/bizui/src/bizcomponents/damagespace/DamageSpace.profile.less b/bizui/src/bizcomponents/damagespace/DamageSpace.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/damagespace/DamageSpace.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/damagespace/DamageSpace.search.js b/bizui/src/bizcomponents/damagespace/DamageSpace.search.js index 4b0fb292c..57c09727f 100644 --- a/bizui/src/bizcomponents/damagespace/DamageSpace.search.js +++ b/bizui/src/bizcomponents/damagespace/DamageSpace.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/damagespace/DamageSpace.searchform.js b/bizui/src/bizcomponents/damagespace/DamageSpace.searchform.js index 02f17725e..8532e201a 100644 --- a/bizui/src/bizcomponents/damagespace/DamageSpace.searchform.js +++ b/bizui/src/bizcomponents/damagespace/DamageSpace.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`damageSpaceList.searchField`] = fieldName - value[`damageSpaceList.searchVerb`] = searchVerb - value[`damageSpaceList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,13 +127,14 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'location')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'contactNumber')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'totalArea')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'warehouse')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'location')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'contactNumber')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'totalArea')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'warehouse')) console.log("the final parameter", paramList) @@ -149,11 +150,12 @@ componentDidMount() { } - params['damageSpaceList'] = 1 - params['damageSpaceList.orderBy.0'] = "id" - params['damageSpaceList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -208,8 +210,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -295,8 +297,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/damagespace/DamageSpace.table.js b/bizui/src/bizcomponents/damagespace/DamageSpace.table.js index 88bb8ea80..6a64fba68 100644 --- a/bizui/src/bizcomponents/damagespace/DamageSpace.table.js +++ b/bizui/src/bizcomponents/damagespace/DamageSpace.table.js @@ -40,24 +40,53 @@ class DamageSpaceTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = DamageSpaceBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class DamageSpaceTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class DamageSpaceTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/damagespace/DamageSpace.updateform.js b/bizui/src/bizcomponents/damagespace/DamageSpace.updateform.js index 13ca16636..4c64d6819 100644 --- a/bizui/src/bizcomponents/damagespace/DamageSpace.updateform.js +++ b/bizui/src/bizcomponents/damagespace/DamageSpace.updateform.js @@ -262,7 +262,7 @@ class DamageSpaceUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class DamageSpaceUpdateForm extends Component { initialValue: selectedRow.location, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class DamageSpaceUpdateForm extends Component { initialValue: selectedRow.contactNumber, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -298,7 +298,7 @@ class DamageSpaceUpdateForm extends Component { initialValue: selectedRow.totalArea, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -310,7 +310,7 @@ class DamageSpaceUpdateForm extends Component { initialValue: selectedRow.latitude, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -322,7 +322,7 @@ class DamageSpaceUpdateForm extends Component { initialValue: selectedRow.longitude, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/employee/Employee.app.js b/bizui/src/bizcomponents/employee/Employee.app.js index 69a4d27df..8b2c7400f 100644 --- a/bizui/src/bizcomponents/employee/Employee.app.js +++ b/bizui/src/bizcomponents/employee/Employee.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class EmployeeBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -745,12 +754,14 @@ class EmployeeBizApp extends React.PureComponent { buildRouters = () =>{ const {EmployeeDashboard} = GlobalComponents - const {EmployeePreference} = GlobalComponents + const {EmployeePermission} = GlobalComponents + const {EmployeeProfile} = GlobalComponents const routers=[ {path:"/employee/:id/dashboard", component: EmployeeDashboard}, - {path:"/employee/:id/preference", component: EmployeePreference}, + {path:"/employee/:id/profile", component: EmployeeProfile}, + {path:"/employee/:id/permission", component: EmployeePermission}, diff --git a/bizui/src/bizcomponents/employee/Employee.associateform.js b/bizui/src/bizcomponents/employee/Employee.associateform.js index 2aa05089b..d0038839c 100644 --- a/bizui/src/bizcomponents/employee/Employee.associateform.js +++ b/bizui/src/bizcomponents/employee/Employee.associateform.js @@ -161,7 +161,7 @@ class EmployeeAssociateForm extends Component { {getFieldDecorator('title', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -171,7 +171,7 @@ class EmployeeAssociateForm extends Component { {getFieldDecorator('familyName', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -181,7 +181,7 @@ class EmployeeAssociateForm extends Component { {getFieldDecorator('givenName', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -191,7 +191,7 @@ class EmployeeAssociateForm extends Component { {getFieldDecorator('email', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -201,7 +201,7 @@ class EmployeeAssociateForm extends Component { {getFieldDecorator('city', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -211,7 +211,7 @@ class EmployeeAssociateForm extends Component { {getFieldDecorator('address', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -221,7 +221,7 @@ class EmployeeAssociateForm extends Component { {getFieldDecorator('cellPhone', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -231,7 +231,7 @@ class EmployeeAssociateForm extends Component { {getFieldDecorator('salaryAccount', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/employee/Employee.associateform.less b/bizui/src/bizcomponents/employee/Employee.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/employee/Employee.associateform.less +++ b/bizui/src/bizcomponents/employee/Employee.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/employee/Employee.base.js b/bizui/src/bizcomponents/employee/Employee.base.js index cdbc54f02..44b456892 100644 --- a/bizui/src/bizcomponents/employee/Employee.base.js +++ b/bizui/src/bizcomponents/employee/Employee.base.js @@ -1,120 +1,52 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"员工", menuFor: "employee", subItems: [ - {name: 'employeeCompanyTrainingList', displayName:'员工参与的公司培训', icon:'om',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'employeeSkillList', displayName:'员工技能', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'employeePerformanceList', displayName:'员工绩效', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'employeeWorkExperienceList', displayName:'员工工作经验', icon:'phoenix-framework',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'employeeLeaveList', displayName:'请假记录', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'employeeInterviewList', displayName:'员工面试', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'employeeAttendanceList', displayName:'员工考勤', icon:'at',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'employeeQualifierList', displayName:'员工资质', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'employeeEducationList', displayName:'员工教育', icon:'at',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'employeeAwardList', displayName:'员工嘉奖', icon:'award',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'employeeSalarySheetList', displayName:'工资单', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'payingOffList', displayName:'工资支付', icon:'coffee',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'employeeCompanyTrainingList', displayName:'员工参与的公司培训', icon:'om',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'employeeSkillList', displayName:'员工技能', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'employeePerformanceList', displayName:'员工绩效', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'employeeWorkExperienceList', displayName:'员工工作经验', icon:'phoenix-framework',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'employeeLeaveList', displayName:'请假记录', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'employeeInterviewList', displayName:'员工面试', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'employeeAttendanceList', displayName:'员工考勤', icon:'at',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'employeeQualifierList', displayName:'员工资质', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'employeeEducationList', displayName:'员工教育', icon:'at',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'employeeAwardList', displayName:'员工嘉奖', icon:'award',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'employeeSalarySheetList', displayName:'工资单', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'payingOffList', displayName:'工资支付', icon:'coffee',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) - -} - -const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'employee') }, - { title: '公司', dataIndex: 'company', render: (text, record) => renderReferenceCell(text, record)}, - { title: '头衔', debugtype: 'string', dataIndex: 'title', width: '7',render: (text, record)=>renderTextCell(text,record) }, - { title: '部门', dataIndex: 'department', render: (text, record) => renderReferenceCell(text, record)}, - { title: '姓', debugtype: 'string', dataIndex: 'familyName', width: '5',render: (text, record)=>renderTextCell(text,record) }, - { title: '名', debugtype: 'string', dataIndex: 'givenName', width: '6',render: (text, record)=>renderTextCell(text,record) }, - { title: '电子邮件', debugtype: 'string_email', dataIndex: 'email', width: '17',render: (text, record)=>renderTextCell(text,record) }, - { title: '城市', debugtype: 'string', dataIndex: 'city', width: '6',render: (text, record)=>renderTextCell(text,record) }, - { title: '地址', debugtype: 'string', dataIndex: 'address', width: '11',render: (text, record)=>renderTextCell(text,record) }, - { title: '手机', debugtype: 'string_china_mobile_phone', dataIndex: 'cellPhone', width: '15',render: (text, record)=>renderTextCell(text,record) }, - { title: '职业', dataIndex: 'occupation', render: (text, record) => renderReferenceCell(text, record)}, - { title: '负责', dataIndex: 'responsibleFor', render: (text, record) => renderReferenceCell(text, record)}, - { title: '目前工资等级', dataIndex: 'currentSalaryGrade', render: (text, record) => renderReferenceCell(text, record)}, - { title: '工资账户', debugtype: 'string', dataIndex: 'salaryAccount', width: '19',render: (text, record)=>renderTextCell(text,record) }, - { title: '工作申请', dataIndex: 'jobApplication', render: (text, record) => renderReferenceCell(text, record)}, - { title: '专业面试', dataIndex: 'professionInterview', render: (text, record) => renderReferenceCell(text, record)}, - { title: '人力资源部面试', dataIndex: 'hrInterview', render: (text, record) => renderReferenceCell(text, record)}, - { title: '审批工作要约', dataIndex: 'offerApproval', render: (text, record) => renderReferenceCell(text, record)}, - { title: '接受工作要约', dataIndex: 'offerAcceptance', render: (text, record) => renderReferenceCell(text, record)}, - { title: '员工入职', dataIndex: 'employeeBoarding', render: (text, record) => renderReferenceCell(text, record)}, - { title: '雇佣终止', dataIndex: 'termination', render: (text, record) => renderReferenceCell(text, record)}, - { title: '最后更新时间', dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record) }, - { title: '当前状态', debugtype: 'string', dataIndex: 'currentStatus', width: '26',render: (text, record)=>renderTextCell(text,record) }, - -] - const fieldLabels = { id: '序号', company: '公司', @@ -142,8 +74,93 @@ const fieldLabels = { } +const displayColumns = [ + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'employee') , sorter: true }, + { title: fieldLabels.company, dataIndex: 'company', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.title, debugtype: 'string', dataIndex: 'title', width: '7',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.department, dataIndex: 'department', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.familyName, debugtype: 'string', dataIndex: 'familyName', width: '5',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.givenName, debugtype: 'string', dataIndex: 'givenName', width: '6',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.email, debugtype: 'string_email', dataIndex: 'email', width: '17',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.city, debugtype: 'string', dataIndex: 'city', width: '6',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.address, debugtype: 'string', dataIndex: 'address', width: '11',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.cellPhone, debugtype: 'string_china_mobile_phone', dataIndex: 'cellPhone', width: '15',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.occupation, dataIndex: 'occupation', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.responsibleFor, dataIndex: 'responsibleFor', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.currentSalaryGrade, dataIndex: 'currentSalaryGrade', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.salaryAccount, debugtype: 'string', dataIndex: 'salaryAccount', width: '19',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.jobApplication, dataIndex: 'jobApplication', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.professionInterview, dataIndex: 'professionInterview', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.hrInterview, dataIndex: 'hrInterview', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.offerApproval, dataIndex: 'offerApproval', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.offerAcceptance, dataIndex: 'offerAcceptance', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.employeeBoarding, dataIndex: 'employeeBoarding', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.termination, dataIndex: 'termination', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.lastUpdateTime, dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record), sorter: true}, + { title: fieldLabels.currentStatus, debugtype: 'string', dataIndex: 'currentStatus', width: '26',render: (text, record)=>renderTextCell(text,record)}, + +] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({employee,targetComponent})=>{ + + + + const {EmployeeService} = GlobalComponents + // const userContext = null + return ( + +{employee.id} +{employee.title} +{employee.department==null?appLocaleName(userContext,"NotAssigned"):`${employee.department.displayName}(${employee.department.id})`} + + showTransferModel(targetComponent,"部门","levelThreeDepartment",EmployeeService.requestCandidateDepartment, + EmployeeService.transferToAnotherDepartment,"anotherDepartmentId",employee.department?employee.department.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{employee.familyName} +{employee.givenName} +{employee.email} +{employee.city} +{employee.address} +{employee.cellPhone} +{employee.occupation==null?appLocaleName(userContext,"NotAssigned"):`${employee.occupation.displayName}(${employee.occupation.id})`} + + showTransferModel(targetComponent,"职业","occupationType",EmployeeService.requestCandidateOccupation, + EmployeeService.transferToAnotherOccupation,"anotherOccupationId",employee.occupation?employee.occupation.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{employee.responsibleFor==null?appLocaleName(userContext,"NotAssigned"):`${employee.responsibleFor.displayName}(${employee.responsibleFor.id})`} + + showTransferModel(targetComponent,"负责","responsibilityType",EmployeeService.requestCandidateResponsibleFor, + EmployeeService.transferToAnotherResponsibleFor,"anotherResponsibleForId",employee.responsibleFor?employee.responsibleFor.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{employee.currentSalaryGrade==null?appLocaleName(userContext,"NotAssigned"):`${employee.currentSalaryGrade.displayName}(${employee.currentSalaryGrade.id})`} + + showTransferModel(targetComponent,"目前工资等级","salaryGrade",EmployeeService.requestCandidateCurrentSalaryGrade, + EmployeeService.transferToAnotherCurrentSalaryGrade,"anotherCurrentSalaryGradeId",employee.currentSalaryGrade?employee.currentSalaryGrade.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{employee.salaryAccount} +{employee.termination==null?appLocaleName(userContext,"NotAssigned"):`${employee.termination.displayName}(${employee.termination.id})`} + + showTransferModel(targetComponent,"雇佣终止","termination",EmployeeService.requestCandidateTermination, + EmployeeService.transferToAnotherTermination,"anotherTerminationId",employee.termination?employee.termination.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{ moment(employee.lastUpdateTime).format('YYYY-MM-DD')} +{employee.currentStatus} + + {buildTransferModal(employee,targetComponent)} + + ) + +} + + + -const EmployeeBase={menuData,displayColumns,fieldLabels} +const EmployeeBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default EmployeeBase diff --git a/bizui/src/bizcomponents/employee/Employee.createform.js b/bizui/src/bizcomponents/employee/Employee.createform.js index a029e65b0..e9b3715c8 100644 --- a/bizui/src/bizcomponents/employee/Employee.createform.js +++ b/bizui/src/bizcomponents/employee/Employee.createform.js @@ -218,7 +218,7 @@ class EmployeeCreateForm extends Component { {getFieldDecorator('title', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -228,7 +228,7 @@ class EmployeeCreateForm extends Component { {getFieldDecorator('familyName', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -238,7 +238,7 @@ class EmployeeCreateForm extends Component { {getFieldDecorator('givenName', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -248,7 +248,7 @@ class EmployeeCreateForm extends Component { {getFieldDecorator('email', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -258,7 +258,7 @@ class EmployeeCreateForm extends Component { {getFieldDecorator('city', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -268,7 +268,7 @@ class EmployeeCreateForm extends Component { {getFieldDecorator('address', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -278,7 +278,7 @@ class EmployeeCreateForm extends Component { {getFieldDecorator('cellPhone', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -288,7 +288,7 @@ class EmployeeCreateForm extends Component { {getFieldDecorator('salaryAccount', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/employee/Employee.dashboard.js b/bizui/src/bizcomponents/employee/Employee.dashboard.js index 70c09ef8f..a178aca88 100644 --- a/bizui/src/bizcomponents/employee/Employee.dashboard.js +++ b/bizui/src/bizcomponents/employee/Employee.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -186,6 +186,7 @@ class EmployeeDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -194,13 +195,17 @@ class EmployeeDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/employee/Employee.model.js b/bizui/src/bizcomponents/employee/Employee.model.js index b4caa4eec..dc0274b9d 100644 --- a/bizui/src/bizcomponents/employee/Employee.model.js +++ b/bizui/src/bizcomponents/employee/Employee.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/employee/${id}/list/\EmployeeCompanyTrainingList/员工参与的公司培训+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/employee/${id}/list/EmployeeCompanyTrainingList/员工参与的公司培训+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateEmployeeCompanyTraining({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/employee/${id}/list/\EmployeeCompanyTrainingList/员工参与的公司培训列表`, state: newPlayload } + const location = { pathname: `/employee/${id}/list/EmployeeCompanyTrainingList/员工参与的公司培训列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextEmployeeCompanyTrainingUpdateRow({ payload }, { call, put }) { @@ -206,7 +206,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/employee/${id}/list/\EmployeeSkillList/员工技能+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/employee/${id}/list/EmployeeSkillList/员工技能+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateEmployeeSkill({ payload }, { call, put }) { @@ -228,7 +228,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/employee/${id}/list/\EmployeeSkillList/员工技能列表`, state: newPlayload } + const location = { pathname: `/employee/${id}/list/EmployeeSkillList/员工技能列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextEmployeeSkillUpdateRow({ payload }, { call, put }) { @@ -275,7 +275,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/employee/${id}/list/\EmployeePerformanceList/员工绩效+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/employee/${id}/list/EmployeePerformanceList/员工绩效+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateEmployeePerformance({ payload }, { call, put }) { @@ -297,7 +297,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/employee/${id}/list/\EmployeePerformanceList/员工绩效列表`, state: newPlayload } + const location = { pathname: `/employee/${id}/list/EmployeePerformanceList/员工绩效列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextEmployeePerformanceUpdateRow({ payload }, { call, put }) { @@ -344,7 +344,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/employee/${id}/list/\EmployeeWorkExperienceList/员工工作经验+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/employee/${id}/list/EmployeeWorkExperienceList/员工工作经验+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateEmployeeWorkExperience({ payload }, { call, put }) { @@ -366,7 +366,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/employee/${id}/list/\EmployeeWorkExperienceList/员工工作经验列表`, state: newPlayload } + const location = { pathname: `/employee/${id}/list/EmployeeWorkExperienceList/员工工作经验列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextEmployeeWorkExperienceUpdateRow({ payload }, { call, put }) { @@ -413,7 +413,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/employee/${id}/list/\EmployeeLeaveList/请假记录+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/employee/${id}/list/EmployeeLeaveList/请假记录+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateEmployeeLeave({ payload }, { call, put }) { @@ -435,7 +435,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/employee/${id}/list/\EmployeeLeaveList/请假记录列表`, state: newPlayload } + const location = { pathname: `/employee/${id}/list/EmployeeLeaveList/请假记录列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextEmployeeLeaveUpdateRow({ payload }, { call, put }) { @@ -482,7 +482,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/employee/${id}/list/\EmployeeInterviewList/员工面试+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/employee/${id}/list/EmployeeInterviewList/员工面试+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateEmployeeInterview({ payload }, { call, put }) { @@ -504,7 +504,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/employee/${id}/list/\EmployeeInterviewList/员工面试列表`, state: newPlayload } + const location = { pathname: `/employee/${id}/list/EmployeeInterviewList/员工面试列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextEmployeeInterviewUpdateRow({ payload }, { call, put }) { @@ -551,7 +551,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/employee/${id}/list/\EmployeeAttendanceList/员工考勤+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/employee/${id}/list/EmployeeAttendanceList/员工考勤+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateEmployeeAttendance({ payload }, { call, put }) { @@ -573,7 +573,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/employee/${id}/list/\EmployeeAttendanceList/员工考勤列表`, state: newPlayload } + const location = { pathname: `/employee/${id}/list/EmployeeAttendanceList/员工考勤列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextEmployeeAttendanceUpdateRow({ payload }, { call, put }) { @@ -620,7 +620,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/employee/${id}/list/\EmployeeQualifierList/员工资质+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/employee/${id}/list/EmployeeQualifierList/员工资质+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateEmployeeQualifier({ payload }, { call, put }) { @@ -642,7 +642,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/employee/${id}/list/\EmployeeQualifierList/员工资质列表`, state: newPlayload } + const location = { pathname: `/employee/${id}/list/EmployeeQualifierList/员工资质列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextEmployeeQualifierUpdateRow({ payload }, { call, put }) { @@ -689,7 +689,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/employee/${id}/list/\EmployeeEducationList/员工教育+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/employee/${id}/list/EmployeeEducationList/员工教育+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateEmployeeEducation({ payload }, { call, put }) { @@ -711,7 +711,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/employee/${id}/list/\EmployeeEducationList/员工教育列表`, state: newPlayload } + const location = { pathname: `/employee/${id}/list/EmployeeEducationList/员工教育列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextEmployeeEducationUpdateRow({ payload }, { call, put }) { @@ -758,7 +758,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/employee/${id}/list/\EmployeeAwardList/员工嘉奖+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/employee/${id}/list/EmployeeAwardList/员工嘉奖+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateEmployeeAward({ payload }, { call, put }) { @@ -780,7 +780,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/employee/${id}/list/\EmployeeAwardList/员工嘉奖列表`, state: newPlayload } + const location = { pathname: `/employee/${id}/list/EmployeeAwardList/员工嘉奖列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextEmployeeAwardUpdateRow({ payload }, { call, put }) { @@ -827,7 +827,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/employee/${id}/list/\EmployeeSalarySheetList/工资单+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/employee/${id}/list/EmployeeSalarySheetList/工资单+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateEmployeeSalarySheet({ payload }, { call, put }) { @@ -849,7 +849,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/employee/${id}/list/\EmployeeSalarySheetList/工资单列表`, state: newPlayload } + const location = { pathname: `/employee/${id}/list/EmployeeSalarySheetList/工资单列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextEmployeeSalarySheetUpdateRow({ payload }, { call, put }) { @@ -896,7 +896,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/employee/${id}/list/\PayingOffList/工资支付+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/employee/${id}/list/PayingOffList/工资支付+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updatePayingOff({ payload }, { call, put }) { @@ -918,7 +918,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/employee/${id}/list/\PayingOffList/工资支付列表`, state: newPlayload } + const location = { pathname: `/employee/${id}/list/PayingOffList/工资支付列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextPayingOffUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/employee/Employee.permission.js b/bizui/src/bizcomponents/employee/Employee.permission.js new file mode 100644 index 000000000..f6f60e626 --- /dev/null +++ b/bizui/src/bizcomponents/employee/Employee.permission.js @@ -0,0 +1,93 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './Employee.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (employee,targetComponent) =>{ + const userContext = null + return ( + +{employee.id} +{employee.title} +{employee.familyName} +{employee.givenName} +{employee.email} +{employee.city} +{employee.address} +{employee.cellPhone} +{employee.salaryAccount} +{ moment(employee.lastUpdateTime).format('YYYY-MM-DD')} +{employee.currentStatus} + + + ) +} + + +const renderPermissionSetting = employee => { + const {EmployeeBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class EmployeePermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const employee = this.props.employee; + const { id,displayName, employeeCompanyTrainingCount, employeeSkillCount, employeePerformanceCount, employeeWorkExperienceCount, employeeLeaveCount, employeeInterviewCount, employeeAttendanceCount, employeeQualifierCount, employeeEducationCount, employeeAwardCount, employeeSalarySheetCount, payingOffCount } = employee + const cardsData = {cardsName:"员工",cardsFor: "employee",cardsSource: employee, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + employee: state._employee, +}))(Form.create()(EmployeePermission)) + diff --git a/bizui/src/bizcomponents/employee/Employee.permission.less b/bizui/src/bizcomponents/employee/Employee.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/employee/Employee.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/employee/Employee.preference.js b/bizui/src/bizcomponents/employee/Employee.preference.js index ca449007b..8dff49b6e 100644 --- a/bizui/src/bizcomponents/employee/Employee.preference.js +++ b/bizui/src/bizcomponents/employee/Employee.preference.js @@ -338,8 +338,12 @@ class EmployeePreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, employeeCompanyTrainingCount, employeeSkillCount, employeePerformanceCount, employeeWorkExperienceCount, employeeLeaveCount, employeeInterviewCount, employeeAttendanceCount, employeeQualifierCount, employeeEducationCount, employeeAwardCount, employeeSalarySheetCount, payingOffCount } = this.props.employee - const cardsData = {cardsName:"员工",cardsFor: "employee",cardsSource: this.props.employee, + const employee = this.props.employee; + const { id,displayName, employeeCompanyTrainingCount, employeeSkillCount, employeePerformanceCount, employeeWorkExperienceCount, employeeLeaveCount, employeeInterviewCount, employeeAttendanceCount, employeeQualifierCount, employeeEducationCount, employeeAwardCount, employeeSalarySheetCount, payingOffCount } = employee + + + + const cardsData = {cardsName:"员工",cardsFor: "employee",cardsSource: employee, subItems: [ ], diff --git a/bizui/src/bizcomponents/employee/Employee.profile.js b/bizui/src/bizcomponents/employee/Employee.profile.js new file mode 100644 index 000000000..a77133204 --- /dev/null +++ b/bizui/src/bizcomponents/employee/Employee.profile.js @@ -0,0 +1,100 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './Employee.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (employee,targetComponent) =>{ + const userContext = null + return ( + +{employee.id} +{employee.title} +{employee.familyName} +{employee.givenName} +{employee.email} +{employee.city} +{employee.address} +{employee.cellPhone} +{employee.salaryAccount} +{ moment(employee.lastUpdateTime).format('YYYY-MM-DD')} +{employee.currentStatus} + + + ) +} + + + +class EmployeeProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const employee = this.props.employee; + const { id,displayName, employeeCompanyTrainingCount, employeeSkillCount, employeePerformanceCount, employeeWorkExperienceCount, employeeLeaveCount, employeeInterviewCount, employeeAttendanceCount, employeeQualifierCount, employeeEducationCount, employeeAwardCount, employeeSalarySheetCount, payingOffCount } = employee + + const cardsData = {cardsName:"员工",cardsFor: "employee",cardsSource: employee, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + employee: state._employee, +}))(Form.create()(EmployeeProfile)) + diff --git a/bizui/src/bizcomponents/employee/Employee.profile.less b/bizui/src/bizcomponents/employee/Employee.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/employee/Employee.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/employee/Employee.search.js b/bizui/src/bizcomponents/employee/Employee.search.js index 63d909c4e..dd395b28c 100644 --- a/bizui/src/bizcomponents/employee/Employee.search.js +++ b/bizui/src/bizcomponents/employee/Employee.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/employee/Employee.searchform.js b/bizui/src/bizcomponents/employee/Employee.searchform.js index 78501cad5..bbe1b72b3 100644 --- a/bizui/src/bizcomponents/employee/Employee.searchform.js +++ b/bizui/src/bizcomponents/employee/Employee.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`employeeList.searchField`] = fieldName - value[`employeeList.searchVerb`] = searchVerb - value[`employeeList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,23 +127,24 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'company')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'title')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'department')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'familyName')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'givenName')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'email')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'city')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'address')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'cellPhone')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'occupation')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'responsibleFor')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'currentSalaryGrade')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'salaryAccount')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'currentStatus')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'company')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'title')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'department')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'familyName')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'givenName')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'email')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'city')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'address')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'cellPhone')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'occupation')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'responsibleFor')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'currentSalaryGrade')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'salaryAccount')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'currentStatus')) console.log("the final parameter", paramList) @@ -159,11 +160,12 @@ componentDidMount() { } - params['employeeList'] = 1 - params['employeeList.orderBy.0'] = "id" - params['employeeList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -225,8 +227,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -420,8 +422,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/employee/Employee.table.js b/bizui/src/bizcomponents/employee/Employee.table.js index 1b3dbd0ff..e00600cf8 100644 --- a/bizui/src/bizcomponents/employee/Employee.table.js +++ b/bizui/src/bizcomponents/employee/Employee.table.js @@ -40,24 +40,53 @@ class EmployeeTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = EmployeeBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class EmployeeTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class EmployeeTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/employee/Employee.updateform.js b/bizui/src/bizcomponents/employee/Employee.updateform.js index c0924bf57..12ac9b492 100644 --- a/bizui/src/bizcomponents/employee/Employee.updateform.js +++ b/bizui/src/bizcomponents/employee/Employee.updateform.js @@ -262,7 +262,7 @@ class EmployeeUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class EmployeeUpdateForm extends Component { initialValue: selectedRow.title, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class EmployeeUpdateForm extends Component { initialValue: selectedRow.familyName, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -298,7 +298,7 @@ class EmployeeUpdateForm extends Component { initialValue: selectedRow.givenName, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -310,7 +310,7 @@ class EmployeeUpdateForm extends Component { initialValue: selectedRow.email, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -322,7 +322,7 @@ class EmployeeUpdateForm extends Component { initialValue: selectedRow.city, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -334,7 +334,7 @@ class EmployeeUpdateForm extends Component { initialValue: selectedRow.address, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -346,7 +346,7 @@ class EmployeeUpdateForm extends Component { initialValue: selectedRow.cellPhone, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -358,7 +358,7 @@ class EmployeeUpdateForm extends Component { initialValue: selectedRow.salaryAccount, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.app.js b/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.app.js index 25a19ca9b..fbd0ab0d4 100644 --- a/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.app.js +++ b/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class EmployeeAttendanceBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -157,12 +166,14 @@ class EmployeeAttendanceBizApp extends React.PureComponent { buildRouters = () =>{ const {EmployeeAttendanceDashboard} = GlobalComponents - const {EmployeeAttendancePreference} = GlobalComponents + const {EmployeeAttendancePermission} = GlobalComponents + const {EmployeeAttendanceProfile} = GlobalComponents const routers=[ {path:"/employeeAttendance/:id/dashboard", component: EmployeeAttendanceDashboard}, - {path:"/employeeAttendance/:id/preference", component: EmployeeAttendancePreference}, + {path:"/employeeAttendance/:id/profile", component: EmployeeAttendanceProfile}, + {path:"/employeeAttendance/:id/permission", component: EmployeeAttendancePermission}, diff --git a/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.associateform.js b/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.associateform.js index 631c43ee4..5e9ce6b11 100644 --- a/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.associateform.js +++ b/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.associateform.js @@ -18,8 +18,8 @@ const { TextArea } = Input const testValues = {}; /* const testValues = { - enterTime: '2016-05-29', - leaveTime: '2017-09-23', + enterTime: '2018-02-03', + leaveTime: '2018-08-31', durationHours: '6', remark: '今天状态不错啊', employeeId: 'E000001', @@ -141,7 +141,7 @@ class EmployeeAttendanceAssociateForm extends Component { {getFieldDecorator('enterTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -151,7 +151,7 @@ class EmployeeAttendanceAssociateForm extends Component { {getFieldDecorator('leaveTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -161,7 +161,7 @@ class EmployeeAttendanceAssociateForm extends Component { {getFieldDecorator('durationHours', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -171,7 +171,7 @@ class EmployeeAttendanceAssociateForm extends Component { {getFieldDecorator('remark', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.associateform.less b/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.associateform.less +++ b/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.base.js b/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.base.js index d32311179..bc18bb97d 100644 --- a/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.base.js +++ b/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.base.js @@ -1,10 +1,33 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"员工考勤", menuFor: "employeeAttendance", subItems: [ @@ -12,80 +35,6 @@ const menuData = {menuName:"员工考勤", menuFor: "employeeAttendance", ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) - -} - -const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record) }, - { title: '员工', dataIndex: 'employee', render: (text, record) => renderReferenceCell(text, record)}, - { title: '进入时间', dataIndex: 'enterTime', render: (text, record) =>renderDateCell(text,record) }, - { title: '离开的时候', dataIndex: 'leaveTime', render: (text, record) =>renderDateCell(text,record) }, - { title: '持续时间', debugtype: 'int', dataIndex: 'durationHours', width: '5',render: (text, record)=>renderTextCell(text,record) }, - { title: '备注', debugtype: 'string', dataIndex: 'remark', width: '11',render: (text, record)=>renderTextCell(text,record) }, - -] - const fieldLabels = { id: '序号', employee: '员工', @@ -96,8 +45,46 @@ const fieldLabels = { } +const displayColumns = [ + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.employee, dataIndex: 'employee', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.enterTime, dataIndex: 'enterTime', render: (text, record) =>renderDateCell(text,record), sorter: true }, + { title: fieldLabels.leaveTime, dataIndex: 'leaveTime', render: (text, record) =>renderDateCell(text,record), sorter: true }, + { title: fieldLabels.durationHours, debugtype: 'int', dataIndex: 'durationHours', width: '5',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.remark, debugtype: 'string', dataIndex: 'remark', width: '11',render: (text, record)=>renderTextCell(text,record)}, + +] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({employeeAttendance,targetComponent})=>{ + + + + const {EmployeeAttendanceService} = GlobalComponents + // const userContext = null + return ( + +{employeeAttendance.id} +{employeeAttendance.employee==null?appLocaleName(userContext,"NotAssigned"):`${employeeAttendance.employee.displayName}(${employeeAttendance.employee.id})`} + + showTransferModel(targetComponent,"员工","employee",EmployeeAttendanceService.requestCandidateEmployee, + EmployeeAttendanceService.transferToAnotherEmployee,"anotherEmployeeId",employeeAttendance.employee?employeeAttendance.employee.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{ moment(employeeAttendance.enterTime).format('YYYY-MM-DD')} +{ moment(employeeAttendance.leaveTime).format('YYYY-MM-DD')} +{employeeAttendance.durationHours} +{employeeAttendance.remark} + + {buildTransferModal(employeeAttendance,targetComponent)} + + ) + +} + + + -const EmployeeAttendanceBase={menuData,displayColumns,fieldLabels} +const EmployeeAttendanceBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default EmployeeAttendanceBase diff --git a/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.createform.js b/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.createform.js index 943c60aef..bdc547604 100644 --- a/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.createform.js +++ b/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.createform.js @@ -17,9 +17,9 @@ const { TextArea } = Input const testValues = {}; /* const testValues = { - enterTime: '2018-07-23', - leaveTime: '2019-02-05', - durationHours: '6', + enterTime: '2018-12-22', + leaveTime: '2018-08-25', + durationHours: '7', remark: '今天状态不错啊', employeeId: 'E000001', } @@ -210,7 +210,7 @@ class EmployeeAttendanceCreateForm extends Component { {getFieldDecorator('enterTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -220,7 +220,7 @@ class EmployeeAttendanceCreateForm extends Component { {getFieldDecorator('leaveTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -230,7 +230,7 @@ class EmployeeAttendanceCreateForm extends Component { {getFieldDecorator('durationHours', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -240,7 +240,7 @@ class EmployeeAttendanceCreateForm extends Component { {getFieldDecorator('remark', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.dashboard.js b/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.dashboard.js index 2c95aa85f..43c331a36 100644 --- a/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.dashboard.js +++ b/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -144,6 +144,7 @@ class EmployeeAttendanceDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -152,13 +153,17 @@ class EmployeeAttendanceDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.model.js b/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.model.js index 34c2b5cc5..75fa06feb 100644 --- a/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.model.js +++ b/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' diff --git a/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.permission.js b/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.permission.js new file mode 100644 index 000000000..76f67d759 --- /dev/null +++ b/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.permission.js @@ -0,0 +1,87 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './EmployeeAttendance.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (employeeAttendance,targetComponent) =>{ + const userContext = null + return ( + +{employeeAttendance.id} +{ moment(employeeAttendance.enterTime).format('YYYY-MM-DD')} +{ moment(employeeAttendance.leaveTime).format('YYYY-MM-DD')} +{employeeAttendance.durationHours} +{employeeAttendance.remark} + + + ) +} + + +const renderPermissionSetting = employeeAttendance => { + const {EmployeeAttendanceBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class EmployeeAttendancePermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const employeeAttendance = this.props.employeeAttendance; + const { id,displayName, } = employeeAttendance + const cardsData = {cardsName:"员工考勤",cardsFor: "employeeAttendance",cardsSource: employeeAttendance, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + employeeAttendance: state._employeeAttendance, +}))(Form.create()(EmployeeAttendancePermission)) + diff --git a/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.permission.less b/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.preference.js b/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.preference.js index a94364ed9..5c8117d4a 100644 --- a/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.preference.js +++ b/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.preference.js @@ -308,8 +308,12 @@ class EmployeeAttendancePreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, } = this.props.employeeAttendance - const cardsData = {cardsName:"员工考勤",cardsFor: "employeeAttendance",cardsSource: this.props.employeeAttendance, + const employeeAttendance = this.props.employeeAttendance; + const { id,displayName, } = employeeAttendance + + + + const cardsData = {cardsName:"员工考勤",cardsFor: "employeeAttendance",cardsSource: employeeAttendance, subItems: [ ], diff --git a/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.profile.js b/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.profile.js new file mode 100644 index 000000000..4c6934530 --- /dev/null +++ b/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.profile.js @@ -0,0 +1,94 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './EmployeeAttendance.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (employeeAttendance,targetComponent) =>{ + const userContext = null + return ( + +{employeeAttendance.id} +{ moment(employeeAttendance.enterTime).format('YYYY-MM-DD')} +{ moment(employeeAttendance.leaveTime).format('YYYY-MM-DD')} +{employeeAttendance.durationHours} +{employeeAttendance.remark} + + + ) +} + + + +class EmployeeAttendanceProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const employeeAttendance = this.props.employeeAttendance; + const { id,displayName, } = employeeAttendance + + const cardsData = {cardsName:"员工考勤",cardsFor: "employeeAttendance",cardsSource: employeeAttendance, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + employeeAttendance: state._employeeAttendance, +}))(Form.create()(EmployeeAttendanceProfile)) + diff --git a/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.profile.less b/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.search.js b/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.search.js index 9b3b8769d..6ee1ea047 100644 --- a/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.search.js +++ b/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.searchform.js b/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.searchform.js index 2fe9d411e..55007afc1 100644 --- a/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.searchform.js +++ b/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`employeeAttendanceList.searchField`] = fieldName - value[`employeeAttendanceList.searchVerb`] = searchVerb - value[`employeeAttendanceList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,11 +127,12 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'employee')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'remark')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'employee')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'remark')) console.log("the final parameter", paramList) @@ -147,11 +148,12 @@ componentDidMount() { } - params['employeeAttendanceList'] = 1 - params['employeeAttendanceList.orderBy.0'] = "id" - params['employeeAttendanceList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -213,8 +215,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -284,8 +286,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.table.js b/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.table.js index bcf87e6a5..bf1d1efae 100644 --- a/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.table.js +++ b/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.table.js @@ -40,24 +40,53 @@ class EmployeeAttendanceTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = EmployeeAttendanceBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class EmployeeAttendanceTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class EmployeeAttendanceTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.updateform.js b/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.updateform.js index 2ae4d5b4e..28e765dc8 100644 --- a/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.updateform.js +++ b/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.updateform.js @@ -263,7 +263,7 @@ class EmployeeAttendanceUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -275,7 +275,7 @@ class EmployeeAttendanceUpdateForm extends Component { initialValue: selectedRow.enterTime, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -287,7 +287,7 @@ class EmployeeAttendanceUpdateForm extends Component { initialValue: selectedRow.leaveTime, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -299,7 +299,7 @@ class EmployeeAttendanceUpdateForm extends Component { initialValue: selectedRow.durationHours, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -311,7 +311,7 @@ class EmployeeAttendanceUpdateForm extends Component { initialValue: selectedRow.remark, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/employeeaward/EmployeeAward.app.js b/bizui/src/bizcomponents/employeeaward/EmployeeAward.app.js index c011a62b9..601d8e17e 100644 --- a/bizui/src/bizcomponents/employeeaward/EmployeeAward.app.js +++ b/bizui/src/bizcomponents/employeeaward/EmployeeAward.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class EmployeeAwardBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -157,12 +166,14 @@ class EmployeeAwardBizApp extends React.PureComponent { buildRouters = () =>{ const {EmployeeAwardDashboard} = GlobalComponents - const {EmployeeAwardPreference} = GlobalComponents + const {EmployeeAwardPermission} = GlobalComponents + const {EmployeeAwardProfile} = GlobalComponents const routers=[ {path:"/employeeAward/:id/dashboard", component: EmployeeAwardDashboard}, - {path:"/employeeAward/:id/preference", component: EmployeeAwardPreference}, + {path:"/employeeAward/:id/profile", component: EmployeeAwardProfile}, + {path:"/employeeAward/:id/permission", component: EmployeeAwardPermission}, diff --git a/bizui/src/bizcomponents/employeeaward/EmployeeAward.associateform.js b/bizui/src/bizcomponents/employeeaward/EmployeeAward.associateform.js index e71abcc41..eacd9d050 100644 --- a/bizui/src/bizcomponents/employeeaward/EmployeeAward.associateform.js +++ b/bizui/src/bizcomponents/employeeaward/EmployeeAward.associateform.js @@ -18,7 +18,7 @@ const { TextArea } = Input const testValues = {}; /* const testValues = { - completeTime: '2017-05-13', + completeTime: '2018-08-03', type: '明星员工', remark: '考试成绩当年第一名', employeeId: 'E000001', @@ -140,7 +140,7 @@ class EmployeeAwardAssociateForm extends Component { {getFieldDecorator('completeTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -150,7 +150,7 @@ class EmployeeAwardAssociateForm extends Component { {getFieldDecorator('type', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -160,7 +160,7 @@ class EmployeeAwardAssociateForm extends Component { {getFieldDecorator('remark', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/employeeaward/EmployeeAward.associateform.less b/bizui/src/bizcomponents/employeeaward/EmployeeAward.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/employeeaward/EmployeeAward.associateform.less +++ b/bizui/src/bizcomponents/employeeaward/EmployeeAward.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/employeeaward/EmployeeAward.base.js b/bizui/src/bizcomponents/employeeaward/EmployeeAward.base.js index d35a167d6..6228a6568 100644 --- a/bizui/src/bizcomponents/employeeaward/EmployeeAward.base.js +++ b/bizui/src/bizcomponents/employeeaward/EmployeeAward.base.js @@ -1,10 +1,33 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"员工嘉奖", menuFor: "employeeAward", subItems: [ @@ -12,90 +35,53 @@ const menuData = {menuName:"员工嘉奖", menuFor: "employeeAward", ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + employee: '员工', + completeTime: '完成时间', + type: '类型', + remark: '备注', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record) }, - { title: '员工', dataIndex: 'employee', render: (text, record) => renderReferenceCell(text, record)}, - { title: '完成时间', dataIndex: 'completeTime', render: (text, record) =>renderDateCell(text,record) }, - { title: '类型', debugtype: 'string', dataIndex: 'type', width: '9',render: (text, record)=>renderTextCell(text,record) }, - { title: '备注', debugtype: 'string', dataIndex: 'remark', width: '13',render: (text, record)=>renderTextCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.employee, dataIndex: 'employee', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.completeTime, dataIndex: 'completeTime', render: (text, record) =>renderDateCell(text,record), sorter: true }, + { title: fieldLabels.type, debugtype: 'string', dataIndex: 'type', width: '9',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.remark, debugtype: 'string', dataIndex: 'remark', width: '13',render: (text, record)=>renderTextCell(text,record)}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({employeeAward,targetComponent})=>{ -const fieldLabels = { - id: '序号', - employee: '员工', - completeTime: '完成时间', - type: '类型', - remark: '备注', + + + const {EmployeeAwardService} = GlobalComponents + // const userContext = null + return ( + +{employeeAward.id} +{employeeAward.employee==null?appLocaleName(userContext,"NotAssigned"):`${employeeAward.employee.displayName}(${employeeAward.employee.id})`} + + showTransferModel(targetComponent,"员工","employee",EmployeeAwardService.requestCandidateEmployee, + EmployeeAwardService.transferToAnotherEmployee,"anotherEmployeeId",employeeAward.employee?employeeAward.employee.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{ moment(employeeAward.completeTime).format('YYYY-MM-DD')} +{employeeAward.type} +{employeeAward.remark} + + {buildTransferModal(employeeAward,targetComponent)} + + ) } + + -const EmployeeAwardBase={menuData,displayColumns,fieldLabels} +const EmployeeAwardBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default EmployeeAwardBase diff --git a/bizui/src/bizcomponents/employeeaward/EmployeeAward.createform.js b/bizui/src/bizcomponents/employeeaward/EmployeeAward.createform.js index 8103ca336..d01a07170 100644 --- a/bizui/src/bizcomponents/employeeaward/EmployeeAward.createform.js +++ b/bizui/src/bizcomponents/employeeaward/EmployeeAward.createform.js @@ -17,7 +17,7 @@ const { TextArea } = Input const testValues = {}; /* const testValues = { - completeTime: '2018-06-20', + completeTime: '2016-07-22', type: '明星员工', remark: '考试成绩当年第一名', employeeId: 'E000001', @@ -209,7 +209,7 @@ class EmployeeAwardCreateForm extends Component { {getFieldDecorator('completeTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -219,7 +219,7 @@ class EmployeeAwardCreateForm extends Component { {getFieldDecorator('type', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -229,7 +229,7 @@ class EmployeeAwardCreateForm extends Component { {getFieldDecorator('remark', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/employeeaward/EmployeeAward.dashboard.js b/bizui/src/bizcomponents/employeeaward/EmployeeAward.dashboard.js index c27b052ae..9e8e4b7bf 100644 --- a/bizui/src/bizcomponents/employeeaward/EmployeeAward.dashboard.js +++ b/bizui/src/bizcomponents/employeeaward/EmployeeAward.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -143,6 +143,7 @@ class EmployeeAwardDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -151,13 +152,17 @@ class EmployeeAwardDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/employeeaward/EmployeeAward.model.js b/bizui/src/bizcomponents/employeeaward/EmployeeAward.model.js index 626e818f0..aa64cc12a 100644 --- a/bizui/src/bizcomponents/employeeaward/EmployeeAward.model.js +++ b/bizui/src/bizcomponents/employeeaward/EmployeeAward.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' diff --git a/bizui/src/bizcomponents/employeeaward/EmployeeAward.permission.js b/bizui/src/bizcomponents/employeeaward/EmployeeAward.permission.js new file mode 100644 index 000000000..a1f15c637 --- /dev/null +++ b/bizui/src/bizcomponents/employeeaward/EmployeeAward.permission.js @@ -0,0 +1,86 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './EmployeeAward.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (employeeAward,targetComponent) =>{ + const userContext = null + return ( + +{employeeAward.id} +{ moment(employeeAward.completeTime).format('YYYY-MM-DD')} +{employeeAward.type} +{employeeAward.remark} + + + ) +} + + +const renderPermissionSetting = employeeAward => { + const {EmployeeAwardBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class EmployeeAwardPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const employeeAward = this.props.employeeAward; + const { id,displayName, } = employeeAward + const cardsData = {cardsName:"员工嘉奖",cardsFor: "employeeAward",cardsSource: employeeAward, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + employeeAward: state._employeeAward, +}))(Form.create()(EmployeeAwardPermission)) + diff --git a/bizui/src/bizcomponents/employeeaward/EmployeeAward.permission.less b/bizui/src/bizcomponents/employeeaward/EmployeeAward.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/employeeaward/EmployeeAward.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/employeeaward/EmployeeAward.preference.js b/bizui/src/bizcomponents/employeeaward/EmployeeAward.preference.js index db48bf72e..0afcbd193 100644 --- a/bizui/src/bizcomponents/employeeaward/EmployeeAward.preference.js +++ b/bizui/src/bizcomponents/employeeaward/EmployeeAward.preference.js @@ -307,8 +307,12 @@ class EmployeeAwardPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, } = this.props.employeeAward - const cardsData = {cardsName:"员工嘉奖",cardsFor: "employeeAward",cardsSource: this.props.employeeAward, + const employeeAward = this.props.employeeAward; + const { id,displayName, } = employeeAward + + + + const cardsData = {cardsName:"员工嘉奖",cardsFor: "employeeAward",cardsSource: employeeAward, subItems: [ ], diff --git a/bizui/src/bizcomponents/employeeaward/EmployeeAward.profile.js b/bizui/src/bizcomponents/employeeaward/EmployeeAward.profile.js new file mode 100644 index 000000000..cedad50e5 --- /dev/null +++ b/bizui/src/bizcomponents/employeeaward/EmployeeAward.profile.js @@ -0,0 +1,93 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './EmployeeAward.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (employeeAward,targetComponent) =>{ + const userContext = null + return ( + +{employeeAward.id} +{ moment(employeeAward.completeTime).format('YYYY-MM-DD')} +{employeeAward.type} +{employeeAward.remark} + + + ) +} + + + +class EmployeeAwardProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const employeeAward = this.props.employeeAward; + const { id,displayName, } = employeeAward + + const cardsData = {cardsName:"员工嘉奖",cardsFor: "employeeAward",cardsSource: employeeAward, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + employeeAward: state._employeeAward, +}))(Form.create()(EmployeeAwardProfile)) + diff --git a/bizui/src/bizcomponents/employeeaward/EmployeeAward.profile.less b/bizui/src/bizcomponents/employeeaward/EmployeeAward.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/employeeaward/EmployeeAward.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/employeeaward/EmployeeAward.search.js b/bizui/src/bizcomponents/employeeaward/EmployeeAward.search.js index efd9db74d..3a35b83bd 100644 --- a/bizui/src/bizcomponents/employeeaward/EmployeeAward.search.js +++ b/bizui/src/bizcomponents/employeeaward/EmployeeAward.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/employeeaward/EmployeeAward.searchform.js b/bizui/src/bizcomponents/employeeaward/EmployeeAward.searchform.js index 3f158cbd6..ebab19486 100644 --- a/bizui/src/bizcomponents/employeeaward/EmployeeAward.searchform.js +++ b/bizui/src/bizcomponents/employeeaward/EmployeeAward.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`employeeAwardList.searchField`] = fieldName - value[`employeeAwardList.searchVerb`] = searchVerb - value[`employeeAwardList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,12 +127,13 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'employee')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'type')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'remark')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'employee')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'type')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'remark')) console.log("the final parameter", paramList) @@ -148,11 +149,12 @@ componentDidMount() { } - params['employeeAwardList'] = 1 - params['employeeAwardList.orderBy.0'] = "id" - params['employeeAwardList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -214,8 +216,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -293,8 +295,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/employeeaward/EmployeeAward.table.js b/bizui/src/bizcomponents/employeeaward/EmployeeAward.table.js index 881abe866..d71d293f8 100644 --- a/bizui/src/bizcomponents/employeeaward/EmployeeAward.table.js +++ b/bizui/src/bizcomponents/employeeaward/EmployeeAward.table.js @@ -40,24 +40,53 @@ class EmployeeAwardTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = EmployeeAwardBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class EmployeeAwardTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class EmployeeAwardTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/employeeaward/EmployeeAward.updateform.js b/bizui/src/bizcomponents/employeeaward/EmployeeAward.updateform.js index ad3cf3ca1..19e9a9e0a 100644 --- a/bizui/src/bizcomponents/employeeaward/EmployeeAward.updateform.js +++ b/bizui/src/bizcomponents/employeeaward/EmployeeAward.updateform.js @@ -262,7 +262,7 @@ class EmployeeAwardUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class EmployeeAwardUpdateForm extends Component { initialValue: selectedRow.completeTime, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class EmployeeAwardUpdateForm extends Component { initialValue: selectedRow.type, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -298,7 +298,7 @@ class EmployeeAwardUpdateForm extends Component { initialValue: selectedRow.remark, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.app.js b/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.app.js index b2f15ba7f..9c708226e 100644 --- a/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.app.js +++ b/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class EmployeeBoardingBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class EmployeeBoardingBizApp extends React.PureComponent { buildRouters = () =>{ const {EmployeeBoardingDashboard} = GlobalComponents - const {EmployeeBoardingPreference} = GlobalComponents + const {EmployeeBoardingPermission} = GlobalComponents + const {EmployeeBoardingProfile} = GlobalComponents const routers=[ {path:"/employeeBoarding/:id/dashboard", component: EmployeeBoardingDashboard}, - {path:"/employeeBoarding/:id/preference", component: EmployeeBoardingPreference}, + {path:"/employeeBoarding/:id/profile", component: EmployeeBoardingProfile}, + {path:"/employeeBoarding/:id/permission", component: EmployeeBoardingPermission}, diff --git a/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.associateform.js b/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.associateform.js index 7a4d2f8f4..447ccf2a0 100644 --- a/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.associateform.js +++ b/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { who: '人力资源部', - employTime: '2018-08-25', + employTime: '2017-10-05', comments: '欢迎加入植物医生大家庭', } */ @@ -140,7 +140,7 @@ class EmployeeBoardingAssociateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -150,7 +150,7 @@ class EmployeeBoardingAssociateForm extends Component { {getFieldDecorator('employTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -160,7 +160,7 @@ class EmployeeBoardingAssociateForm extends Component { {getFieldDecorator('comments', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.associateform.less b/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.associateform.less +++ b/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.base.js b/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.base.js index 575f2b5d4..a1c4e3661 100644 --- a/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.base.js +++ b/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.base.js @@ -1,100 +1,80 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"员工入职", menuFor: "employeeBoarding", subItems: [ - {name: 'employeeList', displayName:'员工', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'employeeList', displayName:'员工', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + who: '谁', + employTime: '使用时间', + comments: '评论', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'employeeBoarding') }, - { title: '谁', debugtype: 'string', dataIndex: 'who', width: '9',render: (text, record)=>renderTextCell(text,record) }, - { title: '使用时间', dataIndex: 'employTime', render: (text, record) =>renderDateCell(text,record) }, - { title: '评论', debugtype: 'string', dataIndex: 'comments', width: '15',render: (text, record)=>renderTextCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'employeeBoarding') , sorter: true }, + { title: fieldLabels.who, debugtype: 'string', dataIndex: 'who', width: '9',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.employTime, dataIndex: 'employTime', render: (text, record) =>renderDateCell(text,record), sorter: true }, + { title: fieldLabels.comments, debugtype: 'string', dataIndex: 'comments', width: '15',render: (text, record)=>renderTextCell(text,record)}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({employeeBoarding,targetComponent})=>{ -const fieldLabels = { - id: '序号', - who: '谁', - employTime: '使用时间', - comments: '评论', + + + const {EmployeeBoardingService} = GlobalComponents + // const userContext = null + return ( + +{employeeBoarding.id} +{employeeBoarding.who} +{ moment(employeeBoarding.employTime).format('YYYY-MM-DD')} +{employeeBoarding.comments} + + {buildTransferModal(employeeBoarding,targetComponent)} + + ) } + + -const EmployeeBoardingBase={menuData,displayColumns,fieldLabels} +const EmployeeBoardingBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default EmployeeBoardingBase diff --git a/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.createform.js b/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.createform.js index 6c71f9ecc..21f728ec9 100644 --- a/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.createform.js +++ b/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { who: '人力资源部', - employTime: '2017-05-13', + employTime: '2018-02-12', comments: '欢迎加入植物医生大家庭', } */ @@ -208,7 +208,7 @@ class EmployeeBoardingCreateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -218,7 +218,7 @@ class EmployeeBoardingCreateForm extends Component { {getFieldDecorator('employTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -228,7 +228,7 @@ class EmployeeBoardingCreateForm extends Component { {getFieldDecorator('comments', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.dashboard.js b/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.dashboard.js index 174f323eb..147817882 100644 --- a/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.dashboard.js +++ b/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -138,6 +138,7 @@ class EmployeeBoardingDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -146,13 +147,17 @@ class EmployeeBoardingDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.model.js b/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.model.js index 2d880c604..2c05ea49a 100644 --- a/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.model.js +++ b/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/employeeBoarding/${id}/list/\EmployeeList/员工+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/employeeBoarding/${id}/list/EmployeeList/员工+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateEmployee({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/employeeBoarding/${id}/list/\EmployeeList/员工列表`, state: newPlayload } + const location = { pathname: `/employeeBoarding/${id}/list/EmployeeList/员工列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextEmployeeUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.permission.js b/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.permission.js new file mode 100644 index 000000000..8aa590877 --- /dev/null +++ b/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.permission.js @@ -0,0 +1,86 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './EmployeeBoarding.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (employeeBoarding,targetComponent) =>{ + const userContext = null + return ( + +{employeeBoarding.id} +{employeeBoarding.who} +{ moment(employeeBoarding.employTime).format('YYYY-MM-DD')} +{employeeBoarding.comments} + + + ) +} + + +const renderPermissionSetting = employeeBoarding => { + const {EmployeeBoardingBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class EmployeeBoardingPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const employeeBoarding = this.props.employeeBoarding; + const { id,displayName, employeeCount } = employeeBoarding + const cardsData = {cardsName:"员工入职",cardsFor: "employeeBoarding",cardsSource: employeeBoarding, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + employeeBoarding: state._employeeBoarding, +}))(Form.create()(EmployeeBoardingPermission)) + diff --git a/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.permission.less b/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.preference.js b/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.preference.js index 155dbab9e..f26e70319 100644 --- a/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.preference.js +++ b/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.preference.js @@ -301,8 +301,12 @@ class EmployeeBoardingPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, employeeCount } = this.props.employeeBoarding - const cardsData = {cardsName:"员工入职",cardsFor: "employeeBoarding",cardsSource: this.props.employeeBoarding, + const employeeBoarding = this.props.employeeBoarding; + const { id,displayName, employeeCount } = employeeBoarding + + + + const cardsData = {cardsName:"员工入职",cardsFor: "employeeBoarding",cardsSource: employeeBoarding, subItems: [ ], diff --git a/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.profile.js b/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.profile.js new file mode 100644 index 000000000..0b2b3de73 --- /dev/null +++ b/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.profile.js @@ -0,0 +1,93 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './EmployeeBoarding.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (employeeBoarding,targetComponent) =>{ + const userContext = null + return ( + +{employeeBoarding.id} +{employeeBoarding.who} +{ moment(employeeBoarding.employTime).format('YYYY-MM-DD')} +{employeeBoarding.comments} + + + ) +} + + + +class EmployeeBoardingProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const employeeBoarding = this.props.employeeBoarding; + const { id,displayName, employeeCount } = employeeBoarding + + const cardsData = {cardsName:"员工入职",cardsFor: "employeeBoarding",cardsSource: employeeBoarding, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + employeeBoarding: state._employeeBoarding, +}))(Form.create()(EmployeeBoardingProfile)) + diff --git a/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.profile.less b/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.search.js b/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.search.js index 54492d4aa..c6feeb6ac 100644 --- a/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.search.js +++ b/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.searchform.js b/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.searchform.js index a3535869f..4561c2767 100644 --- a/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.searchform.js +++ b/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`employeeBoardingList.searchField`] = fieldName - value[`employeeBoardingList.searchVerb`] = searchVerb - value[`employeeBoardingList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,11 +127,12 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'who')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'comments')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'who')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'comments')) console.log("the final parameter", paramList) @@ -147,11 +148,12 @@ componentDidMount() { } - params['employeeBoardingList'] = 1 - params['employeeBoardingList.orderBy.0'] = "id" - params['employeeBoardingList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -206,8 +208,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -270,8 +272,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.table.js b/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.table.js index 7d46e7164..0a02c78d6 100644 --- a/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.table.js +++ b/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.table.js @@ -40,24 +40,53 @@ class EmployeeBoardingTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = EmployeeBoardingBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class EmployeeBoardingTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class EmployeeBoardingTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.updateform.js b/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.updateform.js index 9e826cc01..4ff8e32af 100644 --- a/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.updateform.js +++ b/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.updateform.js @@ -262,7 +262,7 @@ class EmployeeBoardingUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class EmployeeBoardingUpdateForm extends Component { initialValue: selectedRow.who, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class EmployeeBoardingUpdateForm extends Component { initialValue: selectedRow.employTime, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -298,7 +298,7 @@ class EmployeeBoardingUpdateForm extends Component { initialValue: selectedRow.comments, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.app.js b/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.app.js index 81370884e..a95ec3153 100644 --- a/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.app.js +++ b/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class EmployeeCompanyTrainingBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -157,12 +166,14 @@ class EmployeeCompanyTrainingBizApp extends React.PureComponent { buildRouters = () =>{ const {EmployeeCompanyTrainingDashboard} = GlobalComponents - const {EmployeeCompanyTrainingPreference} = GlobalComponents + const {EmployeeCompanyTrainingPermission} = GlobalComponents + const {EmployeeCompanyTrainingProfile} = GlobalComponents const routers=[ {path:"/employeeCompanyTraining/:id/dashboard", component: EmployeeCompanyTrainingDashboard}, - {path:"/employeeCompanyTraining/:id/preference", component: EmployeeCompanyTrainingPreference}, + {path:"/employeeCompanyTraining/:id/profile", component: EmployeeCompanyTrainingProfile}, + {path:"/employeeCompanyTraining/:id/permission", component: EmployeeCompanyTrainingPermission}, diff --git a/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.associateform.less b/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.associateform.less +++ b/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.base.js b/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.base.js index d4e2c20b7..9e5aeb1f4 100644 --- a/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.base.js +++ b/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.base.js @@ -1,10 +1,33 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"员工参与的公司培训", menuFor: "employeeCompanyTraining", subItems: [ @@ -12,90 +35,57 @@ const menuData = {menuName:"员工参与的公司培训", menuFor: "employeeComp ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + employee: '员工', + training: '训练', + scoring: '评分', + currentStatus: '当前状态', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record) }, - { title: '员工', dataIndex: 'employee', render: (text, record) => renderReferenceCell(text, record)}, - { title: '训练', dataIndex: 'training', render: (text, record) => renderReferenceCell(text, record)}, - { title: '评分', dataIndex: 'scoring', render: (text, record) => renderReferenceCell(text, record)}, - { title: '当前状态', debugtype: 'string', dataIndex: 'currentStatus', width: '10',render: (text, record)=>renderTextCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.employee, dataIndex: 'employee', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.training, dataIndex: 'training', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.scoring, dataIndex: 'scoring', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.currentStatus, debugtype: 'string', dataIndex: 'currentStatus', width: '10',render: (text, record)=>renderTextCell(text,record)}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({employeeCompanyTraining,targetComponent})=>{ -const fieldLabels = { - id: '序号', - employee: '员工', - training: '训练', - scoring: '评分', - currentStatus: '当前状态', + + + const {EmployeeCompanyTrainingService} = GlobalComponents + // const userContext = null + return ( + +{employeeCompanyTraining.id} +{employeeCompanyTraining.employee==null?appLocaleName(userContext,"NotAssigned"):`${employeeCompanyTraining.employee.displayName}(${employeeCompanyTraining.employee.id})`} + + showTransferModel(targetComponent,"员工","employee",EmployeeCompanyTrainingService.requestCandidateEmployee, + EmployeeCompanyTrainingService.transferToAnotherEmployee,"anotherEmployeeId",employeeCompanyTraining.employee?employeeCompanyTraining.employee.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{employeeCompanyTraining.training==null?appLocaleName(userContext,"NotAssigned"):`${employeeCompanyTraining.training.displayName}(${employeeCompanyTraining.training.id})`} + + showTransferModel(targetComponent,"训练","companyTraining",EmployeeCompanyTrainingService.requestCandidateTraining, + EmployeeCompanyTrainingService.transferToAnotherTraining,"anotherTrainingId",employeeCompanyTraining.training?employeeCompanyTraining.training.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{employeeCompanyTraining.currentStatus} + + {buildTransferModal(employeeCompanyTraining,targetComponent)} + + ) } + + -const EmployeeCompanyTrainingBase={menuData,displayColumns,fieldLabels} +const EmployeeCompanyTrainingBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default EmployeeCompanyTrainingBase diff --git a/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.dashboard.js b/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.dashboard.js index c45c76acd..47bc7bbe6 100644 --- a/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.dashboard.js +++ b/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -147,6 +147,7 @@ class EmployeeCompanyTrainingDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -155,13 +156,17 @@ class EmployeeCompanyTrainingDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.model.js b/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.model.js index 545f77937..71bffa5cb 100644 --- a/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.model.js +++ b/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' diff --git a/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.permission.js b/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.permission.js new file mode 100644 index 000000000..c12a470bb --- /dev/null +++ b/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.permission.js @@ -0,0 +1,84 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './EmployeeCompanyTraining.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (employeeCompanyTraining,targetComponent) =>{ + const userContext = null + return ( + +{employeeCompanyTraining.id} +{employeeCompanyTraining.currentStatus} + + + ) +} + + +const renderPermissionSetting = employeeCompanyTraining => { + const {EmployeeCompanyTrainingBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class EmployeeCompanyTrainingPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const employeeCompanyTraining = this.props.employeeCompanyTraining; + const { id,displayName, } = employeeCompanyTraining + const cardsData = {cardsName:"员工参与的公司培训",cardsFor: "employeeCompanyTraining",cardsSource: employeeCompanyTraining, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + employeeCompanyTraining: state._employeeCompanyTraining, +}))(Form.create()(EmployeeCompanyTrainingPermission)) + diff --git a/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.permission.less b/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.preference.js b/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.preference.js index 03eda0c50..ae090d49b 100644 --- a/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.preference.js +++ b/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.preference.js @@ -311,8 +311,12 @@ class EmployeeCompanyTrainingPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, } = this.props.employeeCompanyTraining - const cardsData = {cardsName:"员工参与的公司培训",cardsFor: "employeeCompanyTraining",cardsSource: this.props.employeeCompanyTraining, + const employeeCompanyTraining = this.props.employeeCompanyTraining; + const { id,displayName, } = employeeCompanyTraining + + + + const cardsData = {cardsName:"员工参与的公司培训",cardsFor: "employeeCompanyTraining",cardsSource: employeeCompanyTraining, subItems: [ ], diff --git a/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.profile.js b/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.profile.js new file mode 100644 index 000000000..43109fb10 --- /dev/null +++ b/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.profile.js @@ -0,0 +1,91 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './EmployeeCompanyTraining.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (employeeCompanyTraining,targetComponent) =>{ + const userContext = null + return ( + +{employeeCompanyTraining.id} +{employeeCompanyTraining.currentStatus} + + + ) +} + + + +class EmployeeCompanyTrainingProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const employeeCompanyTraining = this.props.employeeCompanyTraining; + const { id,displayName, } = employeeCompanyTraining + + const cardsData = {cardsName:"员工参与的公司培训",cardsFor: "employeeCompanyTraining",cardsSource: employeeCompanyTraining, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + employeeCompanyTraining: state._employeeCompanyTraining, +}))(Form.create()(EmployeeCompanyTrainingProfile)) + diff --git a/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.profile.less b/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.search.js b/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.search.js index ef2dece61..412ac2cb5 100644 --- a/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.search.js +++ b/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.searchform.js b/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.searchform.js index 9b6f5941f..1d40350c8 100644 --- a/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.searchform.js +++ b/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`employeeCompanyTrainingList.searchField`] = fieldName - value[`employeeCompanyTrainingList.searchVerb`] = searchVerb - value[`employeeCompanyTrainingList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,12 +127,13 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'employee')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'training')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'currentStatus')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'employee')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'training')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'currentStatus')) console.log("the final parameter", paramList) @@ -148,11 +149,12 @@ componentDidMount() { } - params['employeeCompanyTrainingList'] = 1 - params['employeeCompanyTrainingList.orderBy.0'] = "id" - params['employeeCompanyTrainingList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -214,8 +216,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -300,8 +302,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.table.js b/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.table.js index b59ccf5fd..018168c9d 100644 --- a/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.table.js +++ b/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.table.js @@ -40,24 +40,53 @@ class EmployeeCompanyTrainingTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = EmployeeCompanyTrainingBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class EmployeeCompanyTrainingTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class EmployeeCompanyTrainingTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.updateform.js b/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.updateform.js index 33dc9c985..4accb3455 100644 --- a/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.updateform.js +++ b/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.updateform.js @@ -261,7 +261,7 @@ class EmployeeCompanyTrainingUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.app.js b/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.app.js index 55369c218..c56cf3036 100644 --- a/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.app.js +++ b/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class EmployeeEducationBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -157,12 +166,14 @@ class EmployeeEducationBizApp extends React.PureComponent { buildRouters = () =>{ const {EmployeeEducationDashboard} = GlobalComponents - const {EmployeeEducationPreference} = GlobalComponents + const {EmployeeEducationPermission} = GlobalComponents + const {EmployeeEducationProfile} = GlobalComponents const routers=[ {path:"/employeeEducation/:id/dashboard", component: EmployeeEducationDashboard}, - {path:"/employeeEducation/:id/preference", component: EmployeeEducationPreference}, + {path:"/employeeEducation/:id/profile", component: EmployeeEducationProfile}, + {path:"/employeeEducation/:id/permission", component: EmployeeEducationPermission}, diff --git a/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.associateform.js b/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.associateform.js index 9f7aaa32d..a37c2dd86 100644 --- a/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.associateform.js +++ b/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.associateform.js @@ -18,7 +18,7 @@ const { TextArea } = Input const testValues = {}; /* const testValues = { - completeTime: '2017-01-16', + completeTime: '2018-04-08', type: '小学', remark: '考试成绩当年第一名', employeeId: 'E000001', @@ -140,7 +140,7 @@ class EmployeeEducationAssociateForm extends Component { {getFieldDecorator('completeTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -150,7 +150,7 @@ class EmployeeEducationAssociateForm extends Component { {getFieldDecorator('type', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -160,7 +160,7 @@ class EmployeeEducationAssociateForm extends Component { {getFieldDecorator('remark', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.associateform.less b/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.associateform.less +++ b/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.base.js b/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.base.js index 8f60963c7..244111b08 100644 --- a/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.base.js +++ b/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.base.js @@ -1,10 +1,33 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"员工教育", menuFor: "employeeEducation", subItems: [ @@ -12,90 +35,53 @@ const menuData = {menuName:"员工教育", menuFor: "employeeEducation", ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + employee: '员工', + completeTime: '完成时间', + type: '类型', + remark: '备注', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record) }, - { title: '员工', dataIndex: 'employee', render: (text, record) => renderReferenceCell(text, record)}, - { title: '完成时间', dataIndex: 'completeTime', render: (text, record) =>renderDateCell(text,record) }, - { title: '类型', debugtype: 'string', dataIndex: 'type', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: '备注', debugtype: 'string', dataIndex: 'remark', width: '13',render: (text, record)=>renderTextCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.employee, dataIndex: 'employee', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.completeTime, dataIndex: 'completeTime', render: (text, record) =>renderDateCell(text,record), sorter: true }, + { title: fieldLabels.type, debugtype: 'string', dataIndex: 'type', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.remark, debugtype: 'string', dataIndex: 'remark', width: '13',render: (text, record)=>renderTextCell(text,record)}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({employeeEducation,targetComponent})=>{ -const fieldLabels = { - id: '序号', - employee: '员工', - completeTime: '完成时间', - type: '类型', - remark: '备注', + + + const {EmployeeEducationService} = GlobalComponents + // const userContext = null + return ( + +{employeeEducation.id} +{employeeEducation.employee==null?appLocaleName(userContext,"NotAssigned"):`${employeeEducation.employee.displayName}(${employeeEducation.employee.id})`} + + showTransferModel(targetComponent,"员工","employee",EmployeeEducationService.requestCandidateEmployee, + EmployeeEducationService.transferToAnotherEmployee,"anotherEmployeeId",employeeEducation.employee?employeeEducation.employee.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{ moment(employeeEducation.completeTime).format('YYYY-MM-DD')} +{employeeEducation.type} +{employeeEducation.remark} + + {buildTransferModal(employeeEducation,targetComponent)} + + ) } + + -const EmployeeEducationBase={menuData,displayColumns,fieldLabels} +const EmployeeEducationBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default EmployeeEducationBase diff --git a/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.createform.js b/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.createform.js index a53c2c693..4ee3af3c5 100644 --- a/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.createform.js +++ b/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.createform.js @@ -17,7 +17,7 @@ const { TextArea } = Input const testValues = {}; /* const testValues = { - completeTime: '2018-03-17', + completeTime: '2016-10-20', type: '小学', remark: '考试成绩当年第一名', employeeId: 'E000001', @@ -209,7 +209,7 @@ class EmployeeEducationCreateForm extends Component { {getFieldDecorator('completeTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -219,7 +219,7 @@ class EmployeeEducationCreateForm extends Component { {getFieldDecorator('type', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -229,7 +229,7 @@ class EmployeeEducationCreateForm extends Component { {getFieldDecorator('remark', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.dashboard.js b/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.dashboard.js index 36bbfb9cf..a82329658 100644 --- a/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.dashboard.js +++ b/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -143,6 +143,7 @@ class EmployeeEducationDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -151,13 +152,17 @@ class EmployeeEducationDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.model.js b/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.model.js index fe6316b42..e571015c0 100644 --- a/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.model.js +++ b/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' diff --git a/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.permission.js b/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.permission.js new file mode 100644 index 000000000..ff0482fd0 --- /dev/null +++ b/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.permission.js @@ -0,0 +1,86 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './EmployeeEducation.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (employeeEducation,targetComponent) =>{ + const userContext = null + return ( + +{employeeEducation.id} +{ moment(employeeEducation.completeTime).format('YYYY-MM-DD')} +{employeeEducation.type} +{employeeEducation.remark} + + + ) +} + + +const renderPermissionSetting = employeeEducation => { + const {EmployeeEducationBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class EmployeeEducationPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const employeeEducation = this.props.employeeEducation; + const { id,displayName, } = employeeEducation + const cardsData = {cardsName:"员工教育",cardsFor: "employeeEducation",cardsSource: employeeEducation, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + employeeEducation: state._employeeEducation, +}))(Form.create()(EmployeeEducationPermission)) + diff --git a/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.permission.less b/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.preference.js b/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.preference.js index 1552af2bd..13078848b 100644 --- a/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.preference.js +++ b/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.preference.js @@ -307,8 +307,12 @@ class EmployeeEducationPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, } = this.props.employeeEducation - const cardsData = {cardsName:"员工教育",cardsFor: "employeeEducation",cardsSource: this.props.employeeEducation, + const employeeEducation = this.props.employeeEducation; + const { id,displayName, } = employeeEducation + + + + const cardsData = {cardsName:"员工教育",cardsFor: "employeeEducation",cardsSource: employeeEducation, subItems: [ ], diff --git a/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.profile.js b/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.profile.js new file mode 100644 index 000000000..86093e0b9 --- /dev/null +++ b/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.profile.js @@ -0,0 +1,93 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './EmployeeEducation.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (employeeEducation,targetComponent) =>{ + const userContext = null + return ( + +{employeeEducation.id} +{ moment(employeeEducation.completeTime).format('YYYY-MM-DD')} +{employeeEducation.type} +{employeeEducation.remark} + + + ) +} + + + +class EmployeeEducationProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const employeeEducation = this.props.employeeEducation; + const { id,displayName, } = employeeEducation + + const cardsData = {cardsName:"员工教育",cardsFor: "employeeEducation",cardsSource: employeeEducation, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + employeeEducation: state._employeeEducation, +}))(Form.create()(EmployeeEducationProfile)) + diff --git a/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.profile.less b/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.search.js b/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.search.js index 1b7670278..c4ddc3be9 100644 --- a/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.search.js +++ b/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.searchform.js b/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.searchform.js index e4eb5757c..53985f012 100644 --- a/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.searchform.js +++ b/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`employeeEducationList.searchField`] = fieldName - value[`employeeEducationList.searchVerb`] = searchVerb - value[`employeeEducationList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,12 +127,13 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'employee')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'type')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'remark')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'employee')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'type')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'remark')) console.log("the final parameter", paramList) @@ -148,11 +149,12 @@ componentDidMount() { } - params['employeeEducationList'] = 1 - params['employeeEducationList.orderBy.0'] = "id" - params['employeeEducationList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -214,8 +216,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -293,8 +295,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.table.js b/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.table.js index e250f34ba..1a7220064 100644 --- a/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.table.js +++ b/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.table.js @@ -40,24 +40,53 @@ class EmployeeEducationTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = EmployeeEducationBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class EmployeeEducationTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class EmployeeEducationTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.updateform.js b/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.updateform.js index 9d822cfae..ae47d5e7c 100644 --- a/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.updateform.js +++ b/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.updateform.js @@ -262,7 +262,7 @@ class EmployeeEducationUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class EmployeeEducationUpdateForm extends Component { initialValue: selectedRow.completeTime, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class EmployeeEducationUpdateForm extends Component { initialValue: selectedRow.type, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -298,7 +298,7 @@ class EmployeeEducationUpdateForm extends Component { initialValue: selectedRow.remark, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.app.js b/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.app.js index d6813bf22..ac7cec6cc 100644 --- a/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.app.js +++ b/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class EmployeeInterviewBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -157,12 +166,14 @@ class EmployeeInterviewBizApp extends React.PureComponent { buildRouters = () =>{ const {EmployeeInterviewDashboard} = GlobalComponents - const {EmployeeInterviewPreference} = GlobalComponents + const {EmployeeInterviewPermission} = GlobalComponents + const {EmployeeInterviewProfile} = GlobalComponents const routers=[ {path:"/employeeInterview/:id/dashboard", component: EmployeeInterviewDashboard}, - {path:"/employeeInterview/:id/preference", component: EmployeeInterviewPreference}, + {path:"/employeeInterview/:id/profile", component: EmployeeInterviewProfile}, + {path:"/employeeInterview/:id/permission", component: EmployeeInterviewPermission}, diff --git a/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.associateform.js b/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.associateform.js index f615178da..2432e25b4 100644 --- a/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.associateform.js +++ b/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.associateform.js @@ -139,7 +139,7 @@ class EmployeeInterviewAssociateForm extends Component { {getFieldDecorator('remark', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.associateform.less b/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.associateform.less +++ b/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.base.js b/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.base.js index 9118e5bde..55fc67bda 100644 --- a/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.base.js +++ b/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.base.js @@ -1,10 +1,33 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"员工面试", menuFor: "employeeInterview", subItems: [ @@ -12,88 +35,55 @@ const menuData = {menuName:"员工面试", menuFor: "employeeInterview", ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + employee: '员工', + interviewType: '面试类型', + remark: '备注', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record) }, - { title: '员工', dataIndex: 'employee', render: (text, record) => renderReferenceCell(text, record)}, - { title: '面试类型', dataIndex: 'interviewType', render: (text, record) => renderReferenceCell(text, record)}, - { title: '备注', debugtype: 'string', dataIndex: 'remark', width: '14',render: (text, record)=>renderTextCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.employee, dataIndex: 'employee', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.interviewType, dataIndex: 'interviewType', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.remark, debugtype: 'string', dataIndex: 'remark', width: '14',render: (text, record)=>renderTextCell(text,record)}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({employeeInterview,targetComponent})=>{ -const fieldLabels = { - id: '序号', - employee: '员工', - interviewType: '面试类型', - remark: '备注', + + + const {EmployeeInterviewService} = GlobalComponents + // const userContext = null + return ( + +{employeeInterview.id} +{employeeInterview.employee==null?appLocaleName(userContext,"NotAssigned"):`${employeeInterview.employee.displayName}(${employeeInterview.employee.id})`} + + showTransferModel(targetComponent,"员工","employee",EmployeeInterviewService.requestCandidateEmployee, + EmployeeInterviewService.transferToAnotherEmployee,"anotherEmployeeId",employeeInterview.employee?employeeInterview.employee.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{employeeInterview.interviewType==null?appLocaleName(userContext,"NotAssigned"):`${employeeInterview.interviewType.displayName}(${employeeInterview.interviewType.id})`} + + showTransferModel(targetComponent,"面试类型","interviewType",EmployeeInterviewService.requestCandidateInterviewType, + EmployeeInterviewService.transferToAnotherInterviewType,"anotherInterviewTypeId",employeeInterview.interviewType?employeeInterview.interviewType.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{employeeInterview.remark} + + {buildTransferModal(employeeInterview,targetComponent)} + + ) } + + -const EmployeeInterviewBase={menuData,displayColumns,fieldLabels} +const EmployeeInterviewBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default EmployeeInterviewBase diff --git a/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.createform.js b/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.createform.js index 72f650796..db62845ce 100644 --- a/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.createform.js +++ b/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.createform.js @@ -208,7 +208,7 @@ class EmployeeInterviewCreateForm extends Component { {getFieldDecorator('remark', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.dashboard.js b/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.dashboard.js index 5a8a06ca8..1aec22e51 100644 --- a/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.dashboard.js +++ b/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -147,6 +147,7 @@ class EmployeeInterviewDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -155,13 +156,17 @@ class EmployeeInterviewDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.model.js b/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.model.js index 98607f336..795be6197 100644 --- a/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.model.js +++ b/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' diff --git a/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.permission.js b/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.permission.js new file mode 100644 index 000000000..750899a6c --- /dev/null +++ b/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.permission.js @@ -0,0 +1,84 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './EmployeeInterview.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (employeeInterview,targetComponent) =>{ + const userContext = null + return ( + +{employeeInterview.id} +{employeeInterview.remark} + + + ) +} + + +const renderPermissionSetting = employeeInterview => { + const {EmployeeInterviewBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class EmployeeInterviewPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const employeeInterview = this.props.employeeInterview; + const { id,displayName, } = employeeInterview + const cardsData = {cardsName:"员工面试",cardsFor: "employeeInterview",cardsSource: employeeInterview, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + employeeInterview: state._employeeInterview, +}))(Form.create()(EmployeeInterviewPermission)) + diff --git a/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.permission.less b/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.preference.js b/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.preference.js index bed8e4f55..31b5d4031 100644 --- a/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.preference.js +++ b/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.preference.js @@ -311,8 +311,12 @@ class EmployeeInterviewPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, } = this.props.employeeInterview - const cardsData = {cardsName:"员工面试",cardsFor: "employeeInterview",cardsSource: this.props.employeeInterview, + const employeeInterview = this.props.employeeInterview; + const { id,displayName, } = employeeInterview + + + + const cardsData = {cardsName:"员工面试",cardsFor: "employeeInterview",cardsSource: employeeInterview, subItems: [ ], diff --git a/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.profile.js b/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.profile.js new file mode 100644 index 000000000..dff48d5ec --- /dev/null +++ b/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.profile.js @@ -0,0 +1,91 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './EmployeeInterview.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (employeeInterview,targetComponent) =>{ + const userContext = null + return ( + +{employeeInterview.id} +{employeeInterview.remark} + + + ) +} + + + +class EmployeeInterviewProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const employeeInterview = this.props.employeeInterview; + const { id,displayName, } = employeeInterview + + const cardsData = {cardsName:"员工面试",cardsFor: "employeeInterview",cardsSource: employeeInterview, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + employeeInterview: state._employeeInterview, +}))(Form.create()(EmployeeInterviewProfile)) + diff --git a/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.profile.less b/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.search.js b/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.search.js index c746da4a9..764d5614e 100644 --- a/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.search.js +++ b/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.searchform.js b/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.searchform.js index d96baaf83..c125af684 100644 --- a/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.searchform.js +++ b/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`employeeInterviewList.searchField`] = fieldName - value[`employeeInterviewList.searchVerb`] = searchVerb - value[`employeeInterviewList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,12 +127,13 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'employee')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'interviewType')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'remark')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'employee')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'interviewType')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'remark')) console.log("the final parameter", paramList) @@ -148,11 +149,12 @@ componentDidMount() { } - params['employeeInterviewList'] = 1 - params['employeeInterviewList.orderBy.0'] = "id" - params['employeeInterviewList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -214,8 +216,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -300,8 +302,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.table.js b/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.table.js index 3094541cf..6cab37452 100644 --- a/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.table.js +++ b/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.table.js @@ -40,24 +40,53 @@ class EmployeeInterviewTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = EmployeeInterviewBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class EmployeeInterviewTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class EmployeeInterviewTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.updateform.js b/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.updateform.js index 1644297d3..3415ff516 100644 --- a/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.updateform.js +++ b/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.updateform.js @@ -261,7 +261,7 @@ class EmployeeInterviewUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class EmployeeInterviewUpdateForm extends Component { initialValue: selectedRow.remark, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/employeeleave/EmployeeLeave.app.js b/bizui/src/bizcomponents/employeeleave/EmployeeLeave.app.js index 16d3e7bcc..336f842cc 100644 --- a/bizui/src/bizcomponents/employeeleave/EmployeeLeave.app.js +++ b/bizui/src/bizcomponents/employeeleave/EmployeeLeave.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class EmployeeLeaveBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -157,12 +166,14 @@ class EmployeeLeaveBizApp extends React.PureComponent { buildRouters = () =>{ const {EmployeeLeaveDashboard} = GlobalComponents - const {EmployeeLeavePreference} = GlobalComponents + const {EmployeeLeavePermission} = GlobalComponents + const {EmployeeLeaveProfile} = GlobalComponents const routers=[ {path:"/employeeLeave/:id/dashboard", component: EmployeeLeaveDashboard}, - {path:"/employeeLeave/:id/preference", component: EmployeeLeavePreference}, + {path:"/employeeLeave/:id/profile", component: EmployeeLeaveProfile}, + {path:"/employeeLeave/:id/permission", component: EmployeeLeavePermission}, diff --git a/bizui/src/bizcomponents/employeeleave/EmployeeLeave.associateform.js b/bizui/src/bizcomponents/employeeleave/EmployeeLeave.associateform.js index d568df5d8..a137447d6 100644 --- a/bizui/src/bizcomponents/employeeleave/EmployeeLeave.associateform.js +++ b/bizui/src/bizcomponents/employeeleave/EmployeeLeave.associateform.js @@ -18,7 +18,7 @@ const { TextArea } = Input const testValues = {}; /* const testValues = { - leaveDurationHour: '7', + leaveDurationHour: '8', remark: '请年假,出去耍!!!!', whoId: 'E000001', typeId: 'LT000001', @@ -140,7 +140,7 @@ class EmployeeLeaveAssociateForm extends Component { {getFieldDecorator('leaveDurationHour', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -150,7 +150,7 @@ class EmployeeLeaveAssociateForm extends Component { {getFieldDecorator('remark', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/employeeleave/EmployeeLeave.associateform.less b/bizui/src/bizcomponents/employeeleave/EmployeeLeave.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/employeeleave/EmployeeLeave.associateform.less +++ b/bizui/src/bizcomponents/employeeleave/EmployeeLeave.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/employeeleave/EmployeeLeave.base.js b/bizui/src/bizcomponents/employeeleave/EmployeeLeave.base.js index edced544a..3ed56bbb8 100644 --- a/bizui/src/bizcomponents/employeeleave/EmployeeLeave.base.js +++ b/bizui/src/bizcomponents/employeeleave/EmployeeLeave.base.js @@ -1,10 +1,33 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"请假记录", menuFor: "employeeLeave", subItems: [ @@ -12,90 +35,58 @@ const menuData = {menuName:"请假记录", menuFor: "employeeLeave", ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + who: '谁', + type: '类型', + leaveDurationHour: '请假时长', + remark: '备注', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record) }, - { title: '谁', dataIndex: 'who', render: (text, record) => renderReferenceCell(text, record)}, - { title: '类型', dataIndex: 'type', render: (text, record) => renderReferenceCell(text, record)}, - { title: '请假时长', debugtype: 'int', dataIndex: 'leaveDurationHour', width: '5',render: (text, record)=>renderTextCell(text,record) }, - { title: '备注', debugtype: 'string', dataIndex: 'remark', width: '15',render: (text, record)=>renderTextCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.who, dataIndex: 'who', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.type, dataIndex: 'type', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.leaveDurationHour, debugtype: 'int', dataIndex: 'leaveDurationHour', width: '5',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.remark, debugtype: 'string', dataIndex: 'remark', width: '15',render: (text, record)=>renderTextCell(text,record)}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({employeeLeave,targetComponent})=>{ -const fieldLabels = { - id: '序号', - who: '谁', - type: '类型', - leaveDurationHour: '请假时长', - remark: '备注', + + + const {EmployeeLeaveService} = GlobalComponents + // const userContext = null + return ( + +{employeeLeave.id} +{employeeLeave.who==null?appLocaleName(userContext,"NotAssigned"):`${employeeLeave.who.displayName}(${employeeLeave.who.id})`} + + showTransferModel(targetComponent,"谁","employee",EmployeeLeaveService.requestCandidateWho, + EmployeeLeaveService.transferToAnotherWho,"anotherWhoId",employeeLeave.who?employeeLeave.who.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{employeeLeave.type==null?appLocaleName(userContext,"NotAssigned"):`${employeeLeave.type.displayName}(${employeeLeave.type.id})`} + + showTransferModel(targetComponent,"类型","leaveType",EmployeeLeaveService.requestCandidateType, + EmployeeLeaveService.transferToAnotherType,"anotherTypeId",employeeLeave.type?employeeLeave.type.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{employeeLeave.leaveDurationHour} +{employeeLeave.remark} + + {buildTransferModal(employeeLeave,targetComponent)} + + ) } + + -const EmployeeLeaveBase={menuData,displayColumns,fieldLabels} +const EmployeeLeaveBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default EmployeeLeaveBase diff --git a/bizui/src/bizcomponents/employeeleave/EmployeeLeave.createform.js b/bizui/src/bizcomponents/employeeleave/EmployeeLeave.createform.js index bc8898fb2..b8c052a5e 100644 --- a/bizui/src/bizcomponents/employeeleave/EmployeeLeave.createform.js +++ b/bizui/src/bizcomponents/employeeleave/EmployeeLeave.createform.js @@ -17,7 +17,7 @@ const { TextArea } = Input const testValues = {}; /* const testValues = { - leaveDurationHour: '7', + leaveDurationHour: '8', remark: '请年假,出去耍!!!!', whoId: 'E000001', typeId: 'LT000001', @@ -209,7 +209,7 @@ class EmployeeLeaveCreateForm extends Component { {getFieldDecorator('leaveDurationHour', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -219,7 +219,7 @@ class EmployeeLeaveCreateForm extends Component { {getFieldDecorator('remark', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/employeeleave/EmployeeLeave.dashboard.js b/bizui/src/bizcomponents/employeeleave/EmployeeLeave.dashboard.js index c0990d8b8..a98dbd6a3 100644 --- a/bizui/src/bizcomponents/employeeleave/EmployeeLeave.dashboard.js +++ b/bizui/src/bizcomponents/employeeleave/EmployeeLeave.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -148,6 +148,7 @@ class EmployeeLeaveDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -156,13 +157,17 @@ class EmployeeLeaveDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/employeeleave/EmployeeLeave.model.js b/bizui/src/bizcomponents/employeeleave/EmployeeLeave.model.js index 3dea15474..1b4e6dcef 100644 --- a/bizui/src/bizcomponents/employeeleave/EmployeeLeave.model.js +++ b/bizui/src/bizcomponents/employeeleave/EmployeeLeave.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' diff --git a/bizui/src/bizcomponents/employeeleave/EmployeeLeave.permission.js b/bizui/src/bizcomponents/employeeleave/EmployeeLeave.permission.js new file mode 100644 index 000000000..129042d4b --- /dev/null +++ b/bizui/src/bizcomponents/employeeleave/EmployeeLeave.permission.js @@ -0,0 +1,85 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './EmployeeLeave.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (employeeLeave,targetComponent) =>{ + const userContext = null + return ( + +{employeeLeave.id} +{employeeLeave.leaveDurationHour} +{employeeLeave.remark} + + + ) +} + + +const renderPermissionSetting = employeeLeave => { + const {EmployeeLeaveBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class EmployeeLeavePermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const employeeLeave = this.props.employeeLeave; + const { id,displayName, } = employeeLeave + const cardsData = {cardsName:"请假记录",cardsFor: "employeeLeave",cardsSource: employeeLeave, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + employeeLeave: state._employeeLeave, +}))(Form.create()(EmployeeLeavePermission)) + diff --git a/bizui/src/bizcomponents/employeeleave/EmployeeLeave.permission.less b/bizui/src/bizcomponents/employeeleave/EmployeeLeave.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/employeeleave/EmployeeLeave.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/employeeleave/EmployeeLeave.preference.js b/bizui/src/bizcomponents/employeeleave/EmployeeLeave.preference.js index fc0992540..033c47ac0 100644 --- a/bizui/src/bizcomponents/employeeleave/EmployeeLeave.preference.js +++ b/bizui/src/bizcomponents/employeeleave/EmployeeLeave.preference.js @@ -312,8 +312,12 @@ class EmployeeLeavePreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, } = this.props.employeeLeave - const cardsData = {cardsName:"请假记录",cardsFor: "employeeLeave",cardsSource: this.props.employeeLeave, + const employeeLeave = this.props.employeeLeave; + const { id,displayName, } = employeeLeave + + + + const cardsData = {cardsName:"请假记录",cardsFor: "employeeLeave",cardsSource: employeeLeave, subItems: [ ], diff --git a/bizui/src/bizcomponents/employeeleave/EmployeeLeave.profile.js b/bizui/src/bizcomponents/employeeleave/EmployeeLeave.profile.js new file mode 100644 index 000000000..8d0098a00 --- /dev/null +++ b/bizui/src/bizcomponents/employeeleave/EmployeeLeave.profile.js @@ -0,0 +1,92 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './EmployeeLeave.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (employeeLeave,targetComponent) =>{ + const userContext = null + return ( + +{employeeLeave.id} +{employeeLeave.leaveDurationHour} +{employeeLeave.remark} + + + ) +} + + + +class EmployeeLeaveProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const employeeLeave = this.props.employeeLeave; + const { id,displayName, } = employeeLeave + + const cardsData = {cardsName:"请假记录",cardsFor: "employeeLeave",cardsSource: employeeLeave, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + employeeLeave: state._employeeLeave, +}))(Form.create()(EmployeeLeaveProfile)) + diff --git a/bizui/src/bizcomponents/employeeleave/EmployeeLeave.profile.less b/bizui/src/bizcomponents/employeeleave/EmployeeLeave.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/employeeleave/EmployeeLeave.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/employeeleave/EmployeeLeave.search.js b/bizui/src/bizcomponents/employeeleave/EmployeeLeave.search.js index c4cca3a49..5be70eeee 100644 --- a/bizui/src/bizcomponents/employeeleave/EmployeeLeave.search.js +++ b/bizui/src/bizcomponents/employeeleave/EmployeeLeave.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/employeeleave/EmployeeLeave.searchform.js b/bizui/src/bizcomponents/employeeleave/EmployeeLeave.searchform.js index a82557a85..7e35e60e1 100644 --- a/bizui/src/bizcomponents/employeeleave/EmployeeLeave.searchform.js +++ b/bizui/src/bizcomponents/employeeleave/EmployeeLeave.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`employeeLeaveList.searchField`] = fieldName - value[`employeeLeaveList.searchVerb`] = searchVerb - value[`employeeLeaveList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,12 +127,13 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'who')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'type')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'remark')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'who')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'type')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'remark')) console.log("the final parameter", paramList) @@ -148,11 +149,12 @@ componentDidMount() { } - params['employeeLeaveList'] = 1 - params['employeeLeaveList.orderBy.0'] = "id" - params['employeeLeaveList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -214,8 +216,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -300,8 +302,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/employeeleave/EmployeeLeave.table.js b/bizui/src/bizcomponents/employeeleave/EmployeeLeave.table.js index 3bc7b3c89..c46c0d004 100644 --- a/bizui/src/bizcomponents/employeeleave/EmployeeLeave.table.js +++ b/bizui/src/bizcomponents/employeeleave/EmployeeLeave.table.js @@ -40,24 +40,53 @@ class EmployeeLeaveTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = EmployeeLeaveBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class EmployeeLeaveTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class EmployeeLeaveTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/employeeleave/EmployeeLeave.updateform.js b/bizui/src/bizcomponents/employeeleave/EmployeeLeave.updateform.js index a310c96a0..4cfbf9a9b 100644 --- a/bizui/src/bizcomponents/employeeleave/EmployeeLeave.updateform.js +++ b/bizui/src/bizcomponents/employeeleave/EmployeeLeave.updateform.js @@ -261,7 +261,7 @@ class EmployeeLeaveUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class EmployeeLeaveUpdateForm extends Component { initialValue: selectedRow.leaveDurationHour, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -285,7 +285,7 @@ class EmployeeLeaveUpdateForm extends Component { initialValue: selectedRow.remark, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.app.js b/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.app.js index 8238f8038..ed4ff3ef4 100644 --- a/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.app.js +++ b/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class EmployeePerformanceBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -157,12 +166,14 @@ class EmployeePerformanceBizApp extends React.PureComponent { buildRouters = () =>{ const {EmployeePerformanceDashboard} = GlobalComponents - const {EmployeePerformancePreference} = GlobalComponents + const {EmployeePerformancePermission} = GlobalComponents + const {EmployeePerformanceProfile} = GlobalComponents const routers=[ {path:"/employeePerformance/:id/dashboard", component: EmployeePerformanceDashboard}, - {path:"/employeePerformance/:id/preference", component: EmployeePerformancePreference}, + {path:"/employeePerformance/:id/profile", component: EmployeePerformanceProfile}, + {path:"/employeePerformance/:id/permission", component: EmployeePerformancePermission}, diff --git a/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.associateform.js b/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.associateform.js index 94f0911da..e2f6709e3 100644 --- a/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.associateform.js +++ b/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.associateform.js @@ -138,7 +138,7 @@ class EmployeePerformanceAssociateForm extends Component { {getFieldDecorator('performanceComment', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.associateform.less b/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.associateform.less +++ b/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.base.js b/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.base.js index 11a259acf..9a2f76b89 100644 --- a/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.base.js +++ b/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.base.js @@ -1,10 +1,33 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"员工绩效", menuFor: "employeePerformance", subItems: [ @@ -12,86 +35,47 @@ const menuData = {menuName:"员工绩效", menuFor: "employeePerformance", ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + employee: '员工', + performanceComment: '绩效评价', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record) }, - { title: '员工', dataIndex: 'employee', render: (text, record) => renderReferenceCell(text, record)}, - { title: '绩效评价', debugtype: 'string', dataIndex: 'performanceComment', width: '11',render: (text, record)=>renderTextCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.employee, dataIndex: 'employee', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.performanceComment, debugtype: 'string', dataIndex: 'performanceComment', width: '11',render: (text, record)=>renderTextCell(text,record)}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({employeePerformance,targetComponent})=>{ -const fieldLabels = { - id: '序号', - employee: '员工', - performanceComment: '绩效评价', + + + const {EmployeePerformanceService} = GlobalComponents + // const userContext = null + return ( + +{employeePerformance.id} +{employeePerformance.employee==null?appLocaleName(userContext,"NotAssigned"):`${employeePerformance.employee.displayName}(${employeePerformance.employee.id})`} + + showTransferModel(targetComponent,"员工","employee",EmployeePerformanceService.requestCandidateEmployee, + EmployeePerformanceService.transferToAnotherEmployee,"anotherEmployeeId",employeePerformance.employee?employeePerformance.employee.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{employeePerformance.performanceComment} + + {buildTransferModal(employeePerformance,targetComponent)} + + ) } + + -const EmployeePerformanceBase={menuData,displayColumns,fieldLabels} +const EmployeePerformanceBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default EmployeePerformanceBase diff --git a/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.createform.js b/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.createform.js index fa172198f..8c096f3d7 100644 --- a/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.createform.js +++ b/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.createform.js @@ -207,7 +207,7 @@ class EmployeePerformanceCreateForm extends Component { {getFieldDecorator('performanceComment', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.dashboard.js b/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.dashboard.js index 113cb1e89..6ce8eee16 100644 --- a/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.dashboard.js +++ b/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -141,6 +141,7 @@ class EmployeePerformanceDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -149,13 +150,17 @@ class EmployeePerformanceDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.model.js b/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.model.js index f0b266037..0724a4839 100644 --- a/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.model.js +++ b/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' diff --git a/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.permission.js b/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.permission.js new file mode 100644 index 000000000..89f5dde99 --- /dev/null +++ b/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.permission.js @@ -0,0 +1,84 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './EmployeePerformance.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (employeePerformance,targetComponent) =>{ + const userContext = null + return ( + +{employeePerformance.id} +{employeePerformance.performanceComment} + + + ) +} + + +const renderPermissionSetting = employeePerformance => { + const {EmployeePerformanceBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class EmployeePerformancePermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const employeePerformance = this.props.employeePerformance; + const { id,displayName, } = employeePerformance + const cardsData = {cardsName:"员工绩效",cardsFor: "employeePerformance",cardsSource: employeePerformance, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + employeePerformance: state._employeePerformance, +}))(Form.create()(EmployeePerformancePermission)) + diff --git a/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.permission.less b/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.preference.js b/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.preference.js index 8553c25ee..05d9b269e 100644 --- a/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.preference.js +++ b/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.preference.js @@ -305,8 +305,12 @@ class EmployeePerformancePreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, } = this.props.employeePerformance - const cardsData = {cardsName:"员工绩效",cardsFor: "employeePerformance",cardsSource: this.props.employeePerformance, + const employeePerformance = this.props.employeePerformance; + const { id,displayName, } = employeePerformance + + + + const cardsData = {cardsName:"员工绩效",cardsFor: "employeePerformance",cardsSource: employeePerformance, subItems: [ ], diff --git a/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.profile.js b/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.profile.js new file mode 100644 index 000000000..ec274fe75 --- /dev/null +++ b/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.profile.js @@ -0,0 +1,91 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './EmployeePerformance.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (employeePerformance,targetComponent) =>{ + const userContext = null + return ( + +{employeePerformance.id} +{employeePerformance.performanceComment} + + + ) +} + + + +class EmployeePerformanceProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const employeePerformance = this.props.employeePerformance; + const { id,displayName, } = employeePerformance + + const cardsData = {cardsName:"员工绩效",cardsFor: "employeePerformance",cardsSource: employeePerformance, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + employeePerformance: state._employeePerformance, +}))(Form.create()(EmployeePerformanceProfile)) + diff --git a/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.profile.less b/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.search.js b/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.search.js index 72d7ebe41..e62b622da 100644 --- a/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.search.js +++ b/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.searchform.js b/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.searchform.js index c17be8ca7..16c67a6f3 100644 --- a/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.searchform.js +++ b/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`employeePerformanceList.searchField`] = fieldName - value[`employeePerformanceList.searchVerb`] = searchVerb - value[`employeePerformanceList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,11 +127,12 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'employee')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'performanceComment')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'employee')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'performanceComment')) console.log("the final parameter", paramList) @@ -147,11 +148,12 @@ componentDidMount() { } - params['employeePerformanceList'] = 1 - params['employeePerformanceList.orderBy.0'] = "id" - params['employeePerformanceList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -213,8 +215,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -284,8 +286,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.table.js b/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.table.js index d5c1c2e8f..d51da62ab 100644 --- a/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.table.js +++ b/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.table.js @@ -40,24 +40,53 @@ class EmployeePerformanceTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = EmployeePerformanceBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class EmployeePerformanceTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class EmployeePerformanceTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.updateform.js b/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.updateform.js index 52ff27c89..d48957eb1 100644 --- a/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.updateform.js +++ b/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.updateform.js @@ -261,7 +261,7 @@ class EmployeePerformanceUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class EmployeePerformanceUpdateForm extends Component { initialValue: selectedRow.performanceComment, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.app.js b/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.app.js index be80d9901..499dbdab6 100644 --- a/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.app.js +++ b/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class EmployeeQualifierBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -157,12 +166,14 @@ class EmployeeQualifierBizApp extends React.PureComponent { buildRouters = () =>{ const {EmployeeQualifierDashboard} = GlobalComponents - const {EmployeeQualifierPreference} = GlobalComponents + const {EmployeeQualifierPermission} = GlobalComponents + const {EmployeeQualifierProfile} = GlobalComponents const routers=[ {path:"/employeeQualifier/:id/dashboard", component: EmployeeQualifierDashboard}, - {path:"/employeeQualifier/:id/preference", component: EmployeeQualifierPreference}, + {path:"/employeeQualifier/:id/profile", component: EmployeeQualifierProfile}, + {path:"/employeeQualifier/:id/permission", component: EmployeeQualifierPermission}, diff --git a/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.associateform.js b/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.associateform.js index 2993e6b82..642668d88 100644 --- a/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.associateform.js +++ b/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.associateform.js @@ -18,7 +18,7 @@ const { TextArea } = Input const testValues = {}; /* const testValues = { - qualifiedTime: '2017-10-13', + qualifiedTime: '2017-06-05', type: '认证药剂师', level: '高级', remark: '考试成绩当年第一名', @@ -141,7 +141,7 @@ class EmployeeQualifierAssociateForm extends Component { {getFieldDecorator('qualifiedTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -151,7 +151,7 @@ class EmployeeQualifierAssociateForm extends Component { {getFieldDecorator('type', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -161,7 +161,7 @@ class EmployeeQualifierAssociateForm extends Component { {getFieldDecorator('level', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -171,7 +171,7 @@ class EmployeeQualifierAssociateForm extends Component { {getFieldDecorator('remark', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.associateform.less b/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.associateform.less +++ b/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.base.js b/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.base.js index b6ebb38bf..effa4c8e1 100644 --- a/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.base.js +++ b/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.base.js @@ -1,10 +1,33 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"员工资质", menuFor: "employeeQualifier", subItems: [ @@ -12,80 +35,6 @@ const menuData = {menuName:"员工资质", menuFor: "employeeQualifier", ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) - -} - -const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record) }, - { title: '员工', dataIndex: 'employee', render: (text, record) => renderReferenceCell(text, record)}, - { title: '合格的时间', dataIndex: 'qualifiedTime', render: (text, record) =>renderDateCell(text,record) }, - { title: '类型', debugtype: 'string', dataIndex: 'type', width: '9',render: (text, record)=>renderTextCell(text,record) }, - { title: '水平', debugtype: 'string', dataIndex: 'level', width: '6',render: (text, record)=>renderTextCell(text,record) }, - { title: '备注', debugtype: 'string', dataIndex: 'remark', width: '13',render: (text, record)=>renderTextCell(text,record) }, - -] - const fieldLabels = { id: '序号', employee: '员工', @@ -96,8 +45,46 @@ const fieldLabels = { } +const displayColumns = [ + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.employee, dataIndex: 'employee', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.qualifiedTime, dataIndex: 'qualifiedTime', render: (text, record) =>renderDateCell(text,record), sorter: true }, + { title: fieldLabels.type, debugtype: 'string', dataIndex: 'type', width: '9',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.level, debugtype: 'string', dataIndex: 'level', width: '6',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.remark, debugtype: 'string', dataIndex: 'remark', width: '13',render: (text, record)=>renderTextCell(text,record)}, + +] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({employeeQualifier,targetComponent})=>{ + + + + const {EmployeeQualifierService} = GlobalComponents + // const userContext = null + return ( + +{employeeQualifier.id} +{employeeQualifier.employee==null?appLocaleName(userContext,"NotAssigned"):`${employeeQualifier.employee.displayName}(${employeeQualifier.employee.id})`} + + showTransferModel(targetComponent,"员工","employee",EmployeeQualifierService.requestCandidateEmployee, + EmployeeQualifierService.transferToAnotherEmployee,"anotherEmployeeId",employeeQualifier.employee?employeeQualifier.employee.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{ moment(employeeQualifier.qualifiedTime).format('YYYY-MM-DD')} +{employeeQualifier.type} +{employeeQualifier.level} +{employeeQualifier.remark} + + {buildTransferModal(employeeQualifier,targetComponent)} + + ) + +} + + + -const EmployeeQualifierBase={menuData,displayColumns,fieldLabels} +const EmployeeQualifierBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default EmployeeQualifierBase diff --git a/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.createform.js b/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.createform.js index 338c0c6ff..1524fd788 100644 --- a/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.createform.js +++ b/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.createform.js @@ -17,7 +17,7 @@ const { TextArea } = Input const testValues = {}; /* const testValues = { - qualifiedTime: '2018-11-24', + qualifiedTime: '2016-11-20', type: '认证药剂师', level: '高级', remark: '考试成绩当年第一名', @@ -210,7 +210,7 @@ class EmployeeQualifierCreateForm extends Component { {getFieldDecorator('qualifiedTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -220,7 +220,7 @@ class EmployeeQualifierCreateForm extends Component { {getFieldDecorator('type', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -230,7 +230,7 @@ class EmployeeQualifierCreateForm extends Component { {getFieldDecorator('level', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -240,7 +240,7 @@ class EmployeeQualifierCreateForm extends Component { {getFieldDecorator('remark', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.dashboard.js b/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.dashboard.js index efffc8709..89a4b7b60 100644 --- a/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.dashboard.js +++ b/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -144,6 +144,7 @@ class EmployeeQualifierDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -152,13 +153,17 @@ class EmployeeQualifierDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.model.js b/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.model.js index ecfefb7da..5860e007c 100644 --- a/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.model.js +++ b/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' diff --git a/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.permission.js b/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.permission.js new file mode 100644 index 000000000..3c045b6af --- /dev/null +++ b/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.permission.js @@ -0,0 +1,87 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './EmployeeQualifier.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (employeeQualifier,targetComponent) =>{ + const userContext = null + return ( + +{employeeQualifier.id} +{ moment(employeeQualifier.qualifiedTime).format('YYYY-MM-DD')} +{employeeQualifier.type} +{employeeQualifier.level} +{employeeQualifier.remark} + + + ) +} + + +const renderPermissionSetting = employeeQualifier => { + const {EmployeeQualifierBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class EmployeeQualifierPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const employeeQualifier = this.props.employeeQualifier; + const { id,displayName, } = employeeQualifier + const cardsData = {cardsName:"员工资质",cardsFor: "employeeQualifier",cardsSource: employeeQualifier, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + employeeQualifier: state._employeeQualifier, +}))(Form.create()(EmployeeQualifierPermission)) + diff --git a/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.permission.less b/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.preference.js b/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.preference.js index cbd93b518..dbbbe8c8c 100644 --- a/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.preference.js +++ b/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.preference.js @@ -308,8 +308,12 @@ class EmployeeQualifierPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, } = this.props.employeeQualifier - const cardsData = {cardsName:"员工资质",cardsFor: "employeeQualifier",cardsSource: this.props.employeeQualifier, + const employeeQualifier = this.props.employeeQualifier; + const { id,displayName, } = employeeQualifier + + + + const cardsData = {cardsName:"员工资质",cardsFor: "employeeQualifier",cardsSource: employeeQualifier, subItems: [ ], diff --git a/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.profile.js b/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.profile.js new file mode 100644 index 000000000..284f23b73 --- /dev/null +++ b/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.profile.js @@ -0,0 +1,94 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './EmployeeQualifier.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (employeeQualifier,targetComponent) =>{ + const userContext = null + return ( + +{employeeQualifier.id} +{ moment(employeeQualifier.qualifiedTime).format('YYYY-MM-DD')} +{employeeQualifier.type} +{employeeQualifier.level} +{employeeQualifier.remark} + + + ) +} + + + +class EmployeeQualifierProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const employeeQualifier = this.props.employeeQualifier; + const { id,displayName, } = employeeQualifier + + const cardsData = {cardsName:"员工资质",cardsFor: "employeeQualifier",cardsSource: employeeQualifier, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + employeeQualifier: state._employeeQualifier, +}))(Form.create()(EmployeeQualifierProfile)) + diff --git a/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.profile.less b/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.search.js b/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.search.js index a46c473cf..1260e8175 100644 --- a/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.search.js +++ b/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.searchform.js b/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.searchform.js index 2a119e3ff..f705a5238 100644 --- a/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.searchform.js +++ b/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`employeeQualifierList.searchField`] = fieldName - value[`employeeQualifierList.searchVerb`] = searchVerb - value[`employeeQualifierList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,13 +127,14 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'employee')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'type')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'level')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'remark')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'employee')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'type')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'level')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'remark')) console.log("the final parameter", paramList) @@ -149,11 +150,12 @@ componentDidMount() { } - params['employeeQualifierList'] = 1 - params['employeeQualifierList.orderBy.0'] = "id" - params['employeeQualifierList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -215,8 +217,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -302,8 +304,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.table.js b/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.table.js index e6d16d208..3f12b7900 100644 --- a/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.table.js +++ b/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.table.js @@ -40,24 +40,53 @@ class EmployeeQualifierTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = EmployeeQualifierBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class EmployeeQualifierTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class EmployeeQualifierTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.updateform.js b/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.updateform.js index 3f00678e6..dd00e4998 100644 --- a/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.updateform.js +++ b/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.updateform.js @@ -262,7 +262,7 @@ class EmployeeQualifierUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class EmployeeQualifierUpdateForm extends Component { initialValue: selectedRow.qualifiedTime, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class EmployeeQualifierUpdateForm extends Component { initialValue: selectedRow.type, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -298,7 +298,7 @@ class EmployeeQualifierUpdateForm extends Component { initialValue: selectedRow.level, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -310,7 +310,7 @@ class EmployeeQualifierUpdateForm extends Component { initialValue: selectedRow.remark, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.app.js b/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.app.js index 5574e1d09..c247ba908 100644 --- a/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.app.js +++ b/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class EmployeeSalarySheetBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -157,12 +166,14 @@ class EmployeeSalarySheetBizApp extends React.PureComponent { buildRouters = () =>{ const {EmployeeSalarySheetDashboard} = GlobalComponents - const {EmployeeSalarySheetPreference} = GlobalComponents + const {EmployeeSalarySheetPermission} = GlobalComponents + const {EmployeeSalarySheetProfile} = GlobalComponents const routers=[ {path:"/employeeSalarySheet/:id/dashboard", component: EmployeeSalarySheetDashboard}, - {path:"/employeeSalarySheet/:id/preference", component: EmployeeSalarySheetPreference}, + {path:"/employeeSalarySheet/:id/profile", component: EmployeeSalarySheetProfile}, + {path:"/employeeSalarySheet/:id/permission", component: EmployeeSalarySheetPermission}, diff --git a/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.associateform.js b/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.associateform.js index 5ef402e67..dfc4d988f 100644 --- a/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.associateform.js +++ b/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.associateform.js @@ -18,13 +18,13 @@ const { TextArea } = Input const testValues = {}; /* const testValues = { - baseSalary: '2485.76', - bonus: '973.64', - reward: '702.49', - personalTax: '693.93', - socialSecurity: '880.41', - housingFound: '966.32', - jobInsurance: '8.06', + baseSalary: '2153.12', + bonus: '716.55', + reward: '988.22', + personalTax: '791.19', + socialSecurity: '1054.54', + housingFound: '912.44', + jobInsurance: '8.45', employeeId: 'E000001', currentSalaryGradeId: 'SG000001', } @@ -145,7 +145,7 @@ class EmployeeSalarySheetAssociateForm extends Component { {getFieldDecorator('baseSalary', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -155,7 +155,7 @@ class EmployeeSalarySheetAssociateForm extends Component { {getFieldDecorator('bonus', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -165,7 +165,7 @@ class EmployeeSalarySheetAssociateForm extends Component { {getFieldDecorator('reward', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -175,7 +175,7 @@ class EmployeeSalarySheetAssociateForm extends Component { {getFieldDecorator('personalTax', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -185,7 +185,7 @@ class EmployeeSalarySheetAssociateForm extends Component { {getFieldDecorator('socialSecurity', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -195,7 +195,7 @@ class EmployeeSalarySheetAssociateForm extends Component { {getFieldDecorator('housingFound', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -205,7 +205,7 @@ class EmployeeSalarySheetAssociateForm extends Component { {getFieldDecorator('jobInsurance', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.associateform.less b/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.associateform.less +++ b/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.base.js b/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.base.js index e85452c51..3b596f50d 100644 --- a/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.base.js +++ b/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.base.js @@ -1,10 +1,33 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"工资单", menuFor: "employeeSalarySheet", subItems: [ @@ -12,86 +35,6 @@ const menuData = {menuName:"工资单", menuFor: "employeeSalarySheet", ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) - -} - -const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record) }, - { title: '员工', dataIndex: 'employee', render: (text, record) => renderReferenceCell(text, record)}, - { title: '目前工资等级', dataIndex: 'currentSalaryGrade', render: (text, record) => renderReferenceCell(text, record)}, - { title: '基本工资', dataIndex: 'baseSalary', className:'money', render: (text, record) => renderMoneyCell(text, record) }, - { title: '奖金', dataIndex: 'bonus', className:'money', render: (text, record) => renderMoneyCell(text, record) }, - { title: '奖励', dataIndex: 'reward', className:'money', render: (text, record) => renderMoneyCell(text, record) }, - { title: '个人所得税', dataIndex: 'personalTax', className:'money', render: (text, record) => renderMoneyCell(text, record) }, - { title: '社会保险', dataIndex: 'socialSecurity', className:'money', render: (text, record) => renderMoneyCell(text, record) }, - { title: '住房公积金', dataIndex: 'housingFound', className:'money', render: (text, record) => renderMoneyCell(text, record) }, - { title: '失业保险', dataIndex: 'jobInsurance', className:'money', render: (text, record) => renderMoneyCell(text, record) }, - { title: '工资支付', dataIndex: 'payingOff', render: (text, record) => renderReferenceCell(text, record)}, - { title: '当前状态', debugtype: 'string', dataIndex: 'currentStatus', width: '12',render: (text, record)=>renderTextCell(text,record) }, - -] - const fieldLabels = { id: '序号', employee: '员工', @@ -108,8 +51,68 @@ const fieldLabels = { } +const displayColumns = [ + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.employee, dataIndex: 'employee', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.currentSalaryGrade, dataIndex: 'currentSalaryGrade', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.baseSalary, dataIndex: 'baseSalary', className:'money', render: (text, record) => renderMoneyCell(text, record), sorter: true }, + { title: fieldLabels.bonus, dataIndex: 'bonus', className:'money', render: (text, record) => renderMoneyCell(text, record), sorter: true }, + { title: fieldLabels.reward, dataIndex: 'reward', className:'money', render: (text, record) => renderMoneyCell(text, record), sorter: true }, + { title: fieldLabels.personalTax, dataIndex: 'personalTax', className:'money', render: (text, record) => renderMoneyCell(text, record), sorter: true }, + { title: fieldLabels.socialSecurity, dataIndex: 'socialSecurity', className:'money', render: (text, record) => renderMoneyCell(text, record), sorter: true }, + { title: fieldLabels.housingFound, dataIndex: 'housingFound', className:'money', render: (text, record) => renderMoneyCell(text, record), sorter: true }, + { title: fieldLabels.jobInsurance, dataIndex: 'jobInsurance', className:'money', render: (text, record) => renderMoneyCell(text, record), sorter: true }, + { title: fieldLabels.payingOff, dataIndex: 'payingOff', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.currentStatus, debugtype: 'string', dataIndex: 'currentStatus', width: '12',render: (text, record)=>renderTextCell(text,record)}, + +] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({employeeSalarySheet,targetComponent})=>{ + + + + const {EmployeeSalarySheetService} = GlobalComponents + // const userContext = null + return ( + +{employeeSalarySheet.id} +{employeeSalarySheet.employee==null?appLocaleName(userContext,"NotAssigned"):`${employeeSalarySheet.employee.displayName}(${employeeSalarySheet.employee.id})`} + + showTransferModel(targetComponent,"员工","employee",EmployeeSalarySheetService.requestCandidateEmployee, + EmployeeSalarySheetService.transferToAnotherEmployee,"anotherEmployeeId",employeeSalarySheet.employee?employeeSalarySheet.employee.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{employeeSalarySheet.currentSalaryGrade==null?appLocaleName(userContext,"NotAssigned"):`${employeeSalarySheet.currentSalaryGrade.displayName}(${employeeSalarySheet.currentSalaryGrade.id})`} + + showTransferModel(targetComponent,"目前工资等级","salaryGrade",EmployeeSalarySheetService.requestCandidateCurrentSalaryGrade, + EmployeeSalarySheetService.transferToAnotherCurrentSalaryGrade,"anotherCurrentSalaryGradeId",employeeSalarySheet.currentSalaryGrade?employeeSalarySheet.currentSalaryGrade.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{employeeSalarySheet.baseSalary} +{employeeSalarySheet.bonus} +{employeeSalarySheet.reward} +{employeeSalarySheet.personalTax} +{employeeSalarySheet.socialSecurity} +{employeeSalarySheet.housingFound} +{employeeSalarySheet.jobInsurance} +{employeeSalarySheet.payingOff==null?appLocaleName(userContext,"NotAssigned"):`${employeeSalarySheet.payingOff.displayName}(${employeeSalarySheet.payingOff.id})`} + + showTransferModel(targetComponent,"工资支付","payingOff",EmployeeSalarySheetService.requestCandidatePayingOff, + EmployeeSalarySheetService.transferToAnotherPayingOff,"anotherPayingOffId",employeeSalarySheet.payingOff?employeeSalarySheet.payingOff.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{employeeSalarySheet.currentStatus} + + {buildTransferModal(employeeSalarySheet,targetComponent)} + + ) + +} + + + -const EmployeeSalarySheetBase={menuData,displayColumns,fieldLabels} +const EmployeeSalarySheetBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default EmployeeSalarySheetBase diff --git a/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.createform.js b/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.createform.js index 672544038..470d97ebf 100644 --- a/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.createform.js +++ b/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.createform.js @@ -17,13 +17,13 @@ const { TextArea } = Input const testValues = {}; /* const testValues = { - baseSalary: '2620.79', - bonus: '829.33', - reward: '898.36', - personalTax: '600.38', - socialSecurity: '926.39', - housingFound: '956.31', - jobInsurance: '6.33', + baseSalary: '2914.51', + bonus: '747.91', + reward: '827.74', + personalTax: '665.93', + socialSecurity: '1072.18', + housingFound: '1039.89', + jobInsurance: '7.35', employeeId: 'E000001', currentSalaryGradeId: 'SG000001', } @@ -214,7 +214,7 @@ class EmployeeSalarySheetCreateForm extends Component { {getFieldDecorator('baseSalary', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -224,7 +224,7 @@ class EmployeeSalarySheetCreateForm extends Component { {getFieldDecorator('bonus', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -234,7 +234,7 @@ class EmployeeSalarySheetCreateForm extends Component { {getFieldDecorator('reward', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -244,7 +244,7 @@ class EmployeeSalarySheetCreateForm extends Component { {getFieldDecorator('personalTax', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -254,7 +254,7 @@ class EmployeeSalarySheetCreateForm extends Component { {getFieldDecorator('socialSecurity', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -264,7 +264,7 @@ class EmployeeSalarySheetCreateForm extends Component { {getFieldDecorator('housingFound', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class EmployeeSalarySheetCreateForm extends Component { {getFieldDecorator('jobInsurance', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.dashboard.js b/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.dashboard.js index 29dbe6b06..076cb3a92 100644 --- a/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.dashboard.js +++ b/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -160,6 +160,7 @@ class EmployeeSalarySheetDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -168,13 +169,17 @@ class EmployeeSalarySheetDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.model.js b/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.model.js index 60cc1f14e..5693d38cc 100644 --- a/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.model.js +++ b/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' diff --git a/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.permission.js b/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.permission.js new file mode 100644 index 000000000..7d793f103 --- /dev/null +++ b/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.permission.js @@ -0,0 +1,91 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './EmployeeSalarySheet.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (employeeSalarySheet,targetComponent) =>{ + const userContext = null + return ( + +{employeeSalarySheet.id} +{employeeSalarySheet.baseSalary} +{employeeSalarySheet.bonus} +{employeeSalarySheet.reward} +{employeeSalarySheet.personalTax} +{employeeSalarySheet.socialSecurity} +{employeeSalarySheet.housingFound} +{employeeSalarySheet.jobInsurance} +{employeeSalarySheet.currentStatus} + + + ) +} + + +const renderPermissionSetting = employeeSalarySheet => { + const {EmployeeSalarySheetBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class EmployeeSalarySheetPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const employeeSalarySheet = this.props.employeeSalarySheet; + const { id,displayName, } = employeeSalarySheet + const cardsData = {cardsName:"工资单",cardsFor: "employeeSalarySheet",cardsSource: employeeSalarySheet, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + employeeSalarySheet: state._employeeSalarySheet, +}))(Form.create()(EmployeeSalarySheetPermission)) + diff --git a/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.permission.less b/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.preference.js b/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.preference.js index 0fa91d8a4..a0df74ffc 100644 --- a/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.preference.js +++ b/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.preference.js @@ -324,8 +324,12 @@ class EmployeeSalarySheetPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, } = this.props.employeeSalarySheet - const cardsData = {cardsName:"工资单",cardsFor: "employeeSalarySheet",cardsSource: this.props.employeeSalarySheet, + const employeeSalarySheet = this.props.employeeSalarySheet; + const { id,displayName, } = employeeSalarySheet + + + + const cardsData = {cardsName:"工资单",cardsFor: "employeeSalarySheet",cardsSource: employeeSalarySheet, subItems: [ ], diff --git a/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.profile.js b/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.profile.js new file mode 100644 index 000000000..a544964f4 --- /dev/null +++ b/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.profile.js @@ -0,0 +1,98 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './EmployeeSalarySheet.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (employeeSalarySheet,targetComponent) =>{ + const userContext = null + return ( + +{employeeSalarySheet.id} +{employeeSalarySheet.baseSalary} +{employeeSalarySheet.bonus} +{employeeSalarySheet.reward} +{employeeSalarySheet.personalTax} +{employeeSalarySheet.socialSecurity} +{employeeSalarySheet.housingFound} +{employeeSalarySheet.jobInsurance} +{employeeSalarySheet.currentStatus} + + + ) +} + + + +class EmployeeSalarySheetProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const employeeSalarySheet = this.props.employeeSalarySheet; + const { id,displayName, } = employeeSalarySheet + + const cardsData = {cardsName:"工资单",cardsFor: "employeeSalarySheet",cardsSource: employeeSalarySheet, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + employeeSalarySheet: state._employeeSalarySheet, +}))(Form.create()(EmployeeSalarySheetProfile)) + diff --git a/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.profile.less b/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.search.js b/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.search.js index 344963935..b25842ff3 100644 --- a/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.search.js +++ b/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.searchform.js b/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.searchform.js index 57aa1b61a..985027a36 100644 --- a/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.searchform.js +++ b/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`employeeSalarySheetList.searchField`] = fieldName - value[`employeeSalarySheetList.searchVerb`] = searchVerb - value[`employeeSalarySheetList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,12 +127,13 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'employee')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'currentSalaryGrade')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'currentStatus')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'employee')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'currentSalaryGrade')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'currentStatus')) console.log("the final parameter", paramList) @@ -148,11 +149,12 @@ componentDidMount() { } - params['employeeSalarySheetList'] = 1 - params['employeeSalarySheetList.orderBy.0'] = "id" - params['employeeSalarySheetList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -214,8 +216,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -300,8 +302,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.table.js b/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.table.js index f0e5f7426..bf6c2103e 100644 --- a/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.table.js +++ b/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.table.js @@ -40,24 +40,53 @@ class EmployeeSalarySheetTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = EmployeeSalarySheetBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class EmployeeSalarySheetTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class EmployeeSalarySheetTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.updateform.js b/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.updateform.js index 5ad1dfff4..fd9613141 100644 --- a/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.updateform.js +++ b/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.updateform.js @@ -261,7 +261,7 @@ class EmployeeSalarySheetUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class EmployeeSalarySheetUpdateForm extends Component { initialValue: selectedRow.baseSalary, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -285,7 +285,7 @@ class EmployeeSalarySheetUpdateForm extends Component { initialValue: selectedRow.bonus, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -297,7 +297,7 @@ class EmployeeSalarySheetUpdateForm extends Component { initialValue: selectedRow.reward, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -309,7 +309,7 @@ class EmployeeSalarySheetUpdateForm extends Component { initialValue: selectedRow.personalTax, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -321,7 +321,7 @@ class EmployeeSalarySheetUpdateForm extends Component { initialValue: selectedRow.socialSecurity, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -333,7 +333,7 @@ class EmployeeSalarySheetUpdateForm extends Component { initialValue: selectedRow.housingFound, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -345,7 +345,7 @@ class EmployeeSalarySheetUpdateForm extends Component { initialValue: selectedRow.jobInsurance, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/employeeskill/EmployeeSkill.app.js b/bizui/src/bizcomponents/employeeskill/EmployeeSkill.app.js index a108bd69c..408476981 100644 --- a/bizui/src/bizcomponents/employeeskill/EmployeeSkill.app.js +++ b/bizui/src/bizcomponents/employeeskill/EmployeeSkill.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class EmployeeSkillBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -157,12 +166,14 @@ class EmployeeSkillBizApp extends React.PureComponent { buildRouters = () =>{ const {EmployeeSkillDashboard} = GlobalComponents - const {EmployeeSkillPreference} = GlobalComponents + const {EmployeeSkillPermission} = GlobalComponents + const {EmployeeSkillProfile} = GlobalComponents const routers=[ {path:"/employeeSkill/:id/dashboard", component: EmployeeSkillDashboard}, - {path:"/employeeSkill/:id/preference", component: EmployeeSkillPreference}, + {path:"/employeeSkill/:id/profile", component: EmployeeSkillProfile}, + {path:"/employeeSkill/:id/permission", component: EmployeeSkillPermission}, diff --git a/bizui/src/bizcomponents/employeeskill/EmployeeSkill.associateform.js b/bizui/src/bizcomponents/employeeskill/EmployeeSkill.associateform.js index a5653c9a2..8f3fe5861 100644 --- a/bizui/src/bizcomponents/employeeskill/EmployeeSkill.associateform.js +++ b/bizui/src/bizcomponents/employeeskill/EmployeeSkill.associateform.js @@ -139,7 +139,7 @@ class EmployeeSkillAssociateForm extends Component { {getFieldDecorator('description', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/employeeskill/EmployeeSkill.associateform.less b/bizui/src/bizcomponents/employeeskill/EmployeeSkill.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/employeeskill/EmployeeSkill.associateform.less +++ b/bizui/src/bizcomponents/employeeskill/EmployeeSkill.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/employeeskill/EmployeeSkill.base.js b/bizui/src/bizcomponents/employeeskill/EmployeeSkill.base.js index f01bc2570..edba70de0 100644 --- a/bizui/src/bizcomponents/employeeskill/EmployeeSkill.base.js +++ b/bizui/src/bizcomponents/employeeskill/EmployeeSkill.base.js @@ -1,10 +1,33 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"员工技能", menuFor: "employeeSkill", subItems: [ @@ -12,88 +35,55 @@ const menuData = {menuName:"员工技能", menuFor: "employeeSkill", ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + employee: '员工', + skillType: '技能类型', + description: '描述', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record) }, - { title: '员工', dataIndex: 'employee', render: (text, record) => renderReferenceCell(text, record)}, - { title: '技能类型', dataIndex: 'skillType', render: (text, record) => renderReferenceCell(text, record)}, - { title: '描述', debugtype: 'string', dataIndex: 'description', width: '11',render: (text, record)=>renderTextCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.employee, dataIndex: 'employee', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.skillType, dataIndex: 'skillType', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.description, debugtype: 'string', dataIndex: 'description', width: '11',render: (text, record)=>renderTextCell(text,record)}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({employeeSkill,targetComponent})=>{ -const fieldLabels = { - id: '序号', - employee: '员工', - skillType: '技能类型', - description: '描述', + + + const {EmployeeSkillService} = GlobalComponents + // const userContext = null + return ( + +{employeeSkill.id} +{employeeSkill.employee==null?appLocaleName(userContext,"NotAssigned"):`${employeeSkill.employee.displayName}(${employeeSkill.employee.id})`} + + showTransferModel(targetComponent,"员工","employee",EmployeeSkillService.requestCandidateEmployee, + EmployeeSkillService.transferToAnotherEmployee,"anotherEmployeeId",employeeSkill.employee?employeeSkill.employee.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{employeeSkill.skillType==null?appLocaleName(userContext,"NotAssigned"):`${employeeSkill.skillType.displayName}(${employeeSkill.skillType.id})`} + + showTransferModel(targetComponent,"技能类型","skillType",EmployeeSkillService.requestCandidateSkillType, + EmployeeSkillService.transferToAnotherSkillType,"anotherSkillTypeId",employeeSkill.skillType?employeeSkill.skillType.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{employeeSkill.description} + + {buildTransferModal(employeeSkill,targetComponent)} + + ) } + + -const EmployeeSkillBase={menuData,displayColumns,fieldLabels} +const EmployeeSkillBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default EmployeeSkillBase diff --git a/bizui/src/bizcomponents/employeeskill/EmployeeSkill.createform.js b/bizui/src/bizcomponents/employeeskill/EmployeeSkill.createform.js index 9157e98fc..98b371794 100644 --- a/bizui/src/bizcomponents/employeeskill/EmployeeSkill.createform.js +++ b/bizui/src/bizcomponents/employeeskill/EmployeeSkill.createform.js @@ -208,7 +208,7 @@ class EmployeeSkillCreateForm extends Component { {getFieldDecorator('description', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/employeeskill/EmployeeSkill.dashboard.js b/bizui/src/bizcomponents/employeeskill/EmployeeSkill.dashboard.js index 85c921484..0d0e572e1 100644 --- a/bizui/src/bizcomponents/employeeskill/EmployeeSkill.dashboard.js +++ b/bizui/src/bizcomponents/employeeskill/EmployeeSkill.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -147,6 +147,7 @@ class EmployeeSkillDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -155,13 +156,17 @@ class EmployeeSkillDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/employeeskill/EmployeeSkill.model.js b/bizui/src/bizcomponents/employeeskill/EmployeeSkill.model.js index 3030d4e4e..a313d6c92 100644 --- a/bizui/src/bizcomponents/employeeskill/EmployeeSkill.model.js +++ b/bizui/src/bizcomponents/employeeskill/EmployeeSkill.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' diff --git a/bizui/src/bizcomponents/employeeskill/EmployeeSkill.permission.js b/bizui/src/bizcomponents/employeeskill/EmployeeSkill.permission.js new file mode 100644 index 000000000..7d657278f --- /dev/null +++ b/bizui/src/bizcomponents/employeeskill/EmployeeSkill.permission.js @@ -0,0 +1,84 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './EmployeeSkill.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (employeeSkill,targetComponent) =>{ + const userContext = null + return ( + +{employeeSkill.id} +{employeeSkill.description} + + + ) +} + + +const renderPermissionSetting = employeeSkill => { + const {EmployeeSkillBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class EmployeeSkillPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const employeeSkill = this.props.employeeSkill; + const { id,displayName, } = employeeSkill + const cardsData = {cardsName:"员工技能",cardsFor: "employeeSkill",cardsSource: employeeSkill, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + employeeSkill: state._employeeSkill, +}))(Form.create()(EmployeeSkillPermission)) + diff --git a/bizui/src/bizcomponents/employeeskill/EmployeeSkill.permission.less b/bizui/src/bizcomponents/employeeskill/EmployeeSkill.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/employeeskill/EmployeeSkill.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/employeeskill/EmployeeSkill.preference.js b/bizui/src/bizcomponents/employeeskill/EmployeeSkill.preference.js index fa5fe25df..4c06e8629 100644 --- a/bizui/src/bizcomponents/employeeskill/EmployeeSkill.preference.js +++ b/bizui/src/bizcomponents/employeeskill/EmployeeSkill.preference.js @@ -311,8 +311,12 @@ class EmployeeSkillPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, } = this.props.employeeSkill - const cardsData = {cardsName:"员工技能",cardsFor: "employeeSkill",cardsSource: this.props.employeeSkill, + const employeeSkill = this.props.employeeSkill; + const { id,displayName, } = employeeSkill + + + + const cardsData = {cardsName:"员工技能",cardsFor: "employeeSkill",cardsSource: employeeSkill, subItems: [ ], diff --git a/bizui/src/bizcomponents/employeeskill/EmployeeSkill.profile.js b/bizui/src/bizcomponents/employeeskill/EmployeeSkill.profile.js new file mode 100644 index 000000000..0eb9538bd --- /dev/null +++ b/bizui/src/bizcomponents/employeeskill/EmployeeSkill.profile.js @@ -0,0 +1,91 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './EmployeeSkill.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (employeeSkill,targetComponent) =>{ + const userContext = null + return ( + +{employeeSkill.id} +{employeeSkill.description} + + + ) +} + + + +class EmployeeSkillProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const employeeSkill = this.props.employeeSkill; + const { id,displayName, } = employeeSkill + + const cardsData = {cardsName:"员工技能",cardsFor: "employeeSkill",cardsSource: employeeSkill, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + employeeSkill: state._employeeSkill, +}))(Form.create()(EmployeeSkillProfile)) + diff --git a/bizui/src/bizcomponents/employeeskill/EmployeeSkill.profile.less b/bizui/src/bizcomponents/employeeskill/EmployeeSkill.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/employeeskill/EmployeeSkill.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/employeeskill/EmployeeSkill.search.js b/bizui/src/bizcomponents/employeeskill/EmployeeSkill.search.js index 1ccd4be31..e87c25e90 100644 --- a/bizui/src/bizcomponents/employeeskill/EmployeeSkill.search.js +++ b/bizui/src/bizcomponents/employeeskill/EmployeeSkill.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/employeeskill/EmployeeSkill.searchform.js b/bizui/src/bizcomponents/employeeskill/EmployeeSkill.searchform.js index 165002c26..85a7035fe 100644 --- a/bizui/src/bizcomponents/employeeskill/EmployeeSkill.searchform.js +++ b/bizui/src/bizcomponents/employeeskill/EmployeeSkill.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`employeeSkillList.searchField`] = fieldName - value[`employeeSkillList.searchVerb`] = searchVerb - value[`employeeSkillList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,12 +127,13 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'employee')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'skillType')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'description')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'employee')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'skillType')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'description')) console.log("the final parameter", paramList) @@ -148,11 +149,12 @@ componentDidMount() { } - params['employeeSkillList'] = 1 - params['employeeSkillList.orderBy.0'] = "id" - params['employeeSkillList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -214,8 +216,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -300,8 +302,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/employeeskill/EmployeeSkill.table.js b/bizui/src/bizcomponents/employeeskill/EmployeeSkill.table.js index ca86f1db1..17cc21277 100644 --- a/bizui/src/bizcomponents/employeeskill/EmployeeSkill.table.js +++ b/bizui/src/bizcomponents/employeeskill/EmployeeSkill.table.js @@ -40,24 +40,53 @@ class EmployeeSkillTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = EmployeeSkillBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class EmployeeSkillTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class EmployeeSkillTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/employeeskill/EmployeeSkill.updateform.js b/bizui/src/bizcomponents/employeeskill/EmployeeSkill.updateform.js index b4eb7b2dd..e49fb204d 100644 --- a/bizui/src/bizcomponents/employeeskill/EmployeeSkill.updateform.js +++ b/bizui/src/bizcomponents/employeeskill/EmployeeSkill.updateform.js @@ -261,7 +261,7 @@ class EmployeeSkillUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class EmployeeSkillUpdateForm extends Component { initialValue: selectedRow.description, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.app.js b/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.app.js index 2df686a6a..9a0d88654 100644 --- a/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.app.js +++ b/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class EmployeeWorkExperienceBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -157,12 +166,14 @@ class EmployeeWorkExperienceBizApp extends React.PureComponent { buildRouters = () =>{ const {EmployeeWorkExperienceDashboard} = GlobalComponents - const {EmployeeWorkExperiencePreference} = GlobalComponents + const {EmployeeWorkExperiencePermission} = GlobalComponents + const {EmployeeWorkExperienceProfile} = GlobalComponents const routers=[ {path:"/employeeWorkExperience/:id/dashboard", component: EmployeeWorkExperienceDashboard}, - {path:"/employeeWorkExperience/:id/preference", component: EmployeeWorkExperiencePreference}, + {path:"/employeeWorkExperience/:id/profile", component: EmployeeWorkExperienceProfile}, + {path:"/employeeWorkExperience/:id/permission", component: EmployeeWorkExperiencePermission}, diff --git a/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.associateform.js b/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.associateform.js index 080943ab7..69747bdf7 100644 --- a/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.associateform.js +++ b/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.associateform.js @@ -18,8 +18,8 @@ const { TextArea } = Input const testValues = {}; /* const testValues = { - start: '2018-08-16', - end: '2018-06-28', + start: '2017-08-20', + end: '2017-04-02', company: '丝芙兰化妆品公司', description: '在此期间取得非常好的绩效,赢得了客户的信赖', employeeId: 'E000001', @@ -141,7 +141,7 @@ class EmployeeWorkExperienceAssociateForm extends Component { {getFieldDecorator('start', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -151,7 +151,7 @@ class EmployeeWorkExperienceAssociateForm extends Component { {getFieldDecorator('end', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -161,7 +161,7 @@ class EmployeeWorkExperienceAssociateForm extends Component { {getFieldDecorator('company', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -171,7 +171,7 @@ class EmployeeWorkExperienceAssociateForm extends Component { {getFieldDecorator('description', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.associateform.less b/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.associateform.less +++ b/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.base.js b/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.base.js index 9c08173a9..bb224bd18 100644 --- a/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.base.js +++ b/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.base.js @@ -1,10 +1,33 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"员工工作经验", menuFor: "employeeWorkExperience", subItems: [ @@ -12,80 +35,6 @@ const menuData = {menuName:"员工工作经验", menuFor: "employeeWorkExperienc ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) - -} - -const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record) }, - { title: '员工', dataIndex: 'employee', render: (text, record) => renderReferenceCell(text, record)}, - { title: '开始', dataIndex: 'start', render: (text, record) =>renderDateCell(text,record) }, - { title: '结束', dataIndex: 'end', render: (text, record) =>renderDateCell(text,record) }, - { title: '公司', debugtype: 'string', dataIndex: 'company', width: '12',render: (text, record)=>renderTextCell(text,record) }, - { title: '描述', debugtype: 'string', dataIndex: 'description', width: '25',render: (text, record)=>renderTextCell(text,record) }, - -] - const fieldLabels = { id: '序号', employee: '员工', @@ -96,8 +45,46 @@ const fieldLabels = { } +const displayColumns = [ + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.employee, dataIndex: 'employee', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.start, dataIndex: 'start', render: (text, record) =>renderDateCell(text,record), sorter: true }, + { title: fieldLabels.end, dataIndex: 'end', render: (text, record) =>renderDateCell(text,record), sorter: true }, + { title: fieldLabels.company, debugtype: 'string', dataIndex: 'company', width: '12',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.description, debugtype: 'string', dataIndex: 'description', width: '25',render: (text, record)=>renderTextCell(text,record)}, + +] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({employeeWorkExperience,targetComponent})=>{ + + + + const {EmployeeWorkExperienceService} = GlobalComponents + // const userContext = null + return ( + +{employeeWorkExperience.id} +{employeeWorkExperience.employee==null?appLocaleName(userContext,"NotAssigned"):`${employeeWorkExperience.employee.displayName}(${employeeWorkExperience.employee.id})`} + + showTransferModel(targetComponent,"员工","employee",EmployeeWorkExperienceService.requestCandidateEmployee, + EmployeeWorkExperienceService.transferToAnotherEmployee,"anotherEmployeeId",employeeWorkExperience.employee?employeeWorkExperience.employee.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{ moment(employeeWorkExperience.start).format('YYYY-MM-DD')} +{ moment(employeeWorkExperience.end).format('YYYY-MM-DD')} +{employeeWorkExperience.company} +{employeeWorkExperience.description} + + {buildTransferModal(employeeWorkExperience,targetComponent)} + + ) + +} + + + -const EmployeeWorkExperienceBase={menuData,displayColumns,fieldLabels} +const EmployeeWorkExperienceBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default EmployeeWorkExperienceBase diff --git a/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.createform.js b/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.createform.js index 5a0250a58..76f9323fd 100644 --- a/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.createform.js +++ b/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.createform.js @@ -17,8 +17,8 @@ const { TextArea } = Input const testValues = {}; /* const testValues = { - start: '2019-03-20', - end: '2017-08-13', + start: '2017-08-30', + end: '2017-12-31', company: '丝芙兰化妆品公司', description: '在此期间取得非常好的绩效,赢得了客户的信赖', employeeId: 'E000001', @@ -210,7 +210,7 @@ class EmployeeWorkExperienceCreateForm extends Component { {getFieldDecorator('start', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -220,7 +220,7 @@ class EmployeeWorkExperienceCreateForm extends Component { {getFieldDecorator('end', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -230,7 +230,7 @@ class EmployeeWorkExperienceCreateForm extends Component { {getFieldDecorator('company', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -240,7 +240,7 @@ class EmployeeWorkExperienceCreateForm extends Component { {getFieldDecorator('description', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.dashboard.js b/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.dashboard.js index c55345350..e18f44d6f 100644 --- a/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.dashboard.js +++ b/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -144,6 +144,7 @@ class EmployeeWorkExperienceDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -152,13 +153,17 @@ class EmployeeWorkExperienceDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.model.js b/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.model.js index 5270099e4..3c2c075e7 100644 --- a/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.model.js +++ b/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' diff --git a/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.permission.js b/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.permission.js new file mode 100644 index 000000000..62190ade4 --- /dev/null +++ b/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.permission.js @@ -0,0 +1,87 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './EmployeeWorkExperience.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (employeeWorkExperience,targetComponent) =>{ + const userContext = null + return ( + +{employeeWorkExperience.id} +{ moment(employeeWorkExperience.start).format('YYYY-MM-DD')} +{ moment(employeeWorkExperience.end).format('YYYY-MM-DD')} +{employeeWorkExperience.company} +{employeeWorkExperience.description} + + + ) +} + + +const renderPermissionSetting = employeeWorkExperience => { + const {EmployeeWorkExperienceBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class EmployeeWorkExperiencePermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const employeeWorkExperience = this.props.employeeWorkExperience; + const { id,displayName, } = employeeWorkExperience + const cardsData = {cardsName:"员工工作经验",cardsFor: "employeeWorkExperience",cardsSource: employeeWorkExperience, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + employeeWorkExperience: state._employeeWorkExperience, +}))(Form.create()(EmployeeWorkExperiencePermission)) + diff --git a/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.permission.less b/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.preference.js b/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.preference.js index 69475762b..c13d02b38 100644 --- a/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.preference.js +++ b/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.preference.js @@ -308,8 +308,12 @@ class EmployeeWorkExperiencePreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, } = this.props.employeeWorkExperience - const cardsData = {cardsName:"员工工作经验",cardsFor: "employeeWorkExperience",cardsSource: this.props.employeeWorkExperience, + const employeeWorkExperience = this.props.employeeWorkExperience; + const { id,displayName, } = employeeWorkExperience + + + + const cardsData = {cardsName:"员工工作经验",cardsFor: "employeeWorkExperience",cardsSource: employeeWorkExperience, subItems: [ ], diff --git a/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.profile.js b/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.profile.js new file mode 100644 index 000000000..9a722dd6c --- /dev/null +++ b/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.profile.js @@ -0,0 +1,94 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './EmployeeWorkExperience.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (employeeWorkExperience,targetComponent) =>{ + const userContext = null + return ( + +{employeeWorkExperience.id} +{ moment(employeeWorkExperience.start).format('YYYY-MM-DD')} +{ moment(employeeWorkExperience.end).format('YYYY-MM-DD')} +{employeeWorkExperience.company} +{employeeWorkExperience.description} + + + ) +} + + + +class EmployeeWorkExperienceProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const employeeWorkExperience = this.props.employeeWorkExperience; + const { id,displayName, } = employeeWorkExperience + + const cardsData = {cardsName:"员工工作经验",cardsFor: "employeeWorkExperience",cardsSource: employeeWorkExperience, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + employeeWorkExperience: state._employeeWorkExperience, +}))(Form.create()(EmployeeWorkExperienceProfile)) + diff --git a/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.profile.less b/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.search.js b/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.search.js index 37c9be78a..8a8c9af73 100644 --- a/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.search.js +++ b/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.searchform.js b/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.searchform.js index a0ca14a59..02f5d4703 100644 --- a/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.searchform.js +++ b/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`employeeWorkExperienceList.searchField`] = fieldName - value[`employeeWorkExperienceList.searchVerb`] = searchVerb - value[`employeeWorkExperienceList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,12 +127,13 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'employee')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'company')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'description')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'employee')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'company')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'description')) console.log("the final parameter", paramList) @@ -148,11 +149,12 @@ componentDidMount() { } - params['employeeWorkExperienceList'] = 1 - params['employeeWorkExperienceList.orderBy.0'] = "id" - params['employeeWorkExperienceList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -214,8 +216,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -293,8 +295,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.table.js b/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.table.js index 7b017738b..668883386 100644 --- a/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.table.js +++ b/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.table.js @@ -40,24 +40,53 @@ class EmployeeWorkExperienceTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = EmployeeWorkExperienceBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class EmployeeWorkExperienceTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class EmployeeWorkExperienceTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.updateform.js b/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.updateform.js index 3fc5df794..9d60d7d28 100644 --- a/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.updateform.js +++ b/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.updateform.js @@ -263,7 +263,7 @@ class EmployeeWorkExperienceUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -275,7 +275,7 @@ class EmployeeWorkExperienceUpdateForm extends Component { initialValue: selectedRow.start, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -287,7 +287,7 @@ class EmployeeWorkExperienceUpdateForm extends Component { initialValue: selectedRow.end, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -299,7 +299,7 @@ class EmployeeWorkExperienceUpdateForm extends Component { initialValue: selectedRow.company, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -311,7 +311,7 @@ class EmployeeWorkExperienceUpdateForm extends Component { initialValue: selectedRow.description, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/eventattendance/EventAttendance.app.js b/bizui/src/bizcomponents/eventattendance/EventAttendance.app.js index 6f6fe89f1..45f8c6d13 100644 --- a/bizui/src/bizcomponents/eventattendance/EventAttendance.app.js +++ b/bizui/src/bizcomponents/eventattendance/EventAttendance.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class EventAttendanceBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -157,12 +166,14 @@ class EventAttendanceBizApp extends React.PureComponent { buildRouters = () =>{ const {EventAttendanceDashboard} = GlobalComponents - const {EventAttendancePreference} = GlobalComponents + const {EventAttendancePermission} = GlobalComponents + const {EventAttendanceProfile} = GlobalComponents const routers=[ {path:"/eventAttendance/:id/dashboard", component: EventAttendanceDashboard}, - {path:"/eventAttendance/:id/preference", component: EventAttendancePreference}, + {path:"/eventAttendance/:id/profile", component: EventAttendanceProfile}, + {path:"/eventAttendance/:id/permission", component: EventAttendancePermission}, diff --git a/bizui/src/bizcomponents/eventattendance/EventAttendance.associateform.js b/bizui/src/bizcomponents/eventattendance/EventAttendance.associateform.js index cfe3e6c4b..d18fb8b00 100644 --- a/bizui/src/bizcomponents/eventattendance/EventAttendance.associateform.js +++ b/bizui/src/bizcomponents/eventattendance/EventAttendance.associateform.js @@ -140,7 +140,7 @@ class EventAttendanceAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -150,7 +150,7 @@ class EventAttendanceAssociateForm extends Component { {getFieldDecorator('description', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/eventattendance/EventAttendance.associateform.less b/bizui/src/bizcomponents/eventattendance/EventAttendance.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/eventattendance/EventAttendance.associateform.less +++ b/bizui/src/bizcomponents/eventattendance/EventAttendance.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/eventattendance/EventAttendance.base.js b/bizui/src/bizcomponents/eventattendance/EventAttendance.base.js index 153787cae..d968ee344 100644 --- a/bizui/src/bizcomponents/eventattendance/EventAttendance.base.js +++ b/bizui/src/bizcomponents/eventattendance/EventAttendance.base.js @@ -1,10 +1,33 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"活动的参与情况", menuFor: "eventAttendance", subItems: [ @@ -12,90 +35,58 @@ const menuData = {menuName:"活动的参与情况", menuFor: "eventAttendance", ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + name: '名称', + potentialCustomer: '潜在的客户', + cityEvent: '城市活动', + description: '描述', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record) }, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '13',render: (text, record)=>renderTextCell(text,record) }, - { title: '潜在的客户', dataIndex: 'potentialCustomer', render: (text, record) => renderReferenceCell(text, record)}, - { title: '城市活动', dataIndex: 'cityEvent', render: (text, record) => renderReferenceCell(text, record)}, - { title: '描述', debugtype: 'string', dataIndex: 'description', width: '13',render: (text, record)=>renderTextCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '13',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.potentialCustomer, dataIndex: 'potentialCustomer', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.cityEvent, dataIndex: 'cityEvent', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.description, debugtype: 'string', dataIndex: 'description', width: '13',render: (text, record)=>renderTextCell(text,record)}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({eventAttendance,targetComponent})=>{ -const fieldLabels = { - id: '序号', - name: '名称', - potentialCustomer: '潜在的客户', - cityEvent: '城市活动', - description: '描述', + + + const {EventAttendanceService} = GlobalComponents + // const userContext = null + return ( + +{eventAttendance.id} +{eventAttendance.name} +{eventAttendance.potentialCustomer==null?appLocaleName(userContext,"NotAssigned"):`${eventAttendance.potentialCustomer.displayName}(${eventAttendance.potentialCustomer.id})`} + + showTransferModel(targetComponent,"潜在的客户","potentialCustomer",EventAttendanceService.requestCandidatePotentialCustomer, + EventAttendanceService.transferToAnotherPotentialCustomer,"anotherPotentialCustomerId",eventAttendance.potentialCustomer?eventAttendance.potentialCustomer.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{eventAttendance.cityEvent==null?appLocaleName(userContext,"NotAssigned"):`${eventAttendance.cityEvent.displayName}(${eventAttendance.cityEvent.id})`} + + showTransferModel(targetComponent,"城市活动","cityEvent",EventAttendanceService.requestCandidateCityEvent, + EventAttendanceService.transferToAnotherCityEvent,"anotherCityEventId",eventAttendance.cityEvent?eventAttendance.cityEvent.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{eventAttendance.description} + + {buildTransferModal(eventAttendance,targetComponent)} + + ) } + + -const EventAttendanceBase={menuData,displayColumns,fieldLabels} +const EventAttendanceBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default EventAttendanceBase diff --git a/bizui/src/bizcomponents/eventattendance/EventAttendance.createform.js b/bizui/src/bizcomponents/eventattendance/EventAttendance.createform.js index 982664ee9..2f9a1a6be 100644 --- a/bizui/src/bizcomponents/eventattendance/EventAttendance.createform.js +++ b/bizui/src/bizcomponents/eventattendance/EventAttendance.createform.js @@ -209,7 +209,7 @@ class EventAttendanceCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -219,7 +219,7 @@ class EventAttendanceCreateForm extends Component { {getFieldDecorator('description', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/eventattendance/EventAttendance.dashboard.js b/bizui/src/bizcomponents/eventattendance/EventAttendance.dashboard.js index 538948ca0..02405b423 100644 --- a/bizui/src/bizcomponents/eventattendance/EventAttendance.dashboard.js +++ b/bizui/src/bizcomponents/eventattendance/EventAttendance.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -148,6 +148,7 @@ class EventAttendanceDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -156,13 +157,17 @@ class EventAttendanceDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/eventattendance/EventAttendance.model.js b/bizui/src/bizcomponents/eventattendance/EventAttendance.model.js index 47fdc08aa..44757e155 100644 --- a/bizui/src/bizcomponents/eventattendance/EventAttendance.model.js +++ b/bizui/src/bizcomponents/eventattendance/EventAttendance.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' diff --git a/bizui/src/bizcomponents/eventattendance/EventAttendance.permission.js b/bizui/src/bizcomponents/eventattendance/EventAttendance.permission.js new file mode 100644 index 000000000..123f171a5 --- /dev/null +++ b/bizui/src/bizcomponents/eventattendance/EventAttendance.permission.js @@ -0,0 +1,85 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './EventAttendance.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (eventAttendance,targetComponent) =>{ + const userContext = null + return ( + +{eventAttendance.id} +{eventAttendance.name} +{eventAttendance.description} + + + ) +} + + +const renderPermissionSetting = eventAttendance => { + const {EventAttendanceBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class EventAttendancePermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const eventAttendance = this.props.eventAttendance; + const { id,displayName, } = eventAttendance + const cardsData = {cardsName:"活动的参与情况",cardsFor: "eventAttendance",cardsSource: eventAttendance, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + eventAttendance: state._eventAttendance, +}))(Form.create()(EventAttendancePermission)) + diff --git a/bizui/src/bizcomponents/eventattendance/EventAttendance.permission.less b/bizui/src/bizcomponents/eventattendance/EventAttendance.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/eventattendance/EventAttendance.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/eventattendance/EventAttendance.preference.js b/bizui/src/bizcomponents/eventattendance/EventAttendance.preference.js index 04748560b..7a9da1b3f 100644 --- a/bizui/src/bizcomponents/eventattendance/EventAttendance.preference.js +++ b/bizui/src/bizcomponents/eventattendance/EventAttendance.preference.js @@ -312,8 +312,12 @@ class EventAttendancePreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, } = this.props.eventAttendance - const cardsData = {cardsName:"活动的参与情况",cardsFor: "eventAttendance",cardsSource: this.props.eventAttendance, + const eventAttendance = this.props.eventAttendance; + const { id,displayName, } = eventAttendance + + + + const cardsData = {cardsName:"活动的参与情况",cardsFor: "eventAttendance",cardsSource: eventAttendance, subItems: [ ], diff --git a/bizui/src/bizcomponents/eventattendance/EventAttendance.profile.js b/bizui/src/bizcomponents/eventattendance/EventAttendance.profile.js new file mode 100644 index 000000000..01c34fdbd --- /dev/null +++ b/bizui/src/bizcomponents/eventattendance/EventAttendance.profile.js @@ -0,0 +1,92 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './EventAttendance.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (eventAttendance,targetComponent) =>{ + const userContext = null + return ( + +{eventAttendance.id} +{eventAttendance.name} +{eventAttendance.description} + + + ) +} + + + +class EventAttendanceProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const eventAttendance = this.props.eventAttendance; + const { id,displayName, } = eventAttendance + + const cardsData = {cardsName:"活动的参与情况",cardsFor: "eventAttendance",cardsSource: eventAttendance, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + eventAttendance: state._eventAttendance, +}))(Form.create()(EventAttendanceProfile)) + diff --git a/bizui/src/bizcomponents/eventattendance/EventAttendance.profile.less b/bizui/src/bizcomponents/eventattendance/EventAttendance.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/eventattendance/EventAttendance.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/eventattendance/EventAttendance.search.js b/bizui/src/bizcomponents/eventattendance/EventAttendance.search.js index 237e0c645..1907c8ab4 100644 --- a/bizui/src/bizcomponents/eventattendance/EventAttendance.search.js +++ b/bizui/src/bizcomponents/eventattendance/EventAttendance.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/eventattendance/EventAttendance.searchform.js b/bizui/src/bizcomponents/eventattendance/EventAttendance.searchform.js index 8cf44eec4..08b2ea52b 100644 --- a/bizui/src/bizcomponents/eventattendance/EventAttendance.searchform.js +++ b/bizui/src/bizcomponents/eventattendance/EventAttendance.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`eventAttendanceList.searchField`] = fieldName - value[`eventAttendanceList.searchVerb`] = searchVerb - value[`eventAttendanceList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,13 +127,14 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'potentialCustomer')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'cityEvent')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'description')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'potentialCustomer')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'cityEvent')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'description')) console.log("the final parameter", paramList) @@ -149,11 +150,12 @@ componentDidMount() { } - params['eventAttendanceList'] = 1 - params['eventAttendanceList.orderBy.0'] = "id" - params['eventAttendanceList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -208,8 +210,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -302,8 +304,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/eventattendance/EventAttendance.table.js b/bizui/src/bizcomponents/eventattendance/EventAttendance.table.js index 27d652202..fd9f7e7fd 100644 --- a/bizui/src/bizcomponents/eventattendance/EventAttendance.table.js +++ b/bizui/src/bizcomponents/eventattendance/EventAttendance.table.js @@ -40,24 +40,53 @@ class EventAttendanceTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = EventAttendanceBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class EventAttendanceTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class EventAttendanceTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/eventattendance/EventAttendance.updateform.js b/bizui/src/bizcomponents/eventattendance/EventAttendance.updateform.js index ece10bbce..51d64add4 100644 --- a/bizui/src/bizcomponents/eventattendance/EventAttendance.updateform.js +++ b/bizui/src/bizcomponents/eventattendance/EventAttendance.updateform.js @@ -261,7 +261,7 @@ class EventAttendanceUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class EventAttendanceUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -285,7 +285,7 @@ class EventAttendanceUpdateForm extends Component { initialValue: selectedRow.description, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/goods/Goods.app.js b/bizui/src/bizcomponents/goods/Goods.app.js index 7ac318a45..e9a1037a2 100644 --- a/bizui/src/bizcomponents/goods/Goods.app.js +++ b/bizui/src/bizcomponents/goods/Goods.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class GoodsBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class GoodsBizApp extends React.PureComponent { buildRouters = () =>{ const {GoodsDashboard} = GlobalComponents - const {GoodsPreference} = GlobalComponents + const {GoodsPermission} = GlobalComponents + const {GoodsProfile} = GlobalComponents const routers=[ {path:"/goods/:id/dashboard", component: GoodsDashboard}, - {path:"/goods/:id/preference", component: GoodsPreference}, + {path:"/goods/:id/profile", component: GoodsProfile}, + {path:"/goods/:id/permission", component: GoodsPermission}, diff --git a/bizui/src/bizcomponents/goods/Goods.associateform.js b/bizui/src/bizcomponents/goods/Goods.associateform.js index e065c5cf8..9df8ad9c5 100644 --- a/bizui/src/bizcomponents/goods/Goods.associateform.js +++ b/bizui/src/bizcomponents/goods/Goods.associateform.js @@ -21,8 +21,8 @@ const testValues = { name: '可口可乐', rfid: 'RF99192', uom: '件', - maxPackage: '9', - expireTime: '2017-12-12', + maxPackage: '10', + expireTime: '2017-10-23', skuId: 'S000001', receivingSpaceId: 'RS000001', goodsAllocationId: 'GA000001', @@ -151,7 +151,7 @@ class GoodsAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -161,7 +161,7 @@ class GoodsAssociateForm extends Component { {getFieldDecorator('rfid', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -171,7 +171,7 @@ class GoodsAssociateForm extends Component { {getFieldDecorator('uom', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -181,7 +181,7 @@ class GoodsAssociateForm extends Component { {getFieldDecorator('maxPackage', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -191,7 +191,7 @@ class GoodsAssociateForm extends Component { {getFieldDecorator('expireTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/goods/Goods.associateform.less b/bizui/src/bizcomponents/goods/Goods.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/goods/Goods.associateform.less +++ b/bizui/src/bizcomponents/goods/Goods.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/goods/Goods.base.js b/bizui/src/bizcomponents/goods/Goods.base.js index e0a8b84e0..9f02b9197 100644 --- a/bizui/src/bizcomponents/goods/Goods.base.js +++ b/bizui/src/bizcomponents/goods/Goods.base.js @@ -1,103 +1,41 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"货物", menuFor: "goods", subItems: [ - {name: 'goodsMovementList', displayName:'货物移动', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'goodsMovementList', displayName:'货物移动', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) - -} - -const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'goods') }, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: 'RFID', debugtype: 'string', dataIndex: 'rfid', width: '11',render: (text, record)=>renderTextCell(text,record) }, - { title: '计量单位', debugtype: 'string', dataIndex: 'uom', width: '5',render: (text, record)=>renderTextCell(text,record) }, - { title: '最大包装', debugtype: 'int', dataIndex: 'maxPackage', width: '6',render: (text, record)=>renderTextCell(text,record) }, - { title: '到期时间', dataIndex: 'expireTime', render: (text, record) =>renderDateCell(text,record) }, - { title: 'SKU', dataIndex: 'sku', render: (text, record) => renderReferenceCell(text, record)}, - { title: '收货区', dataIndex: 'receivingSpace', render: (text, record) => renderReferenceCell(text, record)}, - { title: '货位', dataIndex: 'goodsAllocation', render: (text, record) => renderReferenceCell(text, record)}, - { title: '智能托盘', dataIndex: 'smartPallet', render: (text, record) => renderReferenceCell(text, record)}, - { title: '发货区', dataIndex: 'shippingSpace', render: (text, record) => renderReferenceCell(text, record)}, - { title: '运输任务', dataIndex: 'transportTask', render: (text, record) => renderReferenceCell(text, record)}, - { title: '双链小超', dataIndex: 'retailStore', render: (text, record) => renderReferenceCell(text, record)}, - { title: '订单', dataIndex: 'bizOrder', render: (text, record) => renderReferenceCell(text, record)}, - { title: '生超的订单', dataIndex: 'retailStoreOrder', render: (text, record) => renderReferenceCell(text, record)}, - { title: '包装', dataIndex: 'packaging', render: (text, record) => renderReferenceCell(text, record)}, - { title: '当前状态', debugtype: 'string', dataIndex: 'currentStatus', width: '10',render: (text, record)=>renderTextCell(text,record) }, - -] - const fieldLabels = { id: '序号', name: '名称', @@ -119,8 +57,107 @@ const fieldLabels = { } +const displayColumns = [ + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'goods') , sorter: true }, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.rfid, debugtype: 'string', dataIndex: 'rfid', width: '11',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.uom, debugtype: 'string', dataIndex: 'uom', width: '5',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.maxPackage, debugtype: 'int', dataIndex: 'maxPackage', width: '6',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.expireTime, dataIndex: 'expireTime', render: (text, record) =>renderDateCell(text,record), sorter: true }, + { title: fieldLabels.sku, dataIndex: 'sku', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.receivingSpace, dataIndex: 'receivingSpace', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.goodsAllocation, dataIndex: 'goodsAllocation', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.smartPallet, dataIndex: 'smartPallet', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.shippingSpace, dataIndex: 'shippingSpace', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.transportTask, dataIndex: 'transportTask', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.retailStore, dataIndex: 'retailStore', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.bizOrder, dataIndex: 'bizOrder', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.retailStoreOrder, dataIndex: 'retailStoreOrder', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.packaging, dataIndex: 'packaging', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.currentStatus, debugtype: 'string', dataIndex: 'currentStatus', width: '10',render: (text, record)=>renderTextCell(text,record)}, + +] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({goods,targetComponent})=>{ + + + + const {GoodsService} = GlobalComponents + // const userContext = null + return ( + +{goods.id} +{goods.name} +{goods.rfid} +{goods.uom} +{goods.maxPackage} +{ moment(goods.expireTime).format('YYYY-MM-DD')} +{goods.sku==null?appLocaleName(userContext,"NotAssigned"):`${goods.sku.displayName}(${goods.sku.id})`} + + showTransferModel(targetComponent,"SKU","sku",GoodsService.requestCandidateSku, + GoodsService.transferToAnotherSku,"anotherSkuId",goods.sku?goods.sku.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{goods.receivingSpace==null?appLocaleName(userContext,"NotAssigned"):`${goods.receivingSpace.displayName}(${goods.receivingSpace.id})`} + + showTransferModel(targetComponent,"收货区","receivingSpace",GoodsService.requestCandidateReceivingSpace, + GoodsService.transferToAnotherReceivingSpace,"anotherReceivingSpaceId",goods.receivingSpace?goods.receivingSpace.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{goods.goodsAllocation==null?appLocaleName(userContext,"NotAssigned"):`${goods.goodsAllocation.displayName}(${goods.goodsAllocation.id})`} + + showTransferModel(targetComponent,"货位","goodsAllocation",GoodsService.requestCandidateGoodsAllocation, + GoodsService.transferToAnotherGoodsAllocation,"anotherGoodsAllocationId",goods.goodsAllocation?goods.goodsAllocation.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{goods.smartPallet==null?appLocaleName(userContext,"NotAssigned"):`${goods.smartPallet.displayName}(${goods.smartPallet.id})`} + + showTransferModel(targetComponent,"智能托盘","smartPallet",GoodsService.requestCandidateSmartPallet, + GoodsService.transferToAnotherSmartPallet,"anotherSmartPalletId",goods.smartPallet?goods.smartPallet.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{goods.shippingSpace==null?appLocaleName(userContext,"NotAssigned"):`${goods.shippingSpace.displayName}(${goods.shippingSpace.id})`} + + showTransferModel(targetComponent,"发货区","shippingSpace",GoodsService.requestCandidateShippingSpace, + GoodsService.transferToAnotherShippingSpace,"anotherShippingSpaceId",goods.shippingSpace?goods.shippingSpace.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{goods.transportTask==null?appLocaleName(userContext,"NotAssigned"):`${goods.transportTask.displayName}(${goods.transportTask.id})`} + + showTransferModel(targetComponent,"运输任务","transportTask",GoodsService.requestCandidateTransportTask, + GoodsService.transferToAnotherTransportTask,"anotherTransportTaskId",goods.transportTask?goods.transportTask.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{goods.retailStore==null?appLocaleName(userContext,"NotAssigned"):`${goods.retailStore.displayName}(${goods.retailStore.id})`} + + showTransferModel(targetComponent,"双链小超","retailStore",GoodsService.requestCandidateRetailStore, + GoodsService.transferToAnotherRetailStore,"anotherRetailStoreId",goods.retailStore?goods.retailStore.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{goods.bizOrder==null?appLocaleName(userContext,"NotAssigned"):`${goods.bizOrder.displayName}(${goods.bizOrder.id})`} + + showTransferModel(targetComponent,"订单","supplyOrder",GoodsService.requestCandidateBizOrder, + GoodsService.transferToAnotherBizOrder,"anotherBizOrderId",goods.bizOrder?goods.bizOrder.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{goods.retailStoreOrder==null?appLocaleName(userContext,"NotAssigned"):`${goods.retailStoreOrder.displayName}(${goods.retailStoreOrder.id})`} + + showTransferModel(targetComponent,"生超的订单","retailStoreOrder",GoodsService.requestCandidateRetailStoreOrder, + GoodsService.transferToAnotherRetailStoreOrder,"anotherRetailStoreOrderId",goods.retailStoreOrder?goods.retailStoreOrder.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{goods.currentStatus} + + {buildTransferModal(goods,targetComponent)} + + ) + +} + + + -const GoodsBase={menuData,displayColumns,fieldLabels} +const GoodsBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default GoodsBase diff --git a/bizui/src/bizcomponents/goods/Goods.createform.js b/bizui/src/bizcomponents/goods/Goods.createform.js index aeb52e05d..5e2c24890 100644 --- a/bizui/src/bizcomponents/goods/Goods.createform.js +++ b/bizui/src/bizcomponents/goods/Goods.createform.js @@ -20,8 +20,8 @@ const testValues = { name: '可口可乐', rfid: 'RF99192', uom: '件', - maxPackage: '9', - expireTime: '2018-10-18', + maxPackage: '10', + expireTime: '2016-11-17', skuId: 'S000001', receivingSpaceId: 'RS000001', goodsAllocationId: 'GA000001', @@ -219,7 +219,7 @@ class GoodsCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -229,7 +229,7 @@ class GoodsCreateForm extends Component { {getFieldDecorator('rfid', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -239,7 +239,7 @@ class GoodsCreateForm extends Component { {getFieldDecorator('uom', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -249,7 +249,7 @@ class GoodsCreateForm extends Component { {getFieldDecorator('maxPackage', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -259,7 +259,7 @@ class GoodsCreateForm extends Component { {getFieldDecorator('expireTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/goods/Goods.dashboard.js b/bizui/src/bizcomponents/goods/Goods.dashboard.js index 26db32a8e..74a5da52c 100644 --- a/bizui/src/bizcomponents/goods/Goods.dashboard.js +++ b/bizui/src/bizcomponents/goods/Goods.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -195,6 +195,7 @@ class GoodsDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -203,13 +204,17 @@ class GoodsDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/goods/Goods.model.js b/bizui/src/bizcomponents/goods/Goods.model.js index 0b375566b..bbace96d3 100644 --- a/bizui/src/bizcomponents/goods/Goods.model.js +++ b/bizui/src/bizcomponents/goods/Goods.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/goods/${id}/list/\GoodsMovementList/货物移动+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/goods/${id}/list/GoodsMovementList/货物移动+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateGoodsMovement({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/goods/${id}/list/\GoodsMovementList/货物移动列表`, state: newPlayload } + const location = { pathname: `/goods/${id}/list/GoodsMovementList/货物移动列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextGoodsMovementUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/goods/Goods.permission.js b/bizui/src/bizcomponents/goods/Goods.permission.js new file mode 100644 index 000000000..4f74c7440 --- /dev/null +++ b/bizui/src/bizcomponents/goods/Goods.permission.js @@ -0,0 +1,89 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './Goods.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (goods,targetComponent) =>{ + const userContext = null + return ( + +{goods.id} +{goods.name} +{goods.rfid} +{goods.uom} +{goods.maxPackage} +{ moment(goods.expireTime).format('YYYY-MM-DD')} +{goods.currentStatus} + + + ) +} + + +const renderPermissionSetting = goods => { + const {GoodsBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class GoodsPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const goods = this.props.goods; + const { id,displayName, goodsMovementCount } = goods + const cardsData = {cardsName:"货物",cardsFor: "goods",cardsSource: goods, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + goods: state._goods, +}))(Form.create()(GoodsPermission)) + diff --git a/bizui/src/bizcomponents/goods/Goods.permission.less b/bizui/src/bizcomponents/goods/Goods.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/goods/Goods.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/goods/Goods.preference.js b/bizui/src/bizcomponents/goods/Goods.preference.js index 5969f0ad5..f03eb95f2 100644 --- a/bizui/src/bizcomponents/goods/Goods.preference.js +++ b/bizui/src/bizcomponents/goods/Goods.preference.js @@ -358,8 +358,12 @@ class GoodsPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, goodsMovementCount } = this.props.goods - const cardsData = {cardsName:"货物",cardsFor: "goods",cardsSource: this.props.goods, + const goods = this.props.goods; + const { id,displayName, goodsMovementCount } = goods + + + + const cardsData = {cardsName:"货物",cardsFor: "goods",cardsSource: goods, subItems: [ ], diff --git a/bizui/src/bizcomponents/goods/Goods.profile.js b/bizui/src/bizcomponents/goods/Goods.profile.js new file mode 100644 index 000000000..a3d21ad2b --- /dev/null +++ b/bizui/src/bizcomponents/goods/Goods.profile.js @@ -0,0 +1,96 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './Goods.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (goods,targetComponent) =>{ + const userContext = null + return ( + +{goods.id} +{goods.name} +{goods.rfid} +{goods.uom} +{goods.maxPackage} +{ moment(goods.expireTime).format('YYYY-MM-DD')} +{goods.currentStatus} + + + ) +} + + + +class GoodsProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const goods = this.props.goods; + const { id,displayName, goodsMovementCount } = goods + + const cardsData = {cardsName:"货物",cardsFor: "goods",cardsSource: goods, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + goods: state._goods, +}))(Form.create()(GoodsProfile)) + diff --git a/bizui/src/bizcomponents/goods/Goods.profile.less b/bizui/src/bizcomponents/goods/Goods.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/goods/Goods.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/goods/Goods.search.js b/bizui/src/bizcomponents/goods/Goods.search.js index 3e2ae60fb..1916a1c51 100644 --- a/bizui/src/bizcomponents/goods/Goods.search.js +++ b/bizui/src/bizcomponents/goods/Goods.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/goods/Goods.searchform.js b/bizui/src/bizcomponents/goods/Goods.searchform.js index 96a622d85..4554a3a88 100644 --- a/bizui/src/bizcomponents/goods/Goods.searchform.js +++ b/bizui/src/bizcomponents/goods/Goods.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`goodsList.searchField`] = fieldName - value[`goodsList.searchVerb`] = searchVerb - value[`goodsList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,22 +127,23 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'rfid')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'uom')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'sku')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'receivingSpace')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'goodsAllocation')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'smartPallet')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'shippingSpace')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'transportTask')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'retailStore')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'bizOrder')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'retailStoreOrder')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'currentStatus')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'rfid')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'uom')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'sku')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'receivingSpace')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'goodsAllocation')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'smartPallet')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'shippingSpace')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'transportTask')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'retailStore')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'bizOrder')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'retailStoreOrder')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'currentStatus')) console.log("the final parameter", paramList) @@ -158,11 +159,12 @@ componentDidMount() { } - params['goodsList'] = 1 - params['goodsList.orderBy.0'] = "id" - params['goodsList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -217,8 +219,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -432,8 +434,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/goods/Goods.table.js b/bizui/src/bizcomponents/goods/Goods.table.js index e800504d8..95583fbfe 100644 --- a/bizui/src/bizcomponents/goods/Goods.table.js +++ b/bizui/src/bizcomponents/goods/Goods.table.js @@ -40,24 +40,53 @@ class GoodsTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = GoodsBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class GoodsTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class GoodsTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/goods/Goods.updateform.js b/bizui/src/bizcomponents/goods/Goods.updateform.js index b8d8fea89..b98e89331 100644 --- a/bizui/src/bizcomponents/goods/Goods.updateform.js +++ b/bizui/src/bizcomponents/goods/Goods.updateform.js @@ -262,7 +262,7 @@ class GoodsUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class GoodsUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class GoodsUpdateForm extends Component { initialValue: selectedRow.rfid, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -298,7 +298,7 @@ class GoodsUpdateForm extends Component { initialValue: selectedRow.uom, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -310,7 +310,7 @@ class GoodsUpdateForm extends Component { initialValue: selectedRow.maxPackage, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -322,7 +322,7 @@ class GoodsUpdateForm extends Component { initialValue: selectedRow.expireTime, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.app.js b/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.app.js index ff3b21961..6386ae780 100644 --- a/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.app.js +++ b/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class GoodsAllocationBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class GoodsAllocationBizApp extends React.PureComponent { buildRouters = () =>{ const {GoodsAllocationDashboard} = GlobalComponents - const {GoodsAllocationPreference} = GlobalComponents + const {GoodsAllocationPermission} = GlobalComponents + const {GoodsAllocationProfile} = GlobalComponents const routers=[ {path:"/goodsAllocation/:id/dashboard", component: GoodsAllocationDashboard}, - {path:"/goodsAllocation/:id/preference", component: GoodsAllocationPreference}, + {path:"/goodsAllocation/:id/profile", component: GoodsAllocationProfile}, + {path:"/goodsAllocation/:id/permission", component: GoodsAllocationPermission}, diff --git a/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.associateform.js b/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.associateform.js index 387873e40..0f90a1c10 100644 --- a/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.associateform.js +++ b/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.associateform.js @@ -19,8 +19,8 @@ const testValues = {}; /* const testValues = { location: '成都龙泉驿飞鹤路20号存货区货架20号货位', - latitude: '42.67571367032549', - longitude: '130.4813102386915', + latitude: '41.995934669165386', + longitude: '130.97181539356887', goodsShelfId: 'GS000001', } */ @@ -141,7 +141,7 @@ class GoodsAllocationAssociateForm extends Component { {getFieldDecorator('location', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -151,7 +151,7 @@ class GoodsAllocationAssociateForm extends Component { {getFieldDecorator('latitude', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -161,7 +161,7 @@ class GoodsAllocationAssociateForm extends Component { {getFieldDecorator('longitude', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.associateform.less b/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.associateform.less +++ b/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.base.js b/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.base.js index b74e9e3b9..4567c677d 100644 --- a/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.base.js +++ b/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.base.js @@ -1,102 +1,88 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"货位", menuFor: "goodsAllocation", subItems: [ - {name: 'goodsList', displayName:'货物', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'goodsList', displayName:'货物', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + location: '位置', + latitude: '纬度', + longitude: '经度', + goodsShelf: '货架', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'goodsAllocation') }, - { title: '位置', debugtype: 'string', dataIndex: 'location', width: '25',render: (text, record)=>renderTextCell(text,record) }, - { title: '纬度', debugtype: 'double', dataIndex: 'latitude', width: '13',render: (text, record)=>renderTextCell(text,record) }, - { title: '经度', debugtype: 'double', dataIndex: 'longitude', width: '14',render: (text, record)=>renderTextCell(text,record) }, - { title: '货架', dataIndex: 'goodsShelf', render: (text, record) => renderReferenceCell(text, record)}, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'goodsAllocation') , sorter: true }, + { title: fieldLabels.location, debugtype: 'string', dataIndex: 'location', width: '25',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.latitude, debugtype: 'double', dataIndex: 'latitude', width: '13',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.longitude, debugtype: 'double', dataIndex: 'longitude', width: '14',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.goodsShelf, dataIndex: 'goodsShelf', render: (text, record) => renderReferenceCell(text, record), sorter:true}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({goodsAllocation,targetComponent})=>{ -const fieldLabels = { - id: '序号', - location: '位置', - latitude: '纬度', - longitude: '经度', - goodsShelf: '货架', + + + const {GoodsAllocationService} = GlobalComponents + // const userContext = null + return ( + +{goodsAllocation.id} +{goodsAllocation.location} +{goodsAllocation.latitude} +{goodsAllocation.longitude} +{goodsAllocation.goodsShelf==null?appLocaleName(userContext,"NotAssigned"):`${goodsAllocation.goodsShelf.displayName}(${goodsAllocation.goodsShelf.id})`} + + showTransferModel(targetComponent,"货架","goodsShelf",GoodsAllocationService.requestCandidateGoodsShelf, + GoodsAllocationService.transferToAnotherGoodsShelf,"anotherGoodsShelfId",goodsAllocation.goodsShelf?goodsAllocation.goodsShelf.id:"")} + style={{fontSize: 20,color:"red"}} /> + + + {buildTransferModal(goodsAllocation,targetComponent)} + + ) } + + -const GoodsAllocationBase={menuData,displayColumns,fieldLabels} +const GoodsAllocationBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default GoodsAllocationBase diff --git a/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.createform.js b/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.createform.js index 93a97ca77..c172d8b08 100644 --- a/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.createform.js +++ b/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.createform.js @@ -18,8 +18,8 @@ const testValues = {}; /* const testValues = { location: '成都龙泉驿飞鹤路20号存货区货架20号货位', - latitude: '40.1868270449093', - longitude: '131.65534717040074', + latitude: '40.98156824358914', + longitude: '131.50922230583038', goodsShelfId: 'GS000001', } */ @@ -209,7 +209,7 @@ class GoodsAllocationCreateForm extends Component { {getFieldDecorator('location', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -219,7 +219,7 @@ class GoodsAllocationCreateForm extends Component { {getFieldDecorator('latitude', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -229,7 +229,7 @@ class GoodsAllocationCreateForm extends Component { {getFieldDecorator('longitude', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.dashboard.js b/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.dashboard.js index 0bb0d7220..afeabc038 100644 --- a/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.dashboard.js +++ b/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -144,6 +144,7 @@ class GoodsAllocationDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -152,13 +153,17 @@ class GoodsAllocationDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.model.js b/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.model.js index 860dca83e..8f9d42420 100644 --- a/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.model.js +++ b/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/goodsAllocation/${id}/list/\GoodsList/货物+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/goodsAllocation/${id}/list/GoodsList/货物+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateGoods({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/goodsAllocation/${id}/list/\GoodsList/货物列表`, state: newPlayload } + const location = { pathname: `/goodsAllocation/${id}/list/GoodsList/货物列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextGoodsUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.permission.js b/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.permission.js new file mode 100644 index 000000000..857c9082a --- /dev/null +++ b/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.permission.js @@ -0,0 +1,86 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './GoodsAllocation.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (goodsAllocation,targetComponent) =>{ + const userContext = null + return ( + +{goodsAllocation.id} +{goodsAllocation.location} +{goodsAllocation.latitude} +{goodsAllocation.longitude} + + + ) +} + + +const renderPermissionSetting = goodsAllocation => { + const {GoodsAllocationBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class GoodsAllocationPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const goodsAllocation = this.props.goodsAllocation; + const { id,displayName, goodsCount } = goodsAllocation + const cardsData = {cardsName:"货位",cardsFor: "goodsAllocation",cardsSource: goodsAllocation, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + goodsAllocation: state._goodsAllocation, +}))(Form.create()(GoodsAllocationPermission)) + diff --git a/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.permission.less b/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.preference.js b/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.preference.js index 487047b2f..531e1b752 100644 --- a/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.preference.js +++ b/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.preference.js @@ -307,8 +307,12 @@ class GoodsAllocationPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, goodsCount } = this.props.goodsAllocation - const cardsData = {cardsName:"货位",cardsFor: "goodsAllocation",cardsSource: this.props.goodsAllocation, + const goodsAllocation = this.props.goodsAllocation; + const { id,displayName, goodsCount } = goodsAllocation + + + + const cardsData = {cardsName:"货位",cardsFor: "goodsAllocation",cardsSource: goodsAllocation, subItems: [ ], diff --git a/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.profile.js b/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.profile.js new file mode 100644 index 000000000..6f8453ce4 --- /dev/null +++ b/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.profile.js @@ -0,0 +1,93 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './GoodsAllocation.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (goodsAllocation,targetComponent) =>{ + const userContext = null + return ( + +{goodsAllocation.id} +{goodsAllocation.location} +{goodsAllocation.latitude} +{goodsAllocation.longitude} + + + ) +} + + + +class GoodsAllocationProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const goodsAllocation = this.props.goodsAllocation; + const { id,displayName, goodsCount } = goodsAllocation + + const cardsData = {cardsName:"货位",cardsFor: "goodsAllocation",cardsSource: goodsAllocation, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + goodsAllocation: state._goodsAllocation, +}))(Form.create()(GoodsAllocationProfile)) + diff --git a/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.profile.less b/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.search.js b/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.search.js index 39c28b351..49e26cf58 100644 --- a/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.search.js +++ b/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.searchform.js b/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.searchform.js index 6273c930f..354cfd8bd 100644 --- a/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.searchform.js +++ b/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`goodsAllocationList.searchField`] = fieldName - value[`goodsAllocationList.searchVerb`] = searchVerb - value[`goodsAllocationList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,11 +127,12 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'location')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'goodsShelf')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'location')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'goodsShelf')) console.log("the final parameter", paramList) @@ -147,11 +148,12 @@ componentDidMount() { } - params['goodsAllocationList'] = 1 - params['goodsAllocationList.orderBy.0'] = "id" - params['goodsAllocationList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -206,8 +208,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -277,8 +279,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.table.js b/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.table.js index 8e91b6d08..511f8365f 100644 --- a/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.table.js +++ b/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.table.js @@ -40,24 +40,53 @@ class GoodsAllocationTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = GoodsAllocationBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class GoodsAllocationTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class GoodsAllocationTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.updateform.js b/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.updateform.js index 013eaf8ef..18c4ce8ff 100644 --- a/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.updateform.js +++ b/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.updateform.js @@ -261,7 +261,7 @@ class GoodsAllocationUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class GoodsAllocationUpdateForm extends Component { initialValue: selectedRow.location, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -285,7 +285,7 @@ class GoodsAllocationUpdateForm extends Component { initialValue: selectedRow.latitude, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -297,7 +297,7 @@ class GoodsAllocationUpdateForm extends Component { initialValue: selectedRow.longitude, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/goodsmovement/GoodsMovement.app.js b/bizui/src/bizcomponents/goodsmovement/GoodsMovement.app.js index 11b6263c6..a90674324 100644 --- a/bizui/src/bizcomponents/goodsmovement/GoodsMovement.app.js +++ b/bizui/src/bizcomponents/goodsmovement/GoodsMovement.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class GoodsMovementBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -157,12 +166,14 @@ class GoodsMovementBizApp extends React.PureComponent { buildRouters = () =>{ const {GoodsMovementDashboard} = GlobalComponents - const {GoodsMovementPreference} = GlobalComponents + const {GoodsMovementPermission} = GlobalComponents + const {GoodsMovementProfile} = GlobalComponents const routers=[ {path:"/goodsMovement/:id/dashboard", component: GoodsMovementDashboard}, - {path:"/goodsMovement/:id/preference", component: GoodsMovementPreference}, + {path:"/goodsMovement/:id/profile", component: GoodsMovementProfile}, + {path:"/goodsMovement/:id/permission", component: GoodsMovementPermission}, diff --git a/bizui/src/bizcomponents/goodsmovement/GoodsMovement.associateform.js b/bizui/src/bizcomponents/goodsmovement/GoodsMovement.associateform.js index 0c605feed..d5c3384f1 100644 --- a/bizui/src/bizcomponents/goodsmovement/GoodsMovement.associateform.js +++ b/bizui/src/bizcomponents/goodsmovement/GoodsMovement.associateform.js @@ -18,13 +18,13 @@ const { TextArea } = Input const testValues = {}; /* const testValues = { - moveTime: '2019-03-27 00:49:18', + moveTime: '2019-04-28 18:39:46', facility: '仓库货位', facilityId: '仓库货位', fromIp: '192.168.20.1', sessionId: 'FTYUIOLJYT^*(PLKJYT)', - latitude: '42.225256192615184', - longitude: '130.93332206704423', + latitude: '41.849456201586406', + longitude: '131.7397406457198', goodsId: 'G000001', userAgent: 'Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/7B405', } @@ -145,7 +145,7 @@ class GoodsMovementAssociateForm extends Component { {getFieldDecorator('moveTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -155,7 +155,7 @@ class GoodsMovementAssociateForm extends Component { {getFieldDecorator('facility', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -165,7 +165,7 @@ class GoodsMovementAssociateForm extends Component { {getFieldDecorator('facilityId', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -175,7 +175,7 @@ class GoodsMovementAssociateForm extends Component { {getFieldDecorator('fromIp', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -185,7 +185,7 @@ class GoodsMovementAssociateForm extends Component { {getFieldDecorator('sessionId', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -195,7 +195,7 @@ class GoodsMovementAssociateForm extends Component { {getFieldDecorator('latitude', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -205,7 +205,7 @@ class GoodsMovementAssociateForm extends Component { {getFieldDecorator('longitude', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/goodsmovement/GoodsMovement.associateform.less b/bizui/src/bizcomponents/goodsmovement/GoodsMovement.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/goodsmovement/GoodsMovement.associateform.less +++ b/bizui/src/bizcomponents/goodsmovement/GoodsMovement.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/goodsmovement/GoodsMovement.base.js b/bizui/src/bizcomponents/goodsmovement/GoodsMovement.base.js index fc79a6349..7b58ec4a1 100644 --- a/bizui/src/bizcomponents/goodsmovement/GoodsMovement.base.js +++ b/bizui/src/bizcomponents/goodsmovement/GoodsMovement.base.js @@ -1,10 +1,33 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"货物移动", menuFor: "goodsMovement", subItems: [ @@ -12,84 +35,6 @@ const menuData = {menuName:"货物移动", menuFor: "goodsMovement", ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) - -} - -const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record) }, - { title: '移动时间', dataIndex: 'moveTime', render: (text, record) =>renderDateTimeCell(text,record) }, - { title: '设施', debugtype: 'string', dataIndex: 'facility', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: '设备ID', debugtype: 'string', dataIndex: 'facilityId', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: '从IP', debugtype: 'string', dataIndex: 'fromIp', width: '16',render: (text, record)=>renderTextCell(text,record) }, - { title: '用户代理', debugtype: 'string', dataIndex: 'userAgent', width: '115',render: (text, record)=>renderTextCell(text,record) }, - { title: '会话ID', debugtype: 'string', dataIndex: 'sessionId', width: '24',render: (text, record)=>renderTextCell(text,record) }, - { title: '纬度', debugtype: 'double', dataIndex: 'latitude', width: '13',render: (text, record)=>renderTextCell(text,record) }, - { title: '经度', debugtype: 'double', dataIndex: 'longitude', width: '14',render: (text, record)=>renderTextCell(text,record) }, - { title: '货物', dataIndex: 'goods', render: (text, record) => renderReferenceCell(text, record)}, - -] - const fieldLabels = { id: '序号', moveTime: '移动时间', @@ -104,8 +49,53 @@ const fieldLabels = { } +const displayColumns = [ + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.moveTime, dataIndex: 'moveTime', render: (text, record) =>renderDateTimeCell(text,record), sorter: true}, + { title: fieldLabels.facility, debugtype: 'string', dataIndex: 'facility', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.facilityId, debugtype: 'string', dataIndex: 'facilityId', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.fromIp, debugtype: 'string', dataIndex: 'fromIp', width: '16',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.userAgent, debugtype: 'string', dataIndex: 'userAgent', width: '115',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.sessionId, debugtype: 'string', dataIndex: 'sessionId', width: '24',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.latitude, debugtype: 'double', dataIndex: 'latitude', width: '13',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.longitude, debugtype: 'double', dataIndex: 'longitude', width: '14',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.goods, dataIndex: 'goods', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + +] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({goodsMovement,targetComponent})=>{ + + + + const {GoodsMovementService} = GlobalComponents + // const userContext = null + return ( + +{goodsMovement.id} +{ moment(goodsMovement.moveTime).format('YYYY-MM-DD')} +{goodsMovement.facility} +{goodsMovement.facilityId} +{goodsMovement.fromIp} +{goodsMovement.sessionId} +{goodsMovement.latitude} +{goodsMovement.longitude} +{goodsMovement.goods==null?appLocaleName(userContext,"NotAssigned"):`${goodsMovement.goods.displayName}(${goodsMovement.goods.id})`} + + showTransferModel(targetComponent,"货物","goods",GoodsMovementService.requestCandidateGoods, + GoodsMovementService.transferToAnotherGoods,"anotherGoodsId",goodsMovement.goods?goodsMovement.goods.id:"")} + style={{fontSize: 20,color:"red"}} /> + + + {buildTransferModal(goodsMovement,targetComponent)} + + ) + +} + + + -const GoodsMovementBase={menuData,displayColumns,fieldLabels} +const GoodsMovementBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default GoodsMovementBase diff --git a/bizui/src/bizcomponents/goodsmovement/GoodsMovement.createform.js b/bizui/src/bizcomponents/goodsmovement/GoodsMovement.createform.js index 6685c061a..28b9c344f 100644 --- a/bizui/src/bizcomponents/goodsmovement/GoodsMovement.createform.js +++ b/bizui/src/bizcomponents/goodsmovement/GoodsMovement.createform.js @@ -17,13 +17,13 @@ const { TextArea } = Input const testValues = {}; /* const testValues = { - moveTime: '2019-03-20 10:58:05', + moveTime: '2019-05-16 13:23:04', facility: '仓库货位', facilityId: '仓库货位', fromIp: '192.168.20.1', sessionId: 'FTYUIOLJYT^*(PLKJYT)', - latitude: '42.679557140710315', - longitude: '130.70616476940228', + latitude: '41.76932583351816', + longitude: '129.7784601655759', goodsId: 'G000001', userAgent: 'Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/7B405', } @@ -214,7 +214,7 @@ class GoodsMovementCreateForm extends Component { {getFieldDecorator('moveTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -224,7 +224,7 @@ class GoodsMovementCreateForm extends Component { {getFieldDecorator('facility', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -234,7 +234,7 @@ class GoodsMovementCreateForm extends Component { {getFieldDecorator('facilityId', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -244,7 +244,7 @@ class GoodsMovementCreateForm extends Component { {getFieldDecorator('fromIp', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -254,7 +254,7 @@ class GoodsMovementCreateForm extends Component { {getFieldDecorator('sessionId', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -264,7 +264,7 @@ class GoodsMovementCreateForm extends Component { {getFieldDecorator('latitude', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class GoodsMovementCreateForm extends Component { {getFieldDecorator('longitude', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/goodsmovement/GoodsMovement.dashboard.js b/bizui/src/bizcomponents/goodsmovement/GoodsMovement.dashboard.js index 539d6df5d..8f11b3c21 100644 --- a/bizui/src/bizcomponents/goodsmovement/GoodsMovement.dashboard.js +++ b/bizui/src/bizcomponents/goodsmovement/GoodsMovement.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -150,6 +150,7 @@ class GoodsMovementDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -158,13 +159,17 @@ class GoodsMovementDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/goodsmovement/GoodsMovement.model.js b/bizui/src/bizcomponents/goodsmovement/GoodsMovement.model.js index 5d9c06284..0ed00cd35 100644 --- a/bizui/src/bizcomponents/goodsmovement/GoodsMovement.model.js +++ b/bizui/src/bizcomponents/goodsmovement/GoodsMovement.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' diff --git a/bizui/src/bizcomponents/goodsmovement/GoodsMovement.permission.js b/bizui/src/bizcomponents/goodsmovement/GoodsMovement.permission.js new file mode 100644 index 000000000..fc147c23f --- /dev/null +++ b/bizui/src/bizcomponents/goodsmovement/GoodsMovement.permission.js @@ -0,0 +1,90 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './GoodsMovement.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (goodsMovement,targetComponent) =>{ + const userContext = null + return ( + +{goodsMovement.id} +{ moment(goodsMovement.moveTime).format('YYYY-MM-DD')} +{goodsMovement.facility} +{goodsMovement.facilityId} +{goodsMovement.fromIp} +{goodsMovement.sessionId} +{goodsMovement.latitude} +{goodsMovement.longitude} + + + ) +} + + +const renderPermissionSetting = goodsMovement => { + const {GoodsMovementBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class GoodsMovementPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const goodsMovement = this.props.goodsMovement; + const { id,displayName, } = goodsMovement + const cardsData = {cardsName:"货物移动",cardsFor: "goodsMovement",cardsSource: goodsMovement, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + goodsMovement: state._goodsMovement, +}))(Form.create()(GoodsMovementPermission)) + diff --git a/bizui/src/bizcomponents/goodsmovement/GoodsMovement.permission.less b/bizui/src/bizcomponents/goodsmovement/GoodsMovement.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/goodsmovement/GoodsMovement.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/goodsmovement/GoodsMovement.preference.js b/bizui/src/bizcomponents/goodsmovement/GoodsMovement.preference.js index 40210c6c3..731db7795 100644 --- a/bizui/src/bizcomponents/goodsmovement/GoodsMovement.preference.js +++ b/bizui/src/bizcomponents/goodsmovement/GoodsMovement.preference.js @@ -314,8 +314,12 @@ class GoodsMovementPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, } = this.props.goodsMovement - const cardsData = {cardsName:"货物移动",cardsFor: "goodsMovement",cardsSource: this.props.goodsMovement, + const goodsMovement = this.props.goodsMovement; + const { id,displayName, } = goodsMovement + + + + const cardsData = {cardsName:"货物移动",cardsFor: "goodsMovement",cardsSource: goodsMovement, subItems: [ ], diff --git a/bizui/src/bizcomponents/goodsmovement/GoodsMovement.profile.js b/bizui/src/bizcomponents/goodsmovement/GoodsMovement.profile.js new file mode 100644 index 000000000..e14b84433 --- /dev/null +++ b/bizui/src/bizcomponents/goodsmovement/GoodsMovement.profile.js @@ -0,0 +1,97 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './GoodsMovement.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (goodsMovement,targetComponent) =>{ + const userContext = null + return ( + +{goodsMovement.id} +{ moment(goodsMovement.moveTime).format('YYYY-MM-DD')} +{goodsMovement.facility} +{goodsMovement.facilityId} +{goodsMovement.fromIp} +{goodsMovement.sessionId} +{goodsMovement.latitude} +{goodsMovement.longitude} + + + ) +} + + + +class GoodsMovementProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const goodsMovement = this.props.goodsMovement; + const { id,displayName, } = goodsMovement + + const cardsData = {cardsName:"货物移动",cardsFor: "goodsMovement",cardsSource: goodsMovement, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + goodsMovement: state._goodsMovement, +}))(Form.create()(GoodsMovementProfile)) + diff --git a/bizui/src/bizcomponents/goodsmovement/GoodsMovement.profile.less b/bizui/src/bizcomponents/goodsmovement/GoodsMovement.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/goodsmovement/GoodsMovement.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/goodsmovement/GoodsMovement.search.js b/bizui/src/bizcomponents/goodsmovement/GoodsMovement.search.js index be06b0455..2d3ecaa84 100644 --- a/bizui/src/bizcomponents/goodsmovement/GoodsMovement.search.js +++ b/bizui/src/bizcomponents/goodsmovement/GoodsMovement.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/goodsmovement/GoodsMovement.searchform.js b/bizui/src/bizcomponents/goodsmovement/GoodsMovement.searchform.js index b40273c67..efd51edea 100644 --- a/bizui/src/bizcomponents/goodsmovement/GoodsMovement.searchform.js +++ b/bizui/src/bizcomponents/goodsmovement/GoodsMovement.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`goodsMovementList.searchField`] = fieldName - value[`goodsMovementList.searchVerb`] = searchVerb - value[`goodsMovementList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,15 +127,16 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'facility')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'facilityId')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'fromIp')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'userAgent')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'sessionId')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'goods')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'facility')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'facilityId')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'fromIp')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'userAgent')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'sessionId')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'goods')) console.log("the final parameter", paramList) @@ -151,11 +152,12 @@ componentDidMount() { } - params['goodsMovementList'] = 1 - params['goodsMovementList.orderBy.0'] = "id" - params['goodsMovementList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -210,8 +212,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -313,8 +315,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/goodsmovement/GoodsMovement.table.js b/bizui/src/bizcomponents/goodsmovement/GoodsMovement.table.js index c51caf7ac..f92b30da9 100644 --- a/bizui/src/bizcomponents/goodsmovement/GoodsMovement.table.js +++ b/bizui/src/bizcomponents/goodsmovement/GoodsMovement.table.js @@ -40,24 +40,53 @@ class GoodsMovementTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = GoodsMovementBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class GoodsMovementTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class GoodsMovementTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/goodsmovement/GoodsMovement.updateform.js b/bizui/src/bizcomponents/goodsmovement/GoodsMovement.updateform.js index 182026f43..670fbae65 100644 --- a/bizui/src/bizcomponents/goodsmovement/GoodsMovement.updateform.js +++ b/bizui/src/bizcomponents/goodsmovement/GoodsMovement.updateform.js @@ -262,7 +262,7 @@ class GoodsMovementUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class GoodsMovementUpdateForm extends Component { initialValue: selectedRow.moveTime, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class GoodsMovementUpdateForm extends Component { initialValue: selectedRow.facility, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -298,7 +298,7 @@ class GoodsMovementUpdateForm extends Component { initialValue: selectedRow.facilityId, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -310,7 +310,7 @@ class GoodsMovementUpdateForm extends Component { initialValue: selectedRow.fromIp, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -322,7 +322,7 @@ class GoodsMovementUpdateForm extends Component { initialValue: selectedRow.sessionId, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -334,7 +334,7 @@ class GoodsMovementUpdateForm extends Component { initialValue: selectedRow.latitude, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -346,7 +346,7 @@ class GoodsMovementUpdateForm extends Component { initialValue: selectedRow.longitude, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.app.js b/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.app.js index 4004e8b89..a2ce8c71d 100644 --- a/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.app.js +++ b/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class GoodsPackagingBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class GoodsPackagingBizApp extends React.PureComponent { buildRouters = () =>{ const {GoodsPackagingDashboard} = GlobalComponents - const {GoodsPackagingPreference} = GlobalComponents + const {GoodsPackagingPermission} = GlobalComponents + const {GoodsPackagingProfile} = GlobalComponents const routers=[ {path:"/goodsPackaging/:id/dashboard", component: GoodsPackagingDashboard}, - {path:"/goodsPackaging/:id/preference", component: GoodsPackagingPreference}, + {path:"/goodsPackaging/:id/profile", component: GoodsPackagingProfile}, + {path:"/goodsPackaging/:id/permission", component: GoodsPackagingPermission}, diff --git a/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.associateform.js b/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.associateform.js index becb1a1c5..1b4b1cd5b 100644 --- a/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.associateform.js +++ b/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.associateform.js @@ -20,7 +20,7 @@ const testValues = {}; const testValues = { packageName: '王煜东', rfid: 'RF99192', - packageTime: '2018-04-11', + packageTime: '2018-07-24', description: '打包完成,准备起运', } */ @@ -141,7 +141,7 @@ class GoodsPackagingAssociateForm extends Component { {getFieldDecorator('packageName', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -151,7 +151,7 @@ class GoodsPackagingAssociateForm extends Component { {getFieldDecorator('rfid', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -161,7 +161,7 @@ class GoodsPackagingAssociateForm extends Component { {getFieldDecorator('packageTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -171,7 +171,7 @@ class GoodsPackagingAssociateForm extends Component { {getFieldDecorator('description', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.associateform.less b/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.associateform.less +++ b/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.base.js b/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.base.js index b6e38aa81..1ea3b38aa 100644 --- a/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.base.js +++ b/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.base.js @@ -1,102 +1,83 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"货物包装", menuFor: "goodsPackaging", subItems: [ - {name: 'goodsList', displayName:'货物', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'goodsList', displayName:'货物', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + packageName: '包的名字', + rfid: 'RFID', + packageTime: '包的时间', + description: '描述', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'goodsPackaging') }, - { title: '包的名字', debugtype: 'string', dataIndex: 'packageName', width: '7',render: (text, record)=>renderTextCell(text,record) }, - { title: 'RFID', debugtype: 'string', dataIndex: 'rfid', width: '11',render: (text, record)=>renderTextCell(text,record) }, - { title: '包的时间', dataIndex: 'packageTime', render: (text, record) =>renderDateCell(text,record) }, - { title: '描述', debugtype: 'string', dataIndex: 'description', width: '13',render: (text, record)=>renderTextCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'goodsPackaging') , sorter: true }, + { title: fieldLabels.packageName, debugtype: 'string', dataIndex: 'packageName', width: '7',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.rfid, debugtype: 'string', dataIndex: 'rfid', width: '11',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.packageTime, dataIndex: 'packageTime', render: (text, record) =>renderDateCell(text,record), sorter: true }, + { title: fieldLabels.description, debugtype: 'string', dataIndex: 'description', width: '13',render: (text, record)=>renderTextCell(text,record)}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({goodsPackaging,targetComponent})=>{ -const fieldLabels = { - id: '序号', - packageName: '包的名字', - rfid: 'RFID', - packageTime: '包的时间', - description: '描述', + + + const {GoodsPackagingService} = GlobalComponents + // const userContext = null + return ( + +{goodsPackaging.id} +{goodsPackaging.packageName} +{goodsPackaging.rfid} +{ moment(goodsPackaging.packageTime).format('YYYY-MM-DD')} +{goodsPackaging.description} + + {buildTransferModal(goodsPackaging,targetComponent)} + + ) } + + -const GoodsPackagingBase={menuData,displayColumns,fieldLabels} +const GoodsPackagingBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default GoodsPackagingBase diff --git a/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.createform.js b/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.createform.js index 5eba92dc6..5e96e4569 100644 --- a/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.createform.js +++ b/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.createform.js @@ -19,7 +19,7 @@ const testValues = {}; const testValues = { packageName: '王煜东', rfid: 'RF99192', - packageTime: '2017-05-14', + packageTime: '2018-12-25', description: '打包完成,准备起运', } */ @@ -209,7 +209,7 @@ class GoodsPackagingCreateForm extends Component { {getFieldDecorator('packageName', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -219,7 +219,7 @@ class GoodsPackagingCreateForm extends Component { {getFieldDecorator('rfid', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -229,7 +229,7 @@ class GoodsPackagingCreateForm extends Component { {getFieldDecorator('packageTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -239,7 +239,7 @@ class GoodsPackagingCreateForm extends Component { {getFieldDecorator('description', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.dashboard.js b/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.dashboard.js index 0e50b7e50..32335222c 100644 --- a/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.dashboard.js +++ b/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -139,6 +139,7 @@ class GoodsPackagingDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -147,13 +148,17 @@ class GoodsPackagingDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.model.js b/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.model.js index a52f298c6..569ac0a72 100644 --- a/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.model.js +++ b/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/goodsPackaging/${id}/list/\GoodsList/货物+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/goodsPackaging/${id}/list/GoodsList/货物+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateGoods({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/goodsPackaging/${id}/list/\GoodsList/货物列表`, state: newPlayload } + const location = { pathname: `/goodsPackaging/${id}/list/GoodsList/货物列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextGoodsUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.permission.js b/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.permission.js new file mode 100644 index 000000000..12d13e6bf --- /dev/null +++ b/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.permission.js @@ -0,0 +1,87 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './GoodsPackaging.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (goodsPackaging,targetComponent) =>{ + const userContext = null + return ( + +{goodsPackaging.id} +{goodsPackaging.packageName} +{goodsPackaging.rfid} +{ moment(goodsPackaging.packageTime).format('YYYY-MM-DD')} +{goodsPackaging.description} + + + ) +} + + +const renderPermissionSetting = goodsPackaging => { + const {GoodsPackagingBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class GoodsPackagingPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const goodsPackaging = this.props.goodsPackaging; + const { id,displayName, goodsCount } = goodsPackaging + const cardsData = {cardsName:"货物包装",cardsFor: "goodsPackaging",cardsSource: goodsPackaging, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + goodsPackaging: state._goodsPackaging, +}))(Form.create()(GoodsPackagingPermission)) + diff --git a/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.permission.less b/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.preference.js b/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.preference.js index 858bbcea6..44e9b9af3 100644 --- a/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.preference.js +++ b/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.preference.js @@ -302,8 +302,12 @@ class GoodsPackagingPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, goodsCount } = this.props.goodsPackaging - const cardsData = {cardsName:"货物包装",cardsFor: "goodsPackaging",cardsSource: this.props.goodsPackaging, + const goodsPackaging = this.props.goodsPackaging; + const { id,displayName, goodsCount } = goodsPackaging + + + + const cardsData = {cardsName:"货物包装",cardsFor: "goodsPackaging",cardsSource: goodsPackaging, subItems: [ ], diff --git a/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.profile.js b/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.profile.js new file mode 100644 index 000000000..937fcc49e --- /dev/null +++ b/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.profile.js @@ -0,0 +1,94 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './GoodsPackaging.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (goodsPackaging,targetComponent) =>{ + const userContext = null + return ( + +{goodsPackaging.id} +{goodsPackaging.packageName} +{goodsPackaging.rfid} +{ moment(goodsPackaging.packageTime).format('YYYY-MM-DD')} +{goodsPackaging.description} + + + ) +} + + + +class GoodsPackagingProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const goodsPackaging = this.props.goodsPackaging; + const { id,displayName, goodsCount } = goodsPackaging + + const cardsData = {cardsName:"货物包装",cardsFor: "goodsPackaging",cardsSource: goodsPackaging, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + goodsPackaging: state._goodsPackaging, +}))(Form.create()(GoodsPackagingProfile)) + diff --git a/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.profile.less b/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.search.js b/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.search.js index b014129b5..ac7056b73 100644 --- a/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.search.js +++ b/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.searchform.js b/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.searchform.js index 92542523a..d906880c2 100644 --- a/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.searchform.js +++ b/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`goodsPackagingList.searchField`] = fieldName - value[`goodsPackagingList.searchVerb`] = searchVerb - value[`goodsPackagingList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,12 +127,13 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'packageName')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'rfid')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'description')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'packageName')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'rfid')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'description')) console.log("the final parameter", paramList) @@ -148,11 +149,12 @@ componentDidMount() { } - params['goodsPackagingList'] = 1 - params['goodsPackagingList.orderBy.0'] = "id" - params['goodsPackagingList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -207,8 +209,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -279,8 +281,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.table.js b/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.table.js index f3eb8c135..36e637957 100644 --- a/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.table.js +++ b/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.table.js @@ -40,24 +40,53 @@ class GoodsPackagingTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = GoodsPackagingBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class GoodsPackagingTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class GoodsPackagingTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.updateform.js b/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.updateform.js index 61186dd55..a4d6cdb83 100644 --- a/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.updateform.js +++ b/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.updateform.js @@ -262,7 +262,7 @@ class GoodsPackagingUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class GoodsPackagingUpdateForm extends Component { initialValue: selectedRow.packageName, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class GoodsPackagingUpdateForm extends Component { initialValue: selectedRow.rfid, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -298,7 +298,7 @@ class GoodsPackagingUpdateForm extends Component { initialValue: selectedRow.packageTime, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -310,7 +310,7 @@ class GoodsPackagingUpdateForm extends Component { initialValue: selectedRow.description, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/goodsshelf/GoodsShelf.app.js b/bizui/src/bizcomponents/goodsshelf/GoodsShelf.app.js index b69570c50..71eea8a01 100644 --- a/bizui/src/bizcomponents/goodsshelf/GoodsShelf.app.js +++ b/bizui/src/bizcomponents/goodsshelf/GoodsShelf.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class GoodsShelfBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -255,12 +264,14 @@ class GoodsShelfBizApp extends React.PureComponent { buildRouters = () =>{ const {GoodsShelfDashboard} = GlobalComponents - const {GoodsShelfPreference} = GlobalComponents + const {GoodsShelfPermission} = GlobalComponents + const {GoodsShelfProfile} = GlobalComponents const routers=[ {path:"/goodsShelf/:id/dashboard", component: GoodsShelfDashboard}, - {path:"/goodsShelf/:id/preference", component: GoodsShelfPreference}, + {path:"/goodsShelf/:id/profile", component: GoodsShelfProfile}, + {path:"/goodsShelf/:id/permission", component: GoodsShelfPermission}, diff --git a/bizui/src/bizcomponents/goodsshelf/GoodsShelf.associateform.js b/bizui/src/bizcomponents/goodsshelf/GoodsShelf.associateform.js index 0ae5e027d..ac2589298 100644 --- a/bizui/src/bizcomponents/goodsshelf/GoodsShelf.associateform.js +++ b/bizui/src/bizcomponents/goodsshelf/GoodsShelf.associateform.js @@ -142,7 +142,7 @@ class GoodsShelfAssociateForm extends Component { {getFieldDecorator('location', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/goodsshelf/GoodsShelf.associateform.less b/bizui/src/bizcomponents/goodsshelf/GoodsShelf.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/goodsshelf/GoodsShelf.associateform.less +++ b/bizui/src/bizcomponents/goodsshelf/GoodsShelf.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/goodsshelf/GoodsShelf.base.js b/bizui/src/bizcomponents/goodsshelf/GoodsShelf.base.js index 9c905a4bb..5d6bb52c8 100644 --- a/bizui/src/bizcomponents/goodsshelf/GoodsShelf.base.js +++ b/bizui/src/bizcomponents/goodsshelf/GoodsShelf.base.js @@ -1,93 +1,42 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"货架", menuFor: "goodsShelf", subItems: [ - {name: 'goodsShelfStockCountList', displayName:'货架库存盘点', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'goodsAllocationList', displayName:'货位', icon:'at',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'goodsShelfStockCountList', displayName:'货架库存盘点', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'goodsAllocationList', displayName:'货位', icon:'at',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) - -} - -const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'goodsShelf') }, - { title: '位置', debugtype: 'string', dataIndex: 'location', width: '20',render: (text, record)=>renderTextCell(text,record) }, - { title: '存货区', dataIndex: 'storageSpace', render: (text, record) => renderReferenceCell(text, record)}, - { title: '供应商的空间', dataIndex: 'supplierSpace', render: (text, record) => renderReferenceCell(text, record)}, - { title: '残次货物存放区', dataIndex: 'damageSpace', render: (text, record) => renderReferenceCell(text, record)}, - { title: '最后更新时间', dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record) }, - -] - const fieldLabels = { id: '序号', location: '位置', @@ -98,8 +47,56 @@ const fieldLabels = { } +const displayColumns = [ + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'goodsShelf') , sorter: true }, + { title: fieldLabels.location, debugtype: 'string', dataIndex: 'location', width: '20',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.storageSpace, dataIndex: 'storageSpace', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.supplierSpace, dataIndex: 'supplierSpace', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.damageSpace, dataIndex: 'damageSpace', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.lastUpdateTime, dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record), sorter: true}, + +] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({goodsShelf,targetComponent})=>{ + + + + const {GoodsShelfService} = GlobalComponents + // const userContext = null + return ( + +{goodsShelf.id} +{goodsShelf.location} +{goodsShelf.storageSpace==null?appLocaleName(userContext,"NotAssigned"):`${goodsShelf.storageSpace.displayName}(${goodsShelf.storageSpace.id})`} + + showTransferModel(targetComponent,"存货区","storageSpace",GoodsShelfService.requestCandidateStorageSpace, + GoodsShelfService.transferToAnotherStorageSpace,"anotherStorageSpaceId",goodsShelf.storageSpace?goodsShelf.storageSpace.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{goodsShelf.supplierSpace==null?appLocaleName(userContext,"NotAssigned"):`${goodsShelf.supplierSpace.displayName}(${goodsShelf.supplierSpace.id})`} + + showTransferModel(targetComponent,"供应商的空间","supplierSpace",GoodsShelfService.requestCandidateSupplierSpace, + GoodsShelfService.transferToAnotherSupplierSpace,"anotherSupplierSpaceId",goodsShelf.supplierSpace?goodsShelf.supplierSpace.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{goodsShelf.damageSpace==null?appLocaleName(userContext,"NotAssigned"):`${goodsShelf.damageSpace.displayName}(${goodsShelf.damageSpace.id})`} + + showTransferModel(targetComponent,"残次货物存放区","damageSpace",GoodsShelfService.requestCandidateDamageSpace, + GoodsShelfService.transferToAnotherDamageSpace,"anotherDamageSpaceId",goodsShelf.damageSpace?goodsShelf.damageSpace.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{ moment(goodsShelf.lastUpdateTime).format('YYYY-MM-DD')} + + {buildTransferModal(goodsShelf,targetComponent)} + + ) + +} + + + -const GoodsShelfBase={menuData,displayColumns,fieldLabels} +const GoodsShelfBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default GoodsShelfBase diff --git a/bizui/src/bizcomponents/goodsshelf/GoodsShelf.createform.js b/bizui/src/bizcomponents/goodsshelf/GoodsShelf.createform.js index a978fc811..adf507ae6 100644 --- a/bizui/src/bizcomponents/goodsshelf/GoodsShelf.createform.js +++ b/bizui/src/bizcomponents/goodsshelf/GoodsShelf.createform.js @@ -209,7 +209,7 @@ class GoodsShelfCreateForm extends Component { {getFieldDecorator('location', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/goodsshelf/GoodsShelf.dashboard.js b/bizui/src/bizcomponents/goodsshelf/GoodsShelf.dashboard.js index 358e12955..083b141c5 100644 --- a/bizui/src/bizcomponents/goodsshelf/GoodsShelf.dashboard.js +++ b/bizui/src/bizcomponents/goodsshelf/GoodsShelf.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -156,6 +156,7 @@ class GoodsShelfDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -164,13 +165,17 @@ class GoodsShelfDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/goodsshelf/GoodsShelf.model.js b/bizui/src/bizcomponents/goodsshelf/GoodsShelf.model.js index dbe774eee..307f4e9ba 100644 --- a/bizui/src/bizcomponents/goodsshelf/GoodsShelf.model.js +++ b/bizui/src/bizcomponents/goodsshelf/GoodsShelf.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/goodsShelf/${id}/list/\GoodsShelfStockCountList/货架库存盘点+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/goodsShelf/${id}/list/GoodsShelfStockCountList/货架库存盘点+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateGoodsShelfStockCount({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/goodsShelf/${id}/list/\GoodsShelfStockCountList/货架库存盘点列表`, state: newPlayload } + const location = { pathname: `/goodsShelf/${id}/list/GoodsShelfStockCountList/货架库存盘点列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextGoodsShelfStockCountUpdateRow({ payload }, { call, put }) { @@ -206,7 +206,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/goodsShelf/${id}/list/\GoodsAllocationList/货位+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/goodsShelf/${id}/list/GoodsAllocationList/货位+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateGoodsAllocation({ payload }, { call, put }) { @@ -228,7 +228,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/goodsShelf/${id}/list/\GoodsAllocationList/货位列表`, state: newPlayload } + const location = { pathname: `/goodsShelf/${id}/list/GoodsAllocationList/货位列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextGoodsAllocationUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/goodsshelf/GoodsShelf.permission.js b/bizui/src/bizcomponents/goodsshelf/GoodsShelf.permission.js new file mode 100644 index 000000000..c671b5867 --- /dev/null +++ b/bizui/src/bizcomponents/goodsshelf/GoodsShelf.permission.js @@ -0,0 +1,85 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './GoodsShelf.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (goodsShelf,targetComponent) =>{ + const userContext = null + return ( + +{goodsShelf.id} +{goodsShelf.location} +{ moment(goodsShelf.lastUpdateTime).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = goodsShelf => { + const {GoodsShelfBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class GoodsShelfPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const goodsShelf = this.props.goodsShelf; + const { id,displayName, goodsShelfStockCountCount, goodsAllocationCount } = goodsShelf + const cardsData = {cardsName:"货架",cardsFor: "goodsShelf",cardsSource: goodsShelf, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + goodsShelf: state._goodsShelf, +}))(Form.create()(GoodsShelfPermission)) + diff --git a/bizui/src/bizcomponents/goodsshelf/GoodsShelf.permission.less b/bizui/src/bizcomponents/goodsshelf/GoodsShelf.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/goodsshelf/GoodsShelf.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/goodsshelf/GoodsShelf.preference.js b/bizui/src/bizcomponents/goodsshelf/GoodsShelf.preference.js index e1d171523..cc9364438 100644 --- a/bizui/src/bizcomponents/goodsshelf/GoodsShelf.preference.js +++ b/bizui/src/bizcomponents/goodsshelf/GoodsShelf.preference.js @@ -318,8 +318,12 @@ class GoodsShelfPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, goodsShelfStockCountCount, goodsAllocationCount } = this.props.goodsShelf - const cardsData = {cardsName:"货架",cardsFor: "goodsShelf",cardsSource: this.props.goodsShelf, + const goodsShelf = this.props.goodsShelf; + const { id,displayName, goodsShelfStockCountCount, goodsAllocationCount } = goodsShelf + + + + const cardsData = {cardsName:"货架",cardsFor: "goodsShelf",cardsSource: goodsShelf, subItems: [ ], diff --git a/bizui/src/bizcomponents/goodsshelf/GoodsShelf.profile.js b/bizui/src/bizcomponents/goodsshelf/GoodsShelf.profile.js new file mode 100644 index 000000000..aff0eb8b1 --- /dev/null +++ b/bizui/src/bizcomponents/goodsshelf/GoodsShelf.profile.js @@ -0,0 +1,92 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './GoodsShelf.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (goodsShelf,targetComponent) =>{ + const userContext = null + return ( + +{goodsShelf.id} +{goodsShelf.location} +{ moment(goodsShelf.lastUpdateTime).format('YYYY-MM-DD')} + + + ) +} + + + +class GoodsShelfProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const goodsShelf = this.props.goodsShelf; + const { id,displayName, goodsShelfStockCountCount, goodsAllocationCount } = goodsShelf + + const cardsData = {cardsName:"货架",cardsFor: "goodsShelf",cardsSource: goodsShelf, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + goodsShelf: state._goodsShelf, +}))(Form.create()(GoodsShelfProfile)) + diff --git a/bizui/src/bizcomponents/goodsshelf/GoodsShelf.profile.less b/bizui/src/bizcomponents/goodsshelf/GoodsShelf.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/goodsshelf/GoodsShelf.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/goodsshelf/GoodsShelf.search.js b/bizui/src/bizcomponents/goodsshelf/GoodsShelf.search.js index 5c0e434b6..b8e712cfe 100644 --- a/bizui/src/bizcomponents/goodsshelf/GoodsShelf.search.js +++ b/bizui/src/bizcomponents/goodsshelf/GoodsShelf.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/goodsshelf/GoodsShelf.searchform.js b/bizui/src/bizcomponents/goodsshelf/GoodsShelf.searchform.js index 08f2fe8e0..1d79ae914 100644 --- a/bizui/src/bizcomponents/goodsshelf/GoodsShelf.searchform.js +++ b/bizui/src/bizcomponents/goodsshelf/GoodsShelf.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`goodsShelfList.searchField`] = fieldName - value[`goodsShelfList.searchVerb`] = searchVerb - value[`goodsShelfList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,13 +127,14 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'location')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'storageSpace')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'supplierSpace')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'damageSpace')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'location')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'storageSpace')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'supplierSpace')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'damageSpace')) console.log("the final parameter", paramList) @@ -149,11 +150,12 @@ componentDidMount() { } - params['goodsShelfList'] = 1 - params['goodsShelfList.orderBy.0'] = "id" - params['goodsShelfList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -208,8 +210,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -309,8 +311,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/goodsshelf/GoodsShelf.table.js b/bizui/src/bizcomponents/goodsshelf/GoodsShelf.table.js index ac42ba0a5..8f16f7573 100644 --- a/bizui/src/bizcomponents/goodsshelf/GoodsShelf.table.js +++ b/bizui/src/bizcomponents/goodsshelf/GoodsShelf.table.js @@ -40,24 +40,53 @@ class GoodsShelfTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = GoodsShelfBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class GoodsShelfTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class GoodsShelfTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/goodsshelf/GoodsShelf.updateform.js b/bizui/src/bizcomponents/goodsshelf/GoodsShelf.updateform.js index 7849b46f9..81630c510 100644 --- a/bizui/src/bizcomponents/goodsshelf/GoodsShelf.updateform.js +++ b/bizui/src/bizcomponents/goodsshelf/GoodsShelf.updateform.js @@ -262,7 +262,7 @@ class GoodsShelfUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class GoodsShelfUpdateForm extends Component { initialValue: selectedRow.location, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.app.js b/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.app.js index 1d8f6f7ce..808216f0b 100644 --- a/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.app.js +++ b/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class GoodsShelfStockCountBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class GoodsShelfStockCountBizApp extends React.PureComponent { buildRouters = () =>{ const {GoodsShelfStockCountDashboard} = GlobalComponents - const {GoodsShelfStockCountPreference} = GlobalComponents + const {GoodsShelfStockCountPermission} = GlobalComponents + const {GoodsShelfStockCountProfile} = GlobalComponents const routers=[ {path:"/goodsShelfStockCount/:id/dashboard", component: GoodsShelfStockCountDashboard}, - {path:"/goodsShelfStockCount/:id/preference", component: GoodsShelfStockCountPreference}, + {path:"/goodsShelfStockCount/:id/profile", component: GoodsShelfStockCountProfile}, + {path:"/goodsShelfStockCount/:id/permission", component: GoodsShelfStockCountPermission}, diff --git a/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.associateform.js b/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.associateform.js index 25706c96f..0b5cb7fa9 100644 --- a/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.associateform.js +++ b/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { title: '每日盘点', - countTime: '2018-05-05', + countTime: '2018-08-09', summary: '使用先进的rfid技术,没有任何错误', shelfId: 'GS000001', } @@ -141,7 +141,7 @@ class GoodsShelfStockCountAssociateForm extends Component { {getFieldDecorator('title', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -151,7 +151,7 @@ class GoodsShelfStockCountAssociateForm extends Component { {getFieldDecorator('countTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -161,7 +161,7 @@ class GoodsShelfStockCountAssociateForm extends Component { {getFieldDecorator('summary', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.associateform.less b/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.associateform.less +++ b/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.base.js b/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.base.js index 1ece27c25..d83863099 100644 --- a/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.base.js +++ b/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.base.js @@ -1,102 +1,88 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"货架库存盘点", menuFor: "goodsShelfStockCount", subItems: [ - {name: 'stockCountIssueTrackList', displayName:'库存计数问题跟踪', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'stockCountIssueTrackList', displayName:'库存计数问题跟踪', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + title: '头衔', + countTime: '计数时间', + summary: '概览', + shelf: '架', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'goodsShelfStockCount') }, - { title: '头衔', debugtype: 'string', dataIndex: 'title', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: '计数时间', dataIndex: 'countTime', render: (text, record) =>renderDateCell(text,record) }, - { title: '概览', debugtype: 'string', dataIndex: 'summary', width: '22',render: (text, record)=>renderTextCell(text,record) }, - { title: '架', dataIndex: 'shelf', render: (text, record) => renderReferenceCell(text, record)}, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'goodsShelfStockCount') , sorter: true }, + { title: fieldLabels.title, debugtype: 'string', dataIndex: 'title', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.countTime, dataIndex: 'countTime', render: (text, record) =>renderDateCell(text,record), sorter: true }, + { title: fieldLabels.summary, debugtype: 'string', dataIndex: 'summary', width: '22',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.shelf, dataIndex: 'shelf', render: (text, record) => renderReferenceCell(text, record), sorter:true}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({goodsShelfStockCount,targetComponent})=>{ -const fieldLabels = { - id: '序号', - title: '头衔', - countTime: '计数时间', - summary: '概览', - shelf: '架', + + + const {GoodsShelfStockCountService} = GlobalComponents + // const userContext = null + return ( + +{goodsShelfStockCount.id} +{goodsShelfStockCount.title} +{ moment(goodsShelfStockCount.countTime).format('YYYY-MM-DD')} +{goodsShelfStockCount.summary} +{goodsShelfStockCount.shelf==null?appLocaleName(userContext,"NotAssigned"):`${goodsShelfStockCount.shelf.displayName}(${goodsShelfStockCount.shelf.id})`} + + showTransferModel(targetComponent,"架","goodsShelf",GoodsShelfStockCountService.requestCandidateShelf, + GoodsShelfStockCountService.transferToAnotherShelf,"anotherShelfId",goodsShelfStockCount.shelf?goodsShelfStockCount.shelf.id:"")} + style={{fontSize: 20,color:"red"}} /> + + + {buildTransferModal(goodsShelfStockCount,targetComponent)} + + ) } + + -const GoodsShelfStockCountBase={menuData,displayColumns,fieldLabels} +const GoodsShelfStockCountBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default GoodsShelfStockCountBase diff --git a/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.createform.js b/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.createform.js index 7a3779b75..6c92cad6b 100644 --- a/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.createform.js +++ b/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { title: '每日盘点', - countTime: '2017-11-23', + countTime: '2016-06-06', summary: '使用先进的rfid技术,没有任何错误', shelfId: 'GS000001', } @@ -209,7 +209,7 @@ class GoodsShelfStockCountCreateForm extends Component { {getFieldDecorator('title', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -219,7 +219,7 @@ class GoodsShelfStockCountCreateForm extends Component { {getFieldDecorator('countTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -229,7 +229,7 @@ class GoodsShelfStockCountCreateForm extends Component { {getFieldDecorator('summary', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.dashboard.js b/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.dashboard.js index 47df69183..6977d9d18 100644 --- a/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.dashboard.js +++ b/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -144,6 +144,7 @@ class GoodsShelfStockCountDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -152,13 +153,17 @@ class GoodsShelfStockCountDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.model.js b/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.model.js index 647b9098e..36660062e 100644 --- a/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.model.js +++ b/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/goodsShelfStockCount/${id}/list/\StockCountIssueTrackList/库存计数问题跟踪+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/goodsShelfStockCount/${id}/list/StockCountIssueTrackList/库存计数问题跟踪+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateStockCountIssueTrack({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/goodsShelfStockCount/${id}/list/\StockCountIssueTrackList/库存计数问题跟踪列表`, state: newPlayload } + const location = { pathname: `/goodsShelfStockCount/${id}/list/StockCountIssueTrackList/库存计数问题跟踪列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextStockCountIssueTrackUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.permission.js b/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.permission.js new file mode 100644 index 000000000..7ba6f34d4 --- /dev/null +++ b/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.permission.js @@ -0,0 +1,86 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './GoodsShelfStockCount.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (goodsShelfStockCount,targetComponent) =>{ + const userContext = null + return ( + +{goodsShelfStockCount.id} +{goodsShelfStockCount.title} +{ moment(goodsShelfStockCount.countTime).format('YYYY-MM-DD')} +{goodsShelfStockCount.summary} + + + ) +} + + +const renderPermissionSetting = goodsShelfStockCount => { + const {GoodsShelfStockCountBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class GoodsShelfStockCountPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const goodsShelfStockCount = this.props.goodsShelfStockCount; + const { id,displayName, stockCountIssueTrackCount } = goodsShelfStockCount + const cardsData = {cardsName:"货架库存盘点",cardsFor: "goodsShelfStockCount",cardsSource: goodsShelfStockCount, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + goodsShelfStockCount: state._goodsShelfStockCount, +}))(Form.create()(GoodsShelfStockCountPermission)) + diff --git a/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.permission.less b/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.preference.js b/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.preference.js index 68fc56f67..467096e60 100644 --- a/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.preference.js +++ b/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.preference.js @@ -307,8 +307,12 @@ class GoodsShelfStockCountPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, stockCountIssueTrackCount } = this.props.goodsShelfStockCount - const cardsData = {cardsName:"货架库存盘点",cardsFor: "goodsShelfStockCount",cardsSource: this.props.goodsShelfStockCount, + const goodsShelfStockCount = this.props.goodsShelfStockCount; + const { id,displayName, stockCountIssueTrackCount } = goodsShelfStockCount + + + + const cardsData = {cardsName:"货架库存盘点",cardsFor: "goodsShelfStockCount",cardsSource: goodsShelfStockCount, subItems: [ ], diff --git a/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.profile.js b/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.profile.js new file mode 100644 index 000000000..dbe155daa --- /dev/null +++ b/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.profile.js @@ -0,0 +1,93 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './GoodsShelfStockCount.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (goodsShelfStockCount,targetComponent) =>{ + const userContext = null + return ( + +{goodsShelfStockCount.id} +{goodsShelfStockCount.title} +{ moment(goodsShelfStockCount.countTime).format('YYYY-MM-DD')} +{goodsShelfStockCount.summary} + + + ) +} + + + +class GoodsShelfStockCountProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const goodsShelfStockCount = this.props.goodsShelfStockCount; + const { id,displayName, stockCountIssueTrackCount } = goodsShelfStockCount + + const cardsData = {cardsName:"货架库存盘点",cardsFor: "goodsShelfStockCount",cardsSource: goodsShelfStockCount, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + goodsShelfStockCount: state._goodsShelfStockCount, +}))(Form.create()(GoodsShelfStockCountProfile)) + diff --git a/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.profile.less b/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.search.js b/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.search.js index 608a03958..7e3b65035 100644 --- a/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.search.js +++ b/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.searchform.js b/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.searchform.js index 1b9d111e2..77524c219 100644 --- a/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.searchform.js +++ b/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`goodsShelfStockCountList.searchField`] = fieldName - value[`goodsShelfStockCountList.searchVerb`] = searchVerb - value[`goodsShelfStockCountList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,12 +127,13 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'title')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'summary')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'shelf')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'title')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'summary')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'shelf')) console.log("the final parameter", paramList) @@ -148,11 +149,12 @@ componentDidMount() { } - params['goodsShelfStockCountList'] = 1 - params['goodsShelfStockCountList.orderBy.0'] = "id" - params['goodsShelfStockCountList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -207,8 +209,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -286,8 +288,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.table.js b/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.table.js index 752915793..2f9dcda80 100644 --- a/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.table.js +++ b/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.table.js @@ -40,24 +40,53 @@ class GoodsShelfStockCountTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = GoodsShelfStockCountBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class GoodsShelfStockCountTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class GoodsShelfStockCountTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.updateform.js b/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.updateform.js index aef0439c6..e17eba580 100644 --- a/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.updateform.js +++ b/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.updateform.js @@ -262,7 +262,7 @@ class GoodsShelfStockCountUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class GoodsShelfStockCountUpdateForm extends Component { initialValue: selectedRow.title, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class GoodsShelfStockCountUpdateForm extends Component { initialValue: selectedRow.countTime, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -298,7 +298,7 @@ class GoodsShelfStockCountUpdateForm extends Component { initialValue: selectedRow.summary, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.app.js b/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.app.js index b0fb3bfcb..9c17d95ab 100644 --- a/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.app.js +++ b/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class GoodsSupplierBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -304,12 +313,14 @@ class GoodsSupplierBizApp extends React.PureComponent { buildRouters = () =>{ const {GoodsSupplierDashboard} = GlobalComponents - const {GoodsSupplierPreference} = GlobalComponents + const {GoodsSupplierPermission} = GlobalComponents + const {GoodsSupplierProfile} = GlobalComponents const routers=[ {path:"/goodsSupplier/:id/dashboard", component: GoodsSupplierDashboard}, - {path:"/goodsSupplier/:id/preference", component: GoodsSupplierPreference}, + {path:"/goodsSupplier/:id/profile", component: GoodsSupplierProfile}, + {path:"/goodsSupplier/:id/permission", component: GoodsSupplierPermission}, diff --git a/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.associateform.js b/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.associateform.js index 83c1fab88..0068a63a2 100644 --- a/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.associateform.js +++ b/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.associateform.js @@ -144,7 +144,7 @@ class GoodsSupplierAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -154,7 +154,7 @@ class GoodsSupplierAssociateForm extends Component { {getFieldDecorator('supplyProduct', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -164,7 +164,7 @@ class GoodsSupplierAssociateForm extends Component { {getFieldDecorator('contactNumber', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -174,7 +174,7 @@ class GoodsSupplierAssociateForm extends Component { {getFieldDecorator('description', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.associateform.less b/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.associateform.less +++ b/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.base.js b/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.base.js index 328745a2b..495948cf3 100644 --- a/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.base.js +++ b/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.base.js @@ -1,95 +1,43 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"产品供应商", menuFor: "goodsSupplier", subItems: [ - {name: 'supplierProductList', displayName:'供应商的产品', icon:'product-hunt',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'supplyOrderList', displayName:'供应订单', icon:'first-order',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'accountSetList', displayName:'账套', icon:'headset',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'supplierProductList', displayName:'供应商的产品', icon:'product-hunt',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'supplyOrderList', displayName:'供应订单', icon:'first-order',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'accountSetList', displayName:'账套', icon:'headset',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) - -} - -const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'goodsSupplier') }, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '7',render: (text, record)=>renderTextCell(text,record) }, - { title: '供应产品', debugtype: 'string', dataIndex: 'supplyProduct', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: '属于', dataIndex: 'belongTo', render: (text, record) => renderReferenceCell(text, record)}, - { title: '联系电话', debugtype: 'string_china_mobile_phone', dataIndex: 'contactNumber', width: '15',render: (text, record)=>renderTextCell(text,record) }, - { title: '描述', debugtype: 'string', dataIndex: 'description', width: '22',render: (text, record)=>renderTextCell(text,record) }, - { title: '最后更新时间', dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record) }, - -] - const fieldLabels = { id: '序号', name: '名称', @@ -101,8 +49,42 @@ const fieldLabels = { } +const displayColumns = [ + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'goodsSupplier') , sorter: true }, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '7',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.supplyProduct, debugtype: 'string', dataIndex: 'supplyProduct', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.belongTo, dataIndex: 'belongTo', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.contactNumber, debugtype: 'string_china_mobile_phone', dataIndex: 'contactNumber', width: '15',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.description, debugtype: 'string', dataIndex: 'description', width: '22',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.lastUpdateTime, dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record), sorter: true}, + +] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({goodsSupplier,targetComponent})=>{ + + + + const {GoodsSupplierService} = GlobalComponents + // const userContext = null + return ( + +{goodsSupplier.id} +{goodsSupplier.name} +{goodsSupplier.supplyProduct} +{goodsSupplier.contactNumber} +{goodsSupplier.description} +{ moment(goodsSupplier.lastUpdateTime).format('YYYY-MM-DD')} + + {buildTransferModal(goodsSupplier,targetComponent)} + + ) + +} + + + -const GoodsSupplierBase={menuData,displayColumns,fieldLabels} +const GoodsSupplierBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default GoodsSupplierBase diff --git a/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.createform.js b/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.createform.js index ab302fb2a..63b1a9417 100644 --- a/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.createform.js +++ b/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.createform.js @@ -210,7 +210,7 @@ class GoodsSupplierCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -220,7 +220,7 @@ class GoodsSupplierCreateForm extends Component { {getFieldDecorator('supplyProduct', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -230,7 +230,7 @@ class GoodsSupplierCreateForm extends Component { {getFieldDecorator('contactNumber', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -240,7 +240,7 @@ class GoodsSupplierCreateForm extends Component { {getFieldDecorator('description', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.dashboard.js b/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.dashboard.js index 7031f0a6e..4d11640f4 100644 --- a/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.dashboard.js +++ b/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -142,6 +142,7 @@ class GoodsSupplierDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -150,13 +151,17 @@ class GoodsSupplierDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.model.js b/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.model.js index 4677ef612..6bab77d06 100644 --- a/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.model.js +++ b/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/goodsSupplier/${id}/list/\SupplierProductList/供应商的产品+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/goodsSupplier/${id}/list/SupplierProductList/供应商的产品+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateSupplierProduct({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/goodsSupplier/${id}/list/\SupplierProductList/供应商的产品列表`, state: newPlayload } + const location = { pathname: `/goodsSupplier/${id}/list/SupplierProductList/供应商的产品列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextSupplierProductUpdateRow({ payload }, { call, put }) { @@ -206,7 +206,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/goodsSupplier/${id}/list/\SupplyOrderList/供应订单+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/goodsSupplier/${id}/list/SupplyOrderList/供应订单+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateSupplyOrder({ payload }, { call, put }) { @@ -228,7 +228,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/goodsSupplier/${id}/list/\SupplyOrderList/供应订单列表`, state: newPlayload } + const location = { pathname: `/goodsSupplier/${id}/list/SupplyOrderList/供应订单列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextSupplyOrderUpdateRow({ payload }, { call, put }) { @@ -275,7 +275,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/goodsSupplier/${id}/list/\AccountSetList/账套+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/goodsSupplier/${id}/list/AccountSetList/账套+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateAccountSet({ payload }, { call, put }) { @@ -297,7 +297,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/goodsSupplier/${id}/list/\AccountSetList/账套列表`, state: newPlayload } + const location = { pathname: `/goodsSupplier/${id}/list/AccountSetList/账套列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextAccountSetUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.permission.js b/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.permission.js new file mode 100644 index 000000000..5d71a0d44 --- /dev/null +++ b/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.permission.js @@ -0,0 +1,88 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './GoodsSupplier.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (goodsSupplier,targetComponent) =>{ + const userContext = null + return ( + +{goodsSupplier.id} +{goodsSupplier.name} +{goodsSupplier.supplyProduct} +{goodsSupplier.contactNumber} +{goodsSupplier.description} +{ moment(goodsSupplier.lastUpdateTime).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = goodsSupplier => { + const {GoodsSupplierBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class GoodsSupplierPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const goodsSupplier = this.props.goodsSupplier; + const { id,displayName, supplierProductCount, supplyOrderCount, accountSetCount } = goodsSupplier + const cardsData = {cardsName:"产品供应商",cardsFor: "goodsSupplier",cardsSource: goodsSupplier, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + goodsSupplier: state._goodsSupplier, +}))(Form.create()(GoodsSupplierPermission)) + diff --git a/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.permission.less b/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.preference.js b/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.preference.js index 37ab813ed..1b0b415c9 100644 --- a/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.preference.js +++ b/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.preference.js @@ -303,8 +303,12 @@ class GoodsSupplierPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, supplierProductCount, supplyOrderCount, accountSetCount } = this.props.goodsSupplier - const cardsData = {cardsName:"产品供应商",cardsFor: "goodsSupplier",cardsSource: this.props.goodsSupplier, + const goodsSupplier = this.props.goodsSupplier; + const { id,displayName, supplierProductCount, supplyOrderCount, accountSetCount } = goodsSupplier + + + + const cardsData = {cardsName:"产品供应商",cardsFor: "goodsSupplier",cardsSource: goodsSupplier, subItems: [ ], diff --git a/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.profile.js b/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.profile.js new file mode 100644 index 000000000..fb9d32311 --- /dev/null +++ b/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.profile.js @@ -0,0 +1,95 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './GoodsSupplier.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (goodsSupplier,targetComponent) =>{ + const userContext = null + return ( + +{goodsSupplier.id} +{goodsSupplier.name} +{goodsSupplier.supplyProduct} +{goodsSupplier.contactNumber} +{goodsSupplier.description} +{ moment(goodsSupplier.lastUpdateTime).format('YYYY-MM-DD')} + + + ) +} + + + +class GoodsSupplierProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const goodsSupplier = this.props.goodsSupplier; + const { id,displayName, supplierProductCount, supplyOrderCount, accountSetCount } = goodsSupplier + + const cardsData = {cardsName:"产品供应商",cardsFor: "goodsSupplier",cardsSource: goodsSupplier, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + goodsSupplier: state._goodsSupplier, +}))(Form.create()(GoodsSupplierProfile)) + diff --git a/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.profile.less b/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.search.js b/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.search.js index 275d321f4..574af7078 100644 --- a/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.search.js +++ b/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.searchform.js b/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.searchform.js index c43e28a8b..a751faed0 100644 --- a/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.searchform.js +++ b/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`goodsSupplierList.searchField`] = fieldName - value[`goodsSupplierList.searchVerb`] = searchVerb - value[`goodsSupplierList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,14 +127,15 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'supplyProduct')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'belongTo')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'contactNumber')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'description')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'supplyProduct')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'belongTo')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'contactNumber')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'description')) console.log("the final parameter", paramList) @@ -150,11 +151,12 @@ componentDidMount() { } - params['goodsSupplierList'] = 1 - params['goodsSupplierList.orderBy.0'] = "id" - params['goodsSupplierList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -209,8 +211,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -304,8 +306,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.table.js b/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.table.js index 7da41718c..a07ef75f9 100644 --- a/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.table.js +++ b/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.table.js @@ -40,24 +40,53 @@ class GoodsSupplierTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = GoodsSupplierBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class GoodsSupplierTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class GoodsSupplierTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.updateform.js b/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.updateform.js index bf5dc6593..17eadefa9 100644 --- a/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.updateform.js +++ b/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.updateform.js @@ -262,7 +262,7 @@ class GoodsSupplierUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class GoodsSupplierUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class GoodsSupplierUpdateForm extends Component { initialValue: selectedRow.supplyProduct, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -298,7 +298,7 @@ class GoodsSupplierUpdateForm extends Component { initialValue: selectedRow.contactNumber, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -310,7 +310,7 @@ class GoodsSupplierUpdateForm extends Component { initialValue: selectedRow.description, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/hrinterview/HrInterview.app.js b/bizui/src/bizcomponents/hrinterview/HrInterview.app.js index 4305ac3fa..a6df0c7bc 100644 --- a/bizui/src/bizcomponents/hrinterview/HrInterview.app.js +++ b/bizui/src/bizcomponents/hrinterview/HrInterview.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class HrInterviewBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class HrInterviewBizApp extends React.PureComponent { buildRouters = () =>{ const {HrInterviewDashboard} = GlobalComponents - const {HrInterviewPreference} = GlobalComponents + const {HrInterviewPermission} = GlobalComponents + const {HrInterviewProfile} = GlobalComponents const routers=[ {path:"/hrInterview/:id/dashboard", component: HrInterviewDashboard}, - {path:"/hrInterview/:id/preference", component: HrInterviewPreference}, + {path:"/hrInterview/:id/profile", component: HrInterviewProfile}, + {path:"/hrInterview/:id/permission", component: HrInterviewPermission}, diff --git a/bizui/src/bizcomponents/hrinterview/HrInterview.associateform.js b/bizui/src/bizcomponents/hrinterview/HrInterview.associateform.js index 06effe75b..28817c24c 100644 --- a/bizui/src/bizcomponents/hrinterview/HrInterview.associateform.js +++ b/bizui/src/bizcomponents/hrinterview/HrInterview.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { who: '人力资源部', - interviewTime: '2016-04-23', + interviewTime: '2017-07-11', comments: '软技能,责任感,气质不错啊', } */ @@ -140,7 +140,7 @@ class HrInterviewAssociateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -150,7 +150,7 @@ class HrInterviewAssociateForm extends Component { {getFieldDecorator('interviewTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -160,7 +160,7 @@ class HrInterviewAssociateForm extends Component { {getFieldDecorator('comments', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/hrinterview/HrInterview.associateform.less b/bizui/src/bizcomponents/hrinterview/HrInterview.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/hrinterview/HrInterview.associateform.less +++ b/bizui/src/bizcomponents/hrinterview/HrInterview.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/hrinterview/HrInterview.base.js b/bizui/src/bizcomponents/hrinterview/HrInterview.base.js index c32fe46b4..bc6a008fd 100644 --- a/bizui/src/bizcomponents/hrinterview/HrInterview.base.js +++ b/bizui/src/bizcomponents/hrinterview/HrInterview.base.js @@ -1,100 +1,80 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"人力资源部面试", menuFor: "hrInterview", subItems: [ - {name: 'employeeList', displayName:'员工', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'employeeList', displayName:'员工', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + who: '谁', + interviewTime: '面试时间', + comments: '评论', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'hrInterview') }, - { title: '谁', debugtype: 'string', dataIndex: 'who', width: '9',render: (text, record)=>renderTextCell(text,record) }, - { title: '面试时间', dataIndex: 'interviewTime', render: (text, record) =>renderDateCell(text,record) }, - { title: '评论', debugtype: 'string', dataIndex: 'comments', width: '17',render: (text, record)=>renderTextCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'hrInterview') , sorter: true }, + { title: fieldLabels.who, debugtype: 'string', dataIndex: 'who', width: '9',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.interviewTime, dataIndex: 'interviewTime', render: (text, record) =>renderDateCell(text,record), sorter: true }, + { title: fieldLabels.comments, debugtype: 'string', dataIndex: 'comments', width: '17',render: (text, record)=>renderTextCell(text,record)}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({hrInterview,targetComponent})=>{ -const fieldLabels = { - id: '序号', - who: '谁', - interviewTime: '面试时间', - comments: '评论', + + + const {HrInterviewService} = GlobalComponents + // const userContext = null + return ( + +{hrInterview.id} +{hrInterview.who} +{ moment(hrInterview.interviewTime).format('YYYY-MM-DD')} +{hrInterview.comments} + + {buildTransferModal(hrInterview,targetComponent)} + + ) } + + -const HrInterviewBase={menuData,displayColumns,fieldLabels} +const HrInterviewBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default HrInterviewBase diff --git a/bizui/src/bizcomponents/hrinterview/HrInterview.createform.js b/bizui/src/bizcomponents/hrinterview/HrInterview.createform.js index 20c329576..420ae5d29 100644 --- a/bizui/src/bizcomponents/hrinterview/HrInterview.createform.js +++ b/bizui/src/bizcomponents/hrinterview/HrInterview.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { who: '人力资源部', - interviewTime: '2019-02-02', + interviewTime: '2018-06-30', comments: '软技能,责任感,气质不错啊', } */ @@ -208,7 +208,7 @@ class HrInterviewCreateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -218,7 +218,7 @@ class HrInterviewCreateForm extends Component { {getFieldDecorator('interviewTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -228,7 +228,7 @@ class HrInterviewCreateForm extends Component { {getFieldDecorator('comments', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/hrinterview/HrInterview.dashboard.js b/bizui/src/bizcomponents/hrinterview/HrInterview.dashboard.js index f88d046a8..760e5cb05 100644 --- a/bizui/src/bizcomponents/hrinterview/HrInterview.dashboard.js +++ b/bizui/src/bizcomponents/hrinterview/HrInterview.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -138,6 +138,7 @@ class HrInterviewDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -146,13 +147,17 @@ class HrInterviewDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/hrinterview/HrInterview.model.js b/bizui/src/bizcomponents/hrinterview/HrInterview.model.js index f8029c0db..baaae9789 100644 --- a/bizui/src/bizcomponents/hrinterview/HrInterview.model.js +++ b/bizui/src/bizcomponents/hrinterview/HrInterview.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/hrInterview/${id}/list/\EmployeeList/员工+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/hrInterview/${id}/list/EmployeeList/员工+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateEmployee({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/hrInterview/${id}/list/\EmployeeList/员工列表`, state: newPlayload } + const location = { pathname: `/hrInterview/${id}/list/EmployeeList/员工列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextEmployeeUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/hrinterview/HrInterview.permission.js b/bizui/src/bizcomponents/hrinterview/HrInterview.permission.js new file mode 100644 index 000000000..7603539d7 --- /dev/null +++ b/bizui/src/bizcomponents/hrinterview/HrInterview.permission.js @@ -0,0 +1,86 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './HrInterview.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (hrInterview,targetComponent) =>{ + const userContext = null + return ( + +{hrInterview.id} +{hrInterview.who} +{ moment(hrInterview.interviewTime).format('YYYY-MM-DD')} +{hrInterview.comments} + + + ) +} + + +const renderPermissionSetting = hrInterview => { + const {HrInterviewBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class HrInterviewPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const hrInterview = this.props.hrInterview; + const { id,displayName, employeeCount } = hrInterview + const cardsData = {cardsName:"人力资源部面试",cardsFor: "hrInterview",cardsSource: hrInterview, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + hrInterview: state._hrInterview, +}))(Form.create()(HrInterviewPermission)) + diff --git a/bizui/src/bizcomponents/hrinterview/HrInterview.permission.less b/bizui/src/bizcomponents/hrinterview/HrInterview.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/hrinterview/HrInterview.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/hrinterview/HrInterview.preference.js b/bizui/src/bizcomponents/hrinterview/HrInterview.preference.js index 7b2fa0dc6..d07ff666b 100644 --- a/bizui/src/bizcomponents/hrinterview/HrInterview.preference.js +++ b/bizui/src/bizcomponents/hrinterview/HrInterview.preference.js @@ -301,8 +301,12 @@ class HrInterviewPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, employeeCount } = this.props.hrInterview - const cardsData = {cardsName:"人力资源部面试",cardsFor: "hrInterview",cardsSource: this.props.hrInterview, + const hrInterview = this.props.hrInterview; + const { id,displayName, employeeCount } = hrInterview + + + + const cardsData = {cardsName:"人力资源部面试",cardsFor: "hrInterview",cardsSource: hrInterview, subItems: [ ], diff --git a/bizui/src/bizcomponents/hrinterview/HrInterview.profile.js b/bizui/src/bizcomponents/hrinterview/HrInterview.profile.js new file mode 100644 index 000000000..41002ddc9 --- /dev/null +++ b/bizui/src/bizcomponents/hrinterview/HrInterview.profile.js @@ -0,0 +1,93 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './HrInterview.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (hrInterview,targetComponent) =>{ + const userContext = null + return ( + +{hrInterview.id} +{hrInterview.who} +{ moment(hrInterview.interviewTime).format('YYYY-MM-DD')} +{hrInterview.comments} + + + ) +} + + + +class HrInterviewProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const hrInterview = this.props.hrInterview; + const { id,displayName, employeeCount } = hrInterview + + const cardsData = {cardsName:"人力资源部面试",cardsFor: "hrInterview",cardsSource: hrInterview, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + hrInterview: state._hrInterview, +}))(Form.create()(HrInterviewProfile)) + diff --git a/bizui/src/bizcomponents/hrinterview/HrInterview.profile.less b/bizui/src/bizcomponents/hrinterview/HrInterview.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/hrinterview/HrInterview.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/hrinterview/HrInterview.search.js b/bizui/src/bizcomponents/hrinterview/HrInterview.search.js index 701c5643f..4bbeb2389 100644 --- a/bizui/src/bizcomponents/hrinterview/HrInterview.search.js +++ b/bizui/src/bizcomponents/hrinterview/HrInterview.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/hrinterview/HrInterview.searchform.js b/bizui/src/bizcomponents/hrinterview/HrInterview.searchform.js index 02839b4ce..875c35a11 100644 --- a/bizui/src/bizcomponents/hrinterview/HrInterview.searchform.js +++ b/bizui/src/bizcomponents/hrinterview/HrInterview.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`hrInterviewList.searchField`] = fieldName - value[`hrInterviewList.searchVerb`] = searchVerb - value[`hrInterviewList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,11 +127,12 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'who')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'comments')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'who')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'comments')) console.log("the final parameter", paramList) @@ -147,11 +148,12 @@ componentDidMount() { } - params['hrInterviewList'] = 1 - params['hrInterviewList.orderBy.0'] = "id" - params['hrInterviewList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -206,8 +208,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -270,8 +272,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/hrinterview/HrInterview.table.js b/bizui/src/bizcomponents/hrinterview/HrInterview.table.js index 935510212..ab190a135 100644 --- a/bizui/src/bizcomponents/hrinterview/HrInterview.table.js +++ b/bizui/src/bizcomponents/hrinterview/HrInterview.table.js @@ -40,24 +40,53 @@ class HrInterviewTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = HrInterviewBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class HrInterviewTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class HrInterviewTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/hrinterview/HrInterview.updateform.js b/bizui/src/bizcomponents/hrinterview/HrInterview.updateform.js index 696ef759f..ad1eecbc2 100644 --- a/bizui/src/bizcomponents/hrinterview/HrInterview.updateform.js +++ b/bizui/src/bizcomponents/hrinterview/HrInterview.updateform.js @@ -262,7 +262,7 @@ class HrInterviewUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class HrInterviewUpdateForm extends Component { initialValue: selectedRow.who, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class HrInterviewUpdateForm extends Component { initialValue: selectedRow.interviewTime, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -298,7 +298,7 @@ class HrInterviewUpdateForm extends Component { initialValue: selectedRow.comments, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/index.js b/bizui/src/bizcomponents/index.js index 33a3f451b..9504c89e0 100644 --- a/bizui/src/bizcomponents/index.js +++ b/bizui/src/bizcomponents/index.js @@ -13,6 +13,8 @@ import RetailStoreCountryCenterSearchForm from './retailstorecountrycenter/Retai import RetailStoreCountryCenterCreateForm from './retailstorecountrycenter/RetailStoreCountryCenter.createform'; import RetailStoreCountryCenterAssociateForm from './retailstorecountrycenter/RetailStoreCountryCenter.associateform'; import RetailStoreCountryCenterTable from './retailstorecountrycenter/RetailStoreCountryCenter.table'; +import RetailStoreCountryCenterPermission from './retailstorecountrycenter/RetailStoreCountryCenter.permission'; +import RetailStoreCountryCenterProfile from './retailstorecountrycenter/RetailStoreCountryCenter.profile'; import RetailStoreCountryCenterService from './retailstorecountrycenter/RetailStoreCountryCenter.service'; import RetailStoreCountryCenterUpdateForm from './retailstorecountrycenter/RetailStoreCountryCenter.updateform'; import CatalogBase from './catalog/Catalog.base'; @@ -26,6 +28,8 @@ import CatalogSearchForm from './catalog/Catalog.searchform'; import CatalogCreateForm from './catalog/Catalog.createform'; import CatalogAssociateForm from './catalog/Catalog.associateform'; import CatalogTable from './catalog/Catalog.table'; +import CatalogPermission from './catalog/Catalog.permission'; +import CatalogProfile from './catalog/Catalog.profile'; import CatalogService from './catalog/Catalog.service'; import CatalogUpdateForm from './catalog/Catalog.updateform'; import LevelOneCategoryBase from './levelonecategory/LevelOneCategory.base'; @@ -39,6 +43,8 @@ import LevelOneCategorySearchForm from './levelonecategory/LevelOneCategory.sear import LevelOneCategoryCreateForm from './levelonecategory/LevelOneCategory.createform'; import LevelOneCategoryAssociateForm from './levelonecategory/LevelOneCategory.associateform'; import LevelOneCategoryTable from './levelonecategory/LevelOneCategory.table'; +import LevelOneCategoryPermission from './levelonecategory/LevelOneCategory.permission'; +import LevelOneCategoryProfile from './levelonecategory/LevelOneCategory.profile'; import LevelOneCategoryService from './levelonecategory/LevelOneCategory.service'; import LevelOneCategoryUpdateForm from './levelonecategory/LevelOneCategory.updateform'; import LevelTwoCategoryBase from './leveltwocategory/LevelTwoCategory.base'; @@ -52,6 +58,8 @@ import LevelTwoCategorySearchForm from './leveltwocategory/LevelTwoCategory.sear import LevelTwoCategoryCreateForm from './leveltwocategory/LevelTwoCategory.createform'; import LevelTwoCategoryAssociateForm from './leveltwocategory/LevelTwoCategory.associateform'; import LevelTwoCategoryTable from './leveltwocategory/LevelTwoCategory.table'; +import LevelTwoCategoryPermission from './leveltwocategory/LevelTwoCategory.permission'; +import LevelTwoCategoryProfile from './leveltwocategory/LevelTwoCategory.profile'; import LevelTwoCategoryService from './leveltwocategory/LevelTwoCategory.service'; import LevelTwoCategoryUpdateForm from './leveltwocategory/LevelTwoCategory.updateform'; import LevelThreeCategoryBase from './levelthreecategory/LevelThreeCategory.base'; @@ -65,6 +73,8 @@ import LevelThreeCategorySearchForm from './levelthreecategory/LevelThreeCategor import LevelThreeCategoryCreateForm from './levelthreecategory/LevelThreeCategory.createform'; import LevelThreeCategoryAssociateForm from './levelthreecategory/LevelThreeCategory.associateform'; import LevelThreeCategoryTable from './levelthreecategory/LevelThreeCategory.table'; +import LevelThreeCategoryPermission from './levelthreecategory/LevelThreeCategory.permission'; +import LevelThreeCategoryProfile from './levelthreecategory/LevelThreeCategory.profile'; import LevelThreeCategoryService from './levelthreecategory/LevelThreeCategory.service'; import LevelThreeCategoryUpdateForm from './levelthreecategory/LevelThreeCategory.updateform'; import ProductBase from './product/Product.base'; @@ -78,6 +88,8 @@ import ProductSearchForm from './product/Product.searchform'; import ProductCreateForm from './product/Product.createform'; import ProductAssociateForm from './product/Product.associateform'; import ProductTable from './product/Product.table'; +import ProductPermission from './product/Product.permission'; +import ProductProfile from './product/Product.profile'; import ProductService from './product/Product.service'; import ProductUpdateForm from './product/Product.updateform'; import SkuBase from './sku/Sku.base'; @@ -91,6 +103,8 @@ import SkuSearchForm from './sku/Sku.searchform'; import SkuCreateForm from './sku/Sku.createform'; import SkuAssociateForm from './sku/Sku.associateform'; import SkuTable from './sku/Sku.table'; +import SkuPermission from './sku/Sku.permission'; +import SkuProfile from './sku/Sku.profile'; import SkuService from './sku/Sku.service'; import SkuUpdateForm from './sku/Sku.updateform'; import RetailStoreProvinceCenterBase from './retailstoreprovincecenter/RetailStoreProvinceCenter.base'; @@ -104,6 +118,8 @@ import RetailStoreProvinceCenterSearchForm from './retailstoreprovincecenter/Ret import RetailStoreProvinceCenterCreateForm from './retailstoreprovincecenter/RetailStoreProvinceCenter.createform'; import RetailStoreProvinceCenterAssociateForm from './retailstoreprovincecenter/RetailStoreProvinceCenter.associateform'; import RetailStoreProvinceCenterTable from './retailstoreprovincecenter/RetailStoreProvinceCenter.table'; +import RetailStoreProvinceCenterPermission from './retailstoreprovincecenter/RetailStoreProvinceCenter.permission'; +import RetailStoreProvinceCenterProfile from './retailstoreprovincecenter/RetailStoreProvinceCenter.profile'; import RetailStoreProvinceCenterService from './retailstoreprovincecenter/RetailStoreProvinceCenter.service'; import RetailStoreProvinceCenterUpdateForm from './retailstoreprovincecenter/RetailStoreProvinceCenter.updateform'; import ProvinceCenterDepartmentBase from './provincecenterdepartment/ProvinceCenterDepartment.base'; @@ -117,6 +133,8 @@ import ProvinceCenterDepartmentSearchForm from './provincecenterdepartment/Provi import ProvinceCenterDepartmentCreateForm from './provincecenterdepartment/ProvinceCenterDepartment.createform'; import ProvinceCenterDepartmentAssociateForm from './provincecenterdepartment/ProvinceCenterDepartment.associateform'; import ProvinceCenterDepartmentTable from './provincecenterdepartment/ProvinceCenterDepartment.table'; +import ProvinceCenterDepartmentPermission from './provincecenterdepartment/ProvinceCenterDepartment.permission'; +import ProvinceCenterDepartmentProfile from './provincecenterdepartment/ProvinceCenterDepartment.profile'; import ProvinceCenterDepartmentService from './provincecenterdepartment/ProvinceCenterDepartment.service'; import ProvinceCenterDepartmentUpdateForm from './provincecenterdepartment/ProvinceCenterDepartment.updateform'; import ProvinceCenterEmployeeBase from './provincecenteremployee/ProvinceCenterEmployee.base'; @@ -130,6 +148,8 @@ import ProvinceCenterEmployeeSearchForm from './provincecenteremployee/ProvinceC import ProvinceCenterEmployeeCreateForm from './provincecenteremployee/ProvinceCenterEmployee.createform'; import ProvinceCenterEmployeeAssociateForm from './provincecenteremployee/ProvinceCenterEmployee.associateform'; import ProvinceCenterEmployeeTable from './provincecenteremployee/ProvinceCenterEmployee.table'; +import ProvinceCenterEmployeePermission from './provincecenteremployee/ProvinceCenterEmployee.permission'; +import ProvinceCenterEmployeeProfile from './provincecenteremployee/ProvinceCenterEmployee.profile'; import ProvinceCenterEmployeeService from './provincecenteremployee/ProvinceCenterEmployee.service'; import ProvinceCenterEmployeeUpdateForm from './provincecenteremployee/ProvinceCenterEmployee.updateform'; import RetailStoreCityServiceCenterBase from './retailstorecityservicecenter/RetailStoreCityServiceCenter.base'; @@ -143,6 +163,8 @@ import RetailStoreCityServiceCenterSearchForm from './retailstorecityservicecent import RetailStoreCityServiceCenterCreateForm from './retailstorecityservicecenter/RetailStoreCityServiceCenter.createform'; import RetailStoreCityServiceCenterAssociateForm from './retailstorecityservicecenter/RetailStoreCityServiceCenter.associateform'; import RetailStoreCityServiceCenterTable from './retailstorecityservicecenter/RetailStoreCityServiceCenter.table'; +import RetailStoreCityServiceCenterPermission from './retailstorecityservicecenter/RetailStoreCityServiceCenter.permission'; +import RetailStoreCityServiceCenterProfile from './retailstorecityservicecenter/RetailStoreCityServiceCenter.profile'; import RetailStoreCityServiceCenterService from './retailstorecityservicecenter/RetailStoreCityServiceCenter.service'; import RetailStoreCityServiceCenterUpdateForm from './retailstorecityservicecenter/RetailStoreCityServiceCenter.updateform'; import CityPartnerBase from './citypartner/CityPartner.base'; @@ -156,6 +178,8 @@ import CityPartnerSearchForm from './citypartner/CityPartner.searchform'; import CityPartnerCreateForm from './citypartner/CityPartner.createform'; import CityPartnerAssociateForm from './citypartner/CityPartner.associateform'; import CityPartnerTable from './citypartner/CityPartner.table'; +import CityPartnerPermission from './citypartner/CityPartner.permission'; +import CityPartnerProfile from './citypartner/CityPartner.profile'; import CityPartnerService from './citypartner/CityPartner.service'; import CityPartnerUpdateForm from './citypartner/CityPartner.updateform'; import PotentialCustomerBase from './potentialcustomer/PotentialCustomer.base'; @@ -169,6 +193,8 @@ import PotentialCustomerSearchForm from './potentialcustomer/PotentialCustomer.s import PotentialCustomerCreateForm from './potentialcustomer/PotentialCustomer.createform'; import PotentialCustomerAssociateForm from './potentialcustomer/PotentialCustomer.associateform'; import PotentialCustomerTable from './potentialcustomer/PotentialCustomer.table'; +import PotentialCustomerPermission from './potentialcustomer/PotentialCustomer.permission'; +import PotentialCustomerProfile from './potentialcustomer/PotentialCustomer.profile'; import PotentialCustomerService from './potentialcustomer/PotentialCustomer.service'; import PotentialCustomerUpdateForm from './potentialcustomer/PotentialCustomer.updateform'; import PotentialCustomerContactPersonBase from './potentialcustomercontactperson/PotentialCustomerContactPerson.base'; @@ -182,6 +208,8 @@ import PotentialCustomerContactPersonSearchForm from './potentialcustomercontact import PotentialCustomerContactPersonCreateForm from './potentialcustomercontactperson/PotentialCustomerContactPerson.createform'; import PotentialCustomerContactPersonAssociateForm from './potentialcustomercontactperson/PotentialCustomerContactPerson.associateform'; import PotentialCustomerContactPersonTable from './potentialcustomercontactperson/PotentialCustomerContactPerson.table'; +import PotentialCustomerContactPersonPermission from './potentialcustomercontactperson/PotentialCustomerContactPerson.permission'; +import PotentialCustomerContactPersonProfile from './potentialcustomercontactperson/PotentialCustomerContactPerson.profile'; import PotentialCustomerContactPersonService from './potentialcustomercontactperson/PotentialCustomerContactPerson.service'; import PotentialCustomerContactPersonUpdateForm from './potentialcustomercontactperson/PotentialCustomerContactPerson.updateform'; import PotentialCustomerContactBase from './potentialcustomercontact/PotentialCustomerContact.base'; @@ -195,6 +223,8 @@ import PotentialCustomerContactSearchForm from './potentialcustomercontact/Poten import PotentialCustomerContactCreateForm from './potentialcustomercontact/PotentialCustomerContact.createform'; import PotentialCustomerContactAssociateForm from './potentialcustomercontact/PotentialCustomerContact.associateform'; import PotentialCustomerContactTable from './potentialcustomercontact/PotentialCustomerContact.table'; +import PotentialCustomerContactPermission from './potentialcustomercontact/PotentialCustomerContact.permission'; +import PotentialCustomerContactProfile from './potentialcustomercontact/PotentialCustomerContact.profile'; import PotentialCustomerContactService from './potentialcustomercontact/PotentialCustomerContact.service'; import PotentialCustomerContactUpdateForm from './potentialcustomercontact/PotentialCustomerContact.updateform'; import CityEventBase from './cityevent/CityEvent.base'; @@ -208,6 +238,8 @@ import CityEventSearchForm from './cityevent/CityEvent.searchform'; import CityEventCreateForm from './cityevent/CityEvent.createform'; import CityEventAssociateForm from './cityevent/CityEvent.associateform'; import CityEventTable from './cityevent/CityEvent.table'; +import CityEventPermission from './cityevent/CityEvent.permission'; +import CityEventProfile from './cityevent/CityEvent.profile'; import CityEventService from './cityevent/CityEvent.service'; import CityEventUpdateForm from './cityevent/CityEvent.updateform'; import EventAttendanceBase from './eventattendance/EventAttendance.base'; @@ -221,6 +253,8 @@ import EventAttendanceSearchForm from './eventattendance/EventAttendance.searchf import EventAttendanceCreateForm from './eventattendance/EventAttendance.createform'; import EventAttendanceAssociateForm from './eventattendance/EventAttendance.associateform'; import EventAttendanceTable from './eventattendance/EventAttendance.table'; +import EventAttendancePermission from './eventattendance/EventAttendance.permission'; +import EventAttendanceProfile from './eventattendance/EventAttendance.profile'; import EventAttendanceService from './eventattendance/EventAttendance.service'; import EventAttendanceUpdateForm from './eventattendance/EventAttendance.updateform'; import RetailStoreBase from './retailstore/RetailStore.base'; @@ -234,6 +268,8 @@ import RetailStoreSearchForm from './retailstore/RetailStore.searchform'; import RetailStoreCreateForm from './retailstore/RetailStore.createform'; import RetailStoreAssociateForm from './retailstore/RetailStore.associateform'; import RetailStoreTable from './retailstore/RetailStore.table'; +import RetailStorePermission from './retailstore/RetailStore.permission'; +import RetailStoreProfile from './retailstore/RetailStore.profile'; import RetailStoreService from './retailstore/RetailStore.service'; import RetailStoreUpdateForm from './retailstore/RetailStore.updateform'; import RetailStoreCreationBase from './retailstorecreation/RetailStoreCreation.base'; @@ -247,6 +283,8 @@ import RetailStoreCreationSearchForm from './retailstorecreation/RetailStoreCrea import RetailStoreCreationCreateForm from './retailstorecreation/RetailStoreCreation.createform'; import RetailStoreCreationAssociateForm from './retailstorecreation/RetailStoreCreation.associateform'; import RetailStoreCreationTable from './retailstorecreation/RetailStoreCreation.table'; +import RetailStoreCreationPermission from './retailstorecreation/RetailStoreCreation.permission'; +import RetailStoreCreationProfile from './retailstorecreation/RetailStoreCreation.profile'; import RetailStoreCreationService from './retailstorecreation/RetailStoreCreation.service'; import RetailStoreCreationUpdateForm from './retailstorecreation/RetailStoreCreation.updateform'; import RetailStoreInvestmentInvitationBase from './retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.base'; @@ -260,6 +298,8 @@ import RetailStoreInvestmentInvitationSearchForm from './retailstoreinvestmentin import RetailStoreInvestmentInvitationCreateForm from './retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.createform'; import RetailStoreInvestmentInvitationAssociateForm from './retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.associateform'; import RetailStoreInvestmentInvitationTable from './retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.table'; +import RetailStoreInvestmentInvitationPermission from './retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.permission'; +import RetailStoreInvestmentInvitationProfile from './retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.profile'; import RetailStoreInvestmentInvitationService from './retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.service'; import RetailStoreInvestmentInvitationUpdateForm from './retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.updateform'; import RetailStoreFranchisingBase from './retailstorefranchising/RetailStoreFranchising.base'; @@ -273,6 +313,8 @@ import RetailStoreFranchisingSearchForm from './retailstorefranchising/RetailSto import RetailStoreFranchisingCreateForm from './retailstorefranchising/RetailStoreFranchising.createform'; import RetailStoreFranchisingAssociateForm from './retailstorefranchising/RetailStoreFranchising.associateform'; import RetailStoreFranchisingTable from './retailstorefranchising/RetailStoreFranchising.table'; +import RetailStoreFranchisingPermission from './retailstorefranchising/RetailStoreFranchising.permission'; +import RetailStoreFranchisingProfile from './retailstorefranchising/RetailStoreFranchising.profile'; import RetailStoreFranchisingService from './retailstorefranchising/RetailStoreFranchising.service'; import RetailStoreFranchisingUpdateForm from './retailstorefranchising/RetailStoreFranchising.updateform'; import RetailStoreDecorationBase from './retailstoredecoration/RetailStoreDecoration.base'; @@ -286,6 +328,8 @@ import RetailStoreDecorationSearchForm from './retailstoredecoration/RetailStore import RetailStoreDecorationCreateForm from './retailstoredecoration/RetailStoreDecoration.createform'; import RetailStoreDecorationAssociateForm from './retailstoredecoration/RetailStoreDecoration.associateform'; import RetailStoreDecorationTable from './retailstoredecoration/RetailStoreDecoration.table'; +import RetailStoreDecorationPermission from './retailstoredecoration/RetailStoreDecoration.permission'; +import RetailStoreDecorationProfile from './retailstoredecoration/RetailStoreDecoration.profile'; import RetailStoreDecorationService from './retailstoredecoration/RetailStoreDecoration.service'; import RetailStoreDecorationUpdateForm from './retailstoredecoration/RetailStoreDecoration.updateform'; import RetailStoreOpeningBase from './retailstoreopening/RetailStoreOpening.base'; @@ -299,6 +343,8 @@ import RetailStoreOpeningSearchForm from './retailstoreopening/RetailStoreOpenin import RetailStoreOpeningCreateForm from './retailstoreopening/RetailStoreOpening.createform'; import RetailStoreOpeningAssociateForm from './retailstoreopening/RetailStoreOpening.associateform'; import RetailStoreOpeningTable from './retailstoreopening/RetailStoreOpening.table'; +import RetailStoreOpeningPermission from './retailstoreopening/RetailStoreOpening.permission'; +import RetailStoreOpeningProfile from './retailstoreopening/RetailStoreOpening.profile'; import RetailStoreOpeningService from './retailstoreopening/RetailStoreOpening.service'; import RetailStoreOpeningUpdateForm from './retailstoreopening/RetailStoreOpening.updateform'; import RetailStoreClosingBase from './retailstoreclosing/RetailStoreClosing.base'; @@ -312,6 +358,8 @@ import RetailStoreClosingSearchForm from './retailstoreclosing/RetailStoreClosin import RetailStoreClosingCreateForm from './retailstoreclosing/RetailStoreClosing.createform'; import RetailStoreClosingAssociateForm from './retailstoreclosing/RetailStoreClosing.associateform'; import RetailStoreClosingTable from './retailstoreclosing/RetailStoreClosing.table'; +import RetailStoreClosingPermission from './retailstoreclosing/RetailStoreClosing.permission'; +import RetailStoreClosingProfile from './retailstoreclosing/RetailStoreClosing.profile'; import RetailStoreClosingService from './retailstoreclosing/RetailStoreClosing.service'; import RetailStoreClosingUpdateForm from './retailstoreclosing/RetailStoreClosing.updateform'; import RetailStoreMemberBase from './retailstoremember/RetailStoreMember.base'; @@ -325,6 +373,8 @@ import RetailStoreMemberSearchForm from './retailstoremember/RetailStoreMember.s import RetailStoreMemberCreateForm from './retailstoremember/RetailStoreMember.createform'; import RetailStoreMemberAssociateForm from './retailstoremember/RetailStoreMember.associateform'; import RetailStoreMemberTable from './retailstoremember/RetailStoreMember.table'; +import RetailStoreMemberPermission from './retailstoremember/RetailStoreMember.permission'; +import RetailStoreMemberProfile from './retailstoremember/RetailStoreMember.profile'; import RetailStoreMemberService from './retailstoremember/RetailStoreMember.service'; import RetailStoreMemberUpdateForm from './retailstoremember/RetailStoreMember.updateform'; import ConsumerOrderBase from './consumerorder/ConsumerOrder.base'; @@ -338,6 +388,8 @@ import ConsumerOrderSearchForm from './consumerorder/ConsumerOrder.searchform'; import ConsumerOrderCreateForm from './consumerorder/ConsumerOrder.createform'; import ConsumerOrderAssociateForm from './consumerorder/ConsumerOrder.associateform'; import ConsumerOrderTable from './consumerorder/ConsumerOrder.table'; +import ConsumerOrderPermission from './consumerorder/ConsumerOrder.permission'; +import ConsumerOrderProfile from './consumerorder/ConsumerOrder.profile'; import ConsumerOrderService from './consumerorder/ConsumerOrder.service'; import ConsumerOrderUpdateForm from './consumerorder/ConsumerOrder.updateform'; import ConsumerOrderConfirmationBase from './consumerorderconfirmation/ConsumerOrderConfirmation.base'; @@ -351,6 +403,8 @@ import ConsumerOrderConfirmationSearchForm from './consumerorderconfirmation/Con import ConsumerOrderConfirmationCreateForm from './consumerorderconfirmation/ConsumerOrderConfirmation.createform'; import ConsumerOrderConfirmationAssociateForm from './consumerorderconfirmation/ConsumerOrderConfirmation.associateform'; import ConsumerOrderConfirmationTable from './consumerorderconfirmation/ConsumerOrderConfirmation.table'; +import ConsumerOrderConfirmationPermission from './consumerorderconfirmation/ConsumerOrderConfirmation.permission'; +import ConsumerOrderConfirmationProfile from './consumerorderconfirmation/ConsumerOrderConfirmation.profile'; import ConsumerOrderConfirmationService from './consumerorderconfirmation/ConsumerOrderConfirmation.service'; import ConsumerOrderConfirmationUpdateForm from './consumerorderconfirmation/ConsumerOrderConfirmation.updateform'; import ConsumerOrderApprovalBase from './consumerorderapproval/ConsumerOrderApproval.base'; @@ -364,6 +418,8 @@ import ConsumerOrderApprovalSearchForm from './consumerorderapproval/ConsumerOrd import ConsumerOrderApprovalCreateForm from './consumerorderapproval/ConsumerOrderApproval.createform'; import ConsumerOrderApprovalAssociateForm from './consumerorderapproval/ConsumerOrderApproval.associateform'; import ConsumerOrderApprovalTable from './consumerorderapproval/ConsumerOrderApproval.table'; +import ConsumerOrderApprovalPermission from './consumerorderapproval/ConsumerOrderApproval.permission'; +import ConsumerOrderApprovalProfile from './consumerorderapproval/ConsumerOrderApproval.profile'; import ConsumerOrderApprovalService from './consumerorderapproval/ConsumerOrderApproval.service'; import ConsumerOrderApprovalUpdateForm from './consumerorderapproval/ConsumerOrderApproval.updateform'; import ConsumerOrderProcessingBase from './consumerorderprocessing/ConsumerOrderProcessing.base'; @@ -377,6 +433,8 @@ import ConsumerOrderProcessingSearchForm from './consumerorderprocessing/Consume import ConsumerOrderProcessingCreateForm from './consumerorderprocessing/ConsumerOrderProcessing.createform'; import ConsumerOrderProcessingAssociateForm from './consumerorderprocessing/ConsumerOrderProcessing.associateform'; import ConsumerOrderProcessingTable from './consumerorderprocessing/ConsumerOrderProcessing.table'; +import ConsumerOrderProcessingPermission from './consumerorderprocessing/ConsumerOrderProcessing.permission'; +import ConsumerOrderProcessingProfile from './consumerorderprocessing/ConsumerOrderProcessing.profile'; import ConsumerOrderProcessingService from './consumerorderprocessing/ConsumerOrderProcessing.service'; import ConsumerOrderProcessingUpdateForm from './consumerorderprocessing/ConsumerOrderProcessing.updateform'; import ConsumerOrderShipmentBase from './consumerordershipment/ConsumerOrderShipment.base'; @@ -390,6 +448,8 @@ import ConsumerOrderShipmentSearchForm from './consumerordershipment/ConsumerOrd import ConsumerOrderShipmentCreateForm from './consumerordershipment/ConsumerOrderShipment.createform'; import ConsumerOrderShipmentAssociateForm from './consumerordershipment/ConsumerOrderShipment.associateform'; import ConsumerOrderShipmentTable from './consumerordershipment/ConsumerOrderShipment.table'; +import ConsumerOrderShipmentPermission from './consumerordershipment/ConsumerOrderShipment.permission'; +import ConsumerOrderShipmentProfile from './consumerordershipment/ConsumerOrderShipment.profile'; import ConsumerOrderShipmentService from './consumerordershipment/ConsumerOrderShipment.service'; import ConsumerOrderShipmentUpdateForm from './consumerordershipment/ConsumerOrderShipment.updateform'; import ConsumerOrderDeliveryBase from './consumerorderdelivery/ConsumerOrderDelivery.base'; @@ -403,6 +463,8 @@ import ConsumerOrderDeliverySearchForm from './consumerorderdelivery/ConsumerOrd import ConsumerOrderDeliveryCreateForm from './consumerorderdelivery/ConsumerOrderDelivery.createform'; import ConsumerOrderDeliveryAssociateForm from './consumerorderdelivery/ConsumerOrderDelivery.associateform'; import ConsumerOrderDeliveryTable from './consumerorderdelivery/ConsumerOrderDelivery.table'; +import ConsumerOrderDeliveryPermission from './consumerorderdelivery/ConsumerOrderDelivery.permission'; +import ConsumerOrderDeliveryProfile from './consumerorderdelivery/ConsumerOrderDelivery.profile'; import ConsumerOrderDeliveryService from './consumerorderdelivery/ConsumerOrderDelivery.service'; import ConsumerOrderDeliveryUpdateForm from './consumerorderdelivery/ConsumerOrderDelivery.updateform'; import ConsumerOrderLineItemBase from './consumerorderlineitem/ConsumerOrderLineItem.base'; @@ -416,6 +478,8 @@ import ConsumerOrderLineItemSearchForm from './consumerorderlineitem/ConsumerOrd import ConsumerOrderLineItemCreateForm from './consumerorderlineitem/ConsumerOrderLineItem.createform'; import ConsumerOrderLineItemAssociateForm from './consumerorderlineitem/ConsumerOrderLineItem.associateform'; import ConsumerOrderLineItemTable from './consumerorderlineitem/ConsumerOrderLineItem.table'; +import ConsumerOrderLineItemPermission from './consumerorderlineitem/ConsumerOrderLineItem.permission'; +import ConsumerOrderLineItemProfile from './consumerorderlineitem/ConsumerOrderLineItem.profile'; import ConsumerOrderLineItemService from './consumerorderlineitem/ConsumerOrderLineItem.service'; import ConsumerOrderLineItemUpdateForm from './consumerorderlineitem/ConsumerOrderLineItem.updateform'; import ConsumerOrderShippingGroupBase from './consumerordershippinggroup/ConsumerOrderShippingGroup.base'; @@ -429,6 +493,8 @@ import ConsumerOrderShippingGroupSearchForm from './consumerordershippinggroup/C import ConsumerOrderShippingGroupCreateForm from './consumerordershippinggroup/ConsumerOrderShippingGroup.createform'; import ConsumerOrderShippingGroupAssociateForm from './consumerordershippinggroup/ConsumerOrderShippingGroup.associateform'; import ConsumerOrderShippingGroupTable from './consumerordershippinggroup/ConsumerOrderShippingGroup.table'; +import ConsumerOrderShippingGroupPermission from './consumerordershippinggroup/ConsumerOrderShippingGroup.permission'; +import ConsumerOrderShippingGroupProfile from './consumerordershippinggroup/ConsumerOrderShippingGroup.profile'; import ConsumerOrderShippingGroupService from './consumerordershippinggroup/ConsumerOrderShippingGroup.service'; import ConsumerOrderShippingGroupUpdateForm from './consumerordershippinggroup/ConsumerOrderShippingGroup.updateform'; import ConsumerOrderPaymentGroupBase from './consumerorderpaymentgroup/ConsumerOrderPaymentGroup.base'; @@ -442,6 +508,8 @@ import ConsumerOrderPaymentGroupSearchForm from './consumerorderpaymentgroup/Con import ConsumerOrderPaymentGroupCreateForm from './consumerorderpaymentgroup/ConsumerOrderPaymentGroup.createform'; import ConsumerOrderPaymentGroupAssociateForm from './consumerorderpaymentgroup/ConsumerOrderPaymentGroup.associateform'; import ConsumerOrderPaymentGroupTable from './consumerorderpaymentgroup/ConsumerOrderPaymentGroup.table'; +import ConsumerOrderPaymentGroupPermission from './consumerorderpaymentgroup/ConsumerOrderPaymentGroup.permission'; +import ConsumerOrderPaymentGroupProfile from './consumerorderpaymentgroup/ConsumerOrderPaymentGroup.profile'; import ConsumerOrderPaymentGroupService from './consumerorderpaymentgroup/ConsumerOrderPaymentGroup.service'; import ConsumerOrderPaymentGroupUpdateForm from './consumerorderpaymentgroup/ConsumerOrderPaymentGroup.updateform'; import ConsumerOrderPriceAdjustmentBase from './consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.base'; @@ -455,6 +523,8 @@ import ConsumerOrderPriceAdjustmentSearchForm from './consumerorderpriceadjustme import ConsumerOrderPriceAdjustmentCreateForm from './consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.createform'; import ConsumerOrderPriceAdjustmentAssociateForm from './consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.associateform'; import ConsumerOrderPriceAdjustmentTable from './consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.table'; +import ConsumerOrderPriceAdjustmentPermission from './consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.permission'; +import ConsumerOrderPriceAdjustmentProfile from './consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.profile'; import ConsumerOrderPriceAdjustmentService from './consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.service'; import ConsumerOrderPriceAdjustmentUpdateForm from './consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.updateform'; import RetailStoreMemberCouponBase from './retailstoremembercoupon/RetailStoreMemberCoupon.base'; @@ -468,6 +538,8 @@ import RetailStoreMemberCouponSearchForm from './retailstoremembercoupon/RetailS import RetailStoreMemberCouponCreateForm from './retailstoremembercoupon/RetailStoreMemberCoupon.createform'; import RetailStoreMemberCouponAssociateForm from './retailstoremembercoupon/RetailStoreMemberCoupon.associateform'; import RetailStoreMemberCouponTable from './retailstoremembercoupon/RetailStoreMemberCoupon.table'; +import RetailStoreMemberCouponPermission from './retailstoremembercoupon/RetailStoreMemberCoupon.permission'; +import RetailStoreMemberCouponProfile from './retailstoremembercoupon/RetailStoreMemberCoupon.profile'; import RetailStoreMemberCouponService from './retailstoremembercoupon/RetailStoreMemberCoupon.service'; import RetailStoreMemberCouponUpdateForm from './retailstoremembercoupon/RetailStoreMemberCoupon.updateform'; import MemberWishlistBase from './memberwishlist/MemberWishlist.base'; @@ -481,6 +553,8 @@ import MemberWishlistSearchForm from './memberwishlist/MemberWishlist.searchform import MemberWishlistCreateForm from './memberwishlist/MemberWishlist.createform'; import MemberWishlistAssociateForm from './memberwishlist/MemberWishlist.associateform'; import MemberWishlistTable from './memberwishlist/MemberWishlist.table'; +import MemberWishlistPermission from './memberwishlist/MemberWishlist.permission'; +import MemberWishlistProfile from './memberwishlist/MemberWishlist.profile'; import MemberWishlistService from './memberwishlist/MemberWishlist.service'; import MemberWishlistUpdateForm from './memberwishlist/MemberWishlist.updateform'; import MemberRewardPointBase from './memberrewardpoint/MemberRewardPoint.base'; @@ -494,6 +568,8 @@ import MemberRewardPointSearchForm from './memberrewardpoint/MemberRewardPoint.s import MemberRewardPointCreateForm from './memberrewardpoint/MemberRewardPoint.createform'; import MemberRewardPointAssociateForm from './memberrewardpoint/MemberRewardPoint.associateform'; import MemberRewardPointTable from './memberrewardpoint/MemberRewardPoint.table'; +import MemberRewardPointPermission from './memberrewardpoint/MemberRewardPoint.permission'; +import MemberRewardPointProfile from './memberrewardpoint/MemberRewardPoint.profile'; import MemberRewardPointService from './memberrewardpoint/MemberRewardPoint.service'; import MemberRewardPointUpdateForm from './memberrewardpoint/MemberRewardPoint.updateform'; import MemberRewardPointRedemptionBase from './memberrewardpointredemption/MemberRewardPointRedemption.base'; @@ -507,6 +583,8 @@ import MemberRewardPointRedemptionSearchForm from './memberrewardpointredemption import MemberRewardPointRedemptionCreateForm from './memberrewardpointredemption/MemberRewardPointRedemption.createform'; import MemberRewardPointRedemptionAssociateForm from './memberrewardpointredemption/MemberRewardPointRedemption.associateform'; import MemberRewardPointRedemptionTable from './memberrewardpointredemption/MemberRewardPointRedemption.table'; +import MemberRewardPointRedemptionPermission from './memberrewardpointredemption/MemberRewardPointRedemption.permission'; +import MemberRewardPointRedemptionProfile from './memberrewardpointredemption/MemberRewardPointRedemption.profile'; import MemberRewardPointRedemptionService from './memberrewardpointredemption/MemberRewardPointRedemption.service'; import MemberRewardPointRedemptionUpdateForm from './memberrewardpointredemption/MemberRewardPointRedemption.updateform'; import MemberWishlistProductBase from './memberwishlistproduct/MemberWishlistProduct.base'; @@ -520,6 +598,8 @@ import MemberWishlistProductSearchForm from './memberwishlistproduct/MemberWishl import MemberWishlistProductCreateForm from './memberwishlistproduct/MemberWishlistProduct.createform'; import MemberWishlistProductAssociateForm from './memberwishlistproduct/MemberWishlistProduct.associateform'; import MemberWishlistProductTable from './memberwishlistproduct/MemberWishlistProduct.table'; +import MemberWishlistProductPermission from './memberwishlistproduct/MemberWishlistProduct.permission'; +import MemberWishlistProductProfile from './memberwishlistproduct/MemberWishlistProduct.profile'; import MemberWishlistProductService from './memberwishlistproduct/MemberWishlistProduct.service'; import MemberWishlistProductUpdateForm from './memberwishlistproduct/MemberWishlistProduct.updateform'; import RetailStoreMemberAddressBase from './retailstorememberaddress/RetailStoreMemberAddress.base'; @@ -533,6 +613,8 @@ import RetailStoreMemberAddressSearchForm from './retailstorememberaddress/Retai import RetailStoreMemberAddressCreateForm from './retailstorememberaddress/RetailStoreMemberAddress.createform'; import RetailStoreMemberAddressAssociateForm from './retailstorememberaddress/RetailStoreMemberAddress.associateform'; import RetailStoreMemberAddressTable from './retailstorememberaddress/RetailStoreMemberAddress.table'; +import RetailStoreMemberAddressPermission from './retailstorememberaddress/RetailStoreMemberAddress.permission'; +import RetailStoreMemberAddressProfile from './retailstorememberaddress/RetailStoreMemberAddress.profile'; import RetailStoreMemberAddressService from './retailstorememberaddress/RetailStoreMemberAddress.service'; import RetailStoreMemberAddressUpdateForm from './retailstorememberaddress/RetailStoreMemberAddress.updateform'; import RetailStoreMemberGiftCardBase from './retailstoremembergiftcard/RetailStoreMemberGiftCard.base'; @@ -546,6 +628,8 @@ import RetailStoreMemberGiftCardSearchForm from './retailstoremembergiftcard/Ret import RetailStoreMemberGiftCardCreateForm from './retailstoremembergiftcard/RetailStoreMemberGiftCard.createform'; import RetailStoreMemberGiftCardAssociateForm from './retailstoremembergiftcard/RetailStoreMemberGiftCard.associateform'; import RetailStoreMemberGiftCardTable from './retailstoremembergiftcard/RetailStoreMemberGiftCard.table'; +import RetailStoreMemberGiftCardPermission from './retailstoremembergiftcard/RetailStoreMemberGiftCard.permission'; +import RetailStoreMemberGiftCardProfile from './retailstoremembergiftcard/RetailStoreMemberGiftCard.profile'; import RetailStoreMemberGiftCardService from './retailstoremembergiftcard/RetailStoreMemberGiftCard.service'; import RetailStoreMemberGiftCardUpdateForm from './retailstoremembergiftcard/RetailStoreMemberGiftCard.updateform'; import RetailStoreMemberGiftCardConsumeRecordBase from './retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.base'; @@ -559,6 +643,8 @@ import RetailStoreMemberGiftCardConsumeRecordSearchForm from './retailstoremembe import RetailStoreMemberGiftCardConsumeRecordCreateForm from './retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.createform'; import RetailStoreMemberGiftCardConsumeRecordAssociateForm from './retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.associateform'; import RetailStoreMemberGiftCardConsumeRecordTable from './retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.table'; +import RetailStoreMemberGiftCardConsumeRecordPermission from './retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.permission'; +import RetailStoreMemberGiftCardConsumeRecordProfile from './retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.profile'; import RetailStoreMemberGiftCardConsumeRecordService from './retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.service'; import RetailStoreMemberGiftCardConsumeRecordUpdateForm from './retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.updateform'; import GoodsSupplierBase from './goodssupplier/GoodsSupplier.base'; @@ -572,6 +658,8 @@ import GoodsSupplierSearchForm from './goodssupplier/GoodsSupplier.searchform'; import GoodsSupplierCreateForm from './goodssupplier/GoodsSupplier.createform'; import GoodsSupplierAssociateForm from './goodssupplier/GoodsSupplier.associateform'; import GoodsSupplierTable from './goodssupplier/GoodsSupplier.table'; +import GoodsSupplierPermission from './goodssupplier/GoodsSupplier.permission'; +import GoodsSupplierProfile from './goodssupplier/GoodsSupplier.profile'; import GoodsSupplierService from './goodssupplier/GoodsSupplier.service'; import GoodsSupplierUpdateForm from './goodssupplier/GoodsSupplier.updateform'; import SupplierProductBase from './supplierproduct/SupplierProduct.base'; @@ -585,6 +673,8 @@ import SupplierProductSearchForm from './supplierproduct/SupplierProduct.searchf import SupplierProductCreateForm from './supplierproduct/SupplierProduct.createform'; import SupplierProductAssociateForm from './supplierproduct/SupplierProduct.associateform'; import SupplierProductTable from './supplierproduct/SupplierProduct.table'; +import SupplierProductPermission from './supplierproduct/SupplierProduct.permission'; +import SupplierProductProfile from './supplierproduct/SupplierProduct.profile'; import SupplierProductService from './supplierproduct/SupplierProduct.service'; import SupplierProductUpdateForm from './supplierproduct/SupplierProduct.updateform'; import ProductSupplyDurationBase from './productsupplyduration/ProductSupplyDuration.base'; @@ -598,6 +688,8 @@ import ProductSupplyDurationSearchForm from './productsupplyduration/ProductSupp import ProductSupplyDurationCreateForm from './productsupplyduration/ProductSupplyDuration.createform'; import ProductSupplyDurationAssociateForm from './productsupplyduration/ProductSupplyDuration.associateform'; import ProductSupplyDurationTable from './productsupplyduration/ProductSupplyDuration.table'; +import ProductSupplyDurationPermission from './productsupplyduration/ProductSupplyDuration.permission'; +import ProductSupplyDurationProfile from './productsupplyduration/ProductSupplyDuration.profile'; import ProductSupplyDurationService from './productsupplyduration/ProductSupplyDuration.service'; import ProductSupplyDurationUpdateForm from './productsupplyduration/ProductSupplyDuration.updateform'; import SupplyOrderBase from './supplyorder/SupplyOrder.base'; @@ -611,6 +703,8 @@ import SupplyOrderSearchForm from './supplyorder/SupplyOrder.searchform'; import SupplyOrderCreateForm from './supplyorder/SupplyOrder.createform'; import SupplyOrderAssociateForm from './supplyorder/SupplyOrder.associateform'; import SupplyOrderTable from './supplyorder/SupplyOrder.table'; +import SupplyOrderPermission from './supplyorder/SupplyOrder.permission'; +import SupplyOrderProfile from './supplyorder/SupplyOrder.profile'; import SupplyOrderService from './supplyorder/SupplyOrder.service'; import SupplyOrderUpdateForm from './supplyorder/SupplyOrder.updateform'; import SupplyOrderConfirmationBase from './supplyorderconfirmation/SupplyOrderConfirmation.base'; @@ -624,6 +718,8 @@ import SupplyOrderConfirmationSearchForm from './supplyorderconfirmation/SupplyO import SupplyOrderConfirmationCreateForm from './supplyorderconfirmation/SupplyOrderConfirmation.createform'; import SupplyOrderConfirmationAssociateForm from './supplyorderconfirmation/SupplyOrderConfirmation.associateform'; import SupplyOrderConfirmationTable from './supplyorderconfirmation/SupplyOrderConfirmation.table'; +import SupplyOrderConfirmationPermission from './supplyorderconfirmation/SupplyOrderConfirmation.permission'; +import SupplyOrderConfirmationProfile from './supplyorderconfirmation/SupplyOrderConfirmation.profile'; import SupplyOrderConfirmationService from './supplyorderconfirmation/SupplyOrderConfirmation.service'; import SupplyOrderConfirmationUpdateForm from './supplyorderconfirmation/SupplyOrderConfirmation.updateform'; import SupplyOrderApprovalBase from './supplyorderapproval/SupplyOrderApproval.base'; @@ -637,6 +733,8 @@ import SupplyOrderApprovalSearchForm from './supplyorderapproval/SupplyOrderAppr import SupplyOrderApprovalCreateForm from './supplyorderapproval/SupplyOrderApproval.createform'; import SupplyOrderApprovalAssociateForm from './supplyorderapproval/SupplyOrderApproval.associateform'; import SupplyOrderApprovalTable from './supplyorderapproval/SupplyOrderApproval.table'; +import SupplyOrderApprovalPermission from './supplyorderapproval/SupplyOrderApproval.permission'; +import SupplyOrderApprovalProfile from './supplyorderapproval/SupplyOrderApproval.profile'; import SupplyOrderApprovalService from './supplyorderapproval/SupplyOrderApproval.service'; import SupplyOrderApprovalUpdateForm from './supplyorderapproval/SupplyOrderApproval.updateform'; import SupplyOrderProcessingBase from './supplyorderprocessing/SupplyOrderProcessing.base'; @@ -650,6 +748,8 @@ import SupplyOrderProcessingSearchForm from './supplyorderprocessing/SupplyOrder import SupplyOrderProcessingCreateForm from './supplyorderprocessing/SupplyOrderProcessing.createform'; import SupplyOrderProcessingAssociateForm from './supplyorderprocessing/SupplyOrderProcessing.associateform'; import SupplyOrderProcessingTable from './supplyorderprocessing/SupplyOrderProcessing.table'; +import SupplyOrderProcessingPermission from './supplyorderprocessing/SupplyOrderProcessing.permission'; +import SupplyOrderProcessingProfile from './supplyorderprocessing/SupplyOrderProcessing.profile'; import SupplyOrderProcessingService from './supplyorderprocessing/SupplyOrderProcessing.service'; import SupplyOrderProcessingUpdateForm from './supplyorderprocessing/SupplyOrderProcessing.updateform'; import SupplyOrderPickingBase from './supplyorderpicking/SupplyOrderPicking.base'; @@ -663,6 +763,8 @@ import SupplyOrderPickingSearchForm from './supplyorderpicking/SupplyOrderPickin import SupplyOrderPickingCreateForm from './supplyorderpicking/SupplyOrderPicking.createform'; import SupplyOrderPickingAssociateForm from './supplyorderpicking/SupplyOrderPicking.associateform'; import SupplyOrderPickingTable from './supplyorderpicking/SupplyOrderPicking.table'; +import SupplyOrderPickingPermission from './supplyorderpicking/SupplyOrderPicking.permission'; +import SupplyOrderPickingProfile from './supplyorderpicking/SupplyOrderPicking.profile'; import SupplyOrderPickingService from './supplyorderpicking/SupplyOrderPicking.service'; import SupplyOrderPickingUpdateForm from './supplyorderpicking/SupplyOrderPicking.updateform'; import SupplyOrderShipmentBase from './supplyordershipment/SupplyOrderShipment.base'; @@ -676,6 +778,8 @@ import SupplyOrderShipmentSearchForm from './supplyordershipment/SupplyOrderShip import SupplyOrderShipmentCreateForm from './supplyordershipment/SupplyOrderShipment.createform'; import SupplyOrderShipmentAssociateForm from './supplyordershipment/SupplyOrderShipment.associateform'; import SupplyOrderShipmentTable from './supplyordershipment/SupplyOrderShipment.table'; +import SupplyOrderShipmentPermission from './supplyordershipment/SupplyOrderShipment.permission'; +import SupplyOrderShipmentProfile from './supplyordershipment/SupplyOrderShipment.profile'; import SupplyOrderShipmentService from './supplyordershipment/SupplyOrderShipment.service'; import SupplyOrderShipmentUpdateForm from './supplyordershipment/SupplyOrderShipment.updateform'; import SupplyOrderDeliveryBase from './supplyorderdelivery/SupplyOrderDelivery.base'; @@ -689,6 +793,8 @@ import SupplyOrderDeliverySearchForm from './supplyorderdelivery/SupplyOrderDeli import SupplyOrderDeliveryCreateForm from './supplyorderdelivery/SupplyOrderDelivery.createform'; import SupplyOrderDeliveryAssociateForm from './supplyorderdelivery/SupplyOrderDelivery.associateform'; import SupplyOrderDeliveryTable from './supplyorderdelivery/SupplyOrderDelivery.table'; +import SupplyOrderDeliveryPermission from './supplyorderdelivery/SupplyOrderDelivery.permission'; +import SupplyOrderDeliveryProfile from './supplyorderdelivery/SupplyOrderDelivery.profile'; import SupplyOrderDeliveryService from './supplyorderdelivery/SupplyOrderDelivery.service'; import SupplyOrderDeliveryUpdateForm from './supplyorderdelivery/SupplyOrderDelivery.updateform'; import SupplyOrderLineItemBase from './supplyorderlineitem/SupplyOrderLineItem.base'; @@ -702,6 +808,8 @@ import SupplyOrderLineItemSearchForm from './supplyorderlineitem/SupplyOrderLine import SupplyOrderLineItemCreateForm from './supplyorderlineitem/SupplyOrderLineItem.createform'; import SupplyOrderLineItemAssociateForm from './supplyorderlineitem/SupplyOrderLineItem.associateform'; import SupplyOrderLineItemTable from './supplyorderlineitem/SupplyOrderLineItem.table'; +import SupplyOrderLineItemPermission from './supplyorderlineitem/SupplyOrderLineItem.permission'; +import SupplyOrderLineItemProfile from './supplyorderlineitem/SupplyOrderLineItem.profile'; import SupplyOrderLineItemService from './supplyorderlineitem/SupplyOrderLineItem.service'; import SupplyOrderLineItemUpdateForm from './supplyorderlineitem/SupplyOrderLineItem.updateform'; import SupplyOrderShippingGroupBase from './supplyordershippinggroup/SupplyOrderShippingGroup.base'; @@ -715,6 +823,8 @@ import SupplyOrderShippingGroupSearchForm from './supplyordershippinggroup/Suppl import SupplyOrderShippingGroupCreateForm from './supplyordershippinggroup/SupplyOrderShippingGroup.createform'; import SupplyOrderShippingGroupAssociateForm from './supplyordershippinggroup/SupplyOrderShippingGroup.associateform'; import SupplyOrderShippingGroupTable from './supplyordershippinggroup/SupplyOrderShippingGroup.table'; +import SupplyOrderShippingGroupPermission from './supplyordershippinggroup/SupplyOrderShippingGroup.permission'; +import SupplyOrderShippingGroupProfile from './supplyordershippinggroup/SupplyOrderShippingGroup.profile'; import SupplyOrderShippingGroupService from './supplyordershippinggroup/SupplyOrderShippingGroup.service'; import SupplyOrderShippingGroupUpdateForm from './supplyordershippinggroup/SupplyOrderShippingGroup.updateform'; import SupplyOrderPaymentGroupBase from './supplyorderpaymentgroup/SupplyOrderPaymentGroup.base'; @@ -728,6 +838,8 @@ import SupplyOrderPaymentGroupSearchForm from './supplyorderpaymentgroup/SupplyO import SupplyOrderPaymentGroupCreateForm from './supplyorderpaymentgroup/SupplyOrderPaymentGroup.createform'; import SupplyOrderPaymentGroupAssociateForm from './supplyorderpaymentgroup/SupplyOrderPaymentGroup.associateform'; import SupplyOrderPaymentGroupTable from './supplyorderpaymentgroup/SupplyOrderPaymentGroup.table'; +import SupplyOrderPaymentGroupPermission from './supplyorderpaymentgroup/SupplyOrderPaymentGroup.permission'; +import SupplyOrderPaymentGroupProfile from './supplyorderpaymentgroup/SupplyOrderPaymentGroup.profile'; import SupplyOrderPaymentGroupService from './supplyorderpaymentgroup/SupplyOrderPaymentGroup.service'; import SupplyOrderPaymentGroupUpdateForm from './supplyorderpaymentgroup/SupplyOrderPaymentGroup.updateform'; import RetailStoreOrderBase from './retailstoreorder/RetailStoreOrder.base'; @@ -741,6 +853,8 @@ import RetailStoreOrderSearchForm from './retailstoreorder/RetailStoreOrder.sear import RetailStoreOrderCreateForm from './retailstoreorder/RetailStoreOrder.createform'; import RetailStoreOrderAssociateForm from './retailstoreorder/RetailStoreOrder.associateform'; import RetailStoreOrderTable from './retailstoreorder/RetailStoreOrder.table'; +import RetailStoreOrderPermission from './retailstoreorder/RetailStoreOrder.permission'; +import RetailStoreOrderProfile from './retailstoreorder/RetailStoreOrder.profile'; import RetailStoreOrderService from './retailstoreorder/RetailStoreOrder.service'; import RetailStoreOrderUpdateForm from './retailstoreorder/RetailStoreOrder.updateform'; import RetailStoreOrderConfirmationBase from './retailstoreorderconfirmation/RetailStoreOrderConfirmation.base'; @@ -754,6 +868,8 @@ import RetailStoreOrderConfirmationSearchForm from './retailstoreorderconfirmati import RetailStoreOrderConfirmationCreateForm from './retailstoreorderconfirmation/RetailStoreOrderConfirmation.createform'; import RetailStoreOrderConfirmationAssociateForm from './retailstoreorderconfirmation/RetailStoreOrderConfirmation.associateform'; import RetailStoreOrderConfirmationTable from './retailstoreorderconfirmation/RetailStoreOrderConfirmation.table'; +import RetailStoreOrderConfirmationPermission from './retailstoreorderconfirmation/RetailStoreOrderConfirmation.permission'; +import RetailStoreOrderConfirmationProfile from './retailstoreorderconfirmation/RetailStoreOrderConfirmation.profile'; import RetailStoreOrderConfirmationService from './retailstoreorderconfirmation/RetailStoreOrderConfirmation.service'; import RetailStoreOrderConfirmationUpdateForm from './retailstoreorderconfirmation/RetailStoreOrderConfirmation.updateform'; import RetailStoreOrderApprovalBase from './retailstoreorderapproval/RetailStoreOrderApproval.base'; @@ -767,6 +883,8 @@ import RetailStoreOrderApprovalSearchForm from './retailstoreorderapproval/Retai import RetailStoreOrderApprovalCreateForm from './retailstoreorderapproval/RetailStoreOrderApproval.createform'; import RetailStoreOrderApprovalAssociateForm from './retailstoreorderapproval/RetailStoreOrderApproval.associateform'; import RetailStoreOrderApprovalTable from './retailstoreorderapproval/RetailStoreOrderApproval.table'; +import RetailStoreOrderApprovalPermission from './retailstoreorderapproval/RetailStoreOrderApproval.permission'; +import RetailStoreOrderApprovalProfile from './retailstoreorderapproval/RetailStoreOrderApproval.profile'; import RetailStoreOrderApprovalService from './retailstoreorderapproval/RetailStoreOrderApproval.service'; import RetailStoreOrderApprovalUpdateForm from './retailstoreorderapproval/RetailStoreOrderApproval.updateform'; import RetailStoreOrderProcessingBase from './retailstoreorderprocessing/RetailStoreOrderProcessing.base'; @@ -780,6 +898,8 @@ import RetailStoreOrderProcessingSearchForm from './retailstoreorderprocessing/R import RetailStoreOrderProcessingCreateForm from './retailstoreorderprocessing/RetailStoreOrderProcessing.createform'; import RetailStoreOrderProcessingAssociateForm from './retailstoreorderprocessing/RetailStoreOrderProcessing.associateform'; import RetailStoreOrderProcessingTable from './retailstoreorderprocessing/RetailStoreOrderProcessing.table'; +import RetailStoreOrderProcessingPermission from './retailstoreorderprocessing/RetailStoreOrderProcessing.permission'; +import RetailStoreOrderProcessingProfile from './retailstoreorderprocessing/RetailStoreOrderProcessing.profile'; import RetailStoreOrderProcessingService from './retailstoreorderprocessing/RetailStoreOrderProcessing.service'; import RetailStoreOrderProcessingUpdateForm from './retailstoreorderprocessing/RetailStoreOrderProcessing.updateform'; import RetailStoreOrderPickingBase from './retailstoreorderpicking/RetailStoreOrderPicking.base'; @@ -793,6 +913,8 @@ import RetailStoreOrderPickingSearchForm from './retailstoreorderpicking/RetailS import RetailStoreOrderPickingCreateForm from './retailstoreorderpicking/RetailStoreOrderPicking.createform'; import RetailStoreOrderPickingAssociateForm from './retailstoreorderpicking/RetailStoreOrderPicking.associateform'; import RetailStoreOrderPickingTable from './retailstoreorderpicking/RetailStoreOrderPicking.table'; +import RetailStoreOrderPickingPermission from './retailstoreorderpicking/RetailStoreOrderPicking.permission'; +import RetailStoreOrderPickingProfile from './retailstoreorderpicking/RetailStoreOrderPicking.profile'; import RetailStoreOrderPickingService from './retailstoreorderpicking/RetailStoreOrderPicking.service'; import RetailStoreOrderPickingUpdateForm from './retailstoreorderpicking/RetailStoreOrderPicking.updateform'; import RetailStoreOrderShipmentBase from './retailstoreordershipment/RetailStoreOrderShipment.base'; @@ -806,6 +928,8 @@ import RetailStoreOrderShipmentSearchForm from './retailstoreordershipment/Retai import RetailStoreOrderShipmentCreateForm from './retailstoreordershipment/RetailStoreOrderShipment.createform'; import RetailStoreOrderShipmentAssociateForm from './retailstoreordershipment/RetailStoreOrderShipment.associateform'; import RetailStoreOrderShipmentTable from './retailstoreordershipment/RetailStoreOrderShipment.table'; +import RetailStoreOrderShipmentPermission from './retailstoreordershipment/RetailStoreOrderShipment.permission'; +import RetailStoreOrderShipmentProfile from './retailstoreordershipment/RetailStoreOrderShipment.profile'; import RetailStoreOrderShipmentService from './retailstoreordershipment/RetailStoreOrderShipment.service'; import RetailStoreOrderShipmentUpdateForm from './retailstoreordershipment/RetailStoreOrderShipment.updateform'; import RetailStoreOrderDeliveryBase from './retailstoreorderdelivery/RetailStoreOrderDelivery.base'; @@ -819,6 +943,8 @@ import RetailStoreOrderDeliverySearchForm from './retailstoreorderdelivery/Retai import RetailStoreOrderDeliveryCreateForm from './retailstoreorderdelivery/RetailStoreOrderDelivery.createform'; import RetailStoreOrderDeliveryAssociateForm from './retailstoreorderdelivery/RetailStoreOrderDelivery.associateform'; import RetailStoreOrderDeliveryTable from './retailstoreorderdelivery/RetailStoreOrderDelivery.table'; +import RetailStoreOrderDeliveryPermission from './retailstoreorderdelivery/RetailStoreOrderDelivery.permission'; +import RetailStoreOrderDeliveryProfile from './retailstoreorderdelivery/RetailStoreOrderDelivery.profile'; import RetailStoreOrderDeliveryService from './retailstoreorderdelivery/RetailStoreOrderDelivery.service'; import RetailStoreOrderDeliveryUpdateForm from './retailstoreorderdelivery/RetailStoreOrderDelivery.updateform'; import RetailStoreOrderLineItemBase from './retailstoreorderlineitem/RetailStoreOrderLineItem.base'; @@ -832,6 +958,8 @@ import RetailStoreOrderLineItemSearchForm from './retailstoreorderlineitem/Retai import RetailStoreOrderLineItemCreateForm from './retailstoreorderlineitem/RetailStoreOrderLineItem.createform'; import RetailStoreOrderLineItemAssociateForm from './retailstoreorderlineitem/RetailStoreOrderLineItem.associateform'; import RetailStoreOrderLineItemTable from './retailstoreorderlineitem/RetailStoreOrderLineItem.table'; +import RetailStoreOrderLineItemPermission from './retailstoreorderlineitem/RetailStoreOrderLineItem.permission'; +import RetailStoreOrderLineItemProfile from './retailstoreorderlineitem/RetailStoreOrderLineItem.profile'; import RetailStoreOrderLineItemService from './retailstoreorderlineitem/RetailStoreOrderLineItem.service'; import RetailStoreOrderLineItemUpdateForm from './retailstoreorderlineitem/RetailStoreOrderLineItem.updateform'; import RetailStoreOrderShippingGroupBase from './retailstoreordershippinggroup/RetailStoreOrderShippingGroup.base'; @@ -845,6 +973,8 @@ import RetailStoreOrderShippingGroupSearchForm from './retailstoreordershippingg import RetailStoreOrderShippingGroupCreateForm from './retailstoreordershippinggroup/RetailStoreOrderShippingGroup.createform'; import RetailStoreOrderShippingGroupAssociateForm from './retailstoreordershippinggroup/RetailStoreOrderShippingGroup.associateform'; import RetailStoreOrderShippingGroupTable from './retailstoreordershippinggroup/RetailStoreOrderShippingGroup.table'; +import RetailStoreOrderShippingGroupPermission from './retailstoreordershippinggroup/RetailStoreOrderShippingGroup.permission'; +import RetailStoreOrderShippingGroupProfile from './retailstoreordershippinggroup/RetailStoreOrderShippingGroup.profile'; import RetailStoreOrderShippingGroupService from './retailstoreordershippinggroup/RetailStoreOrderShippingGroup.service'; import RetailStoreOrderShippingGroupUpdateForm from './retailstoreordershippinggroup/RetailStoreOrderShippingGroup.updateform'; import RetailStoreOrderPaymentGroupBase from './retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.base'; @@ -858,6 +988,8 @@ import RetailStoreOrderPaymentGroupSearchForm from './retailstoreorderpaymentgro import RetailStoreOrderPaymentGroupCreateForm from './retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.createform'; import RetailStoreOrderPaymentGroupAssociateForm from './retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.associateform'; import RetailStoreOrderPaymentGroupTable from './retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.table'; +import RetailStoreOrderPaymentGroupPermission from './retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.permission'; +import RetailStoreOrderPaymentGroupProfile from './retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.profile'; import RetailStoreOrderPaymentGroupService from './retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.service'; import RetailStoreOrderPaymentGroupUpdateForm from './retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.updateform'; import WarehouseBase from './warehouse/Warehouse.base'; @@ -871,6 +1003,8 @@ import WarehouseSearchForm from './warehouse/Warehouse.searchform'; import WarehouseCreateForm from './warehouse/Warehouse.createform'; import WarehouseAssociateForm from './warehouse/Warehouse.associateform'; import WarehouseTable from './warehouse/Warehouse.table'; +import WarehousePermission from './warehouse/Warehouse.permission'; +import WarehouseProfile from './warehouse/Warehouse.profile'; import WarehouseService from './warehouse/Warehouse.service'; import WarehouseUpdateForm from './warehouse/Warehouse.updateform'; import StorageSpaceBase from './storagespace/StorageSpace.base'; @@ -884,6 +1018,8 @@ import StorageSpaceSearchForm from './storagespace/StorageSpace.searchform'; import StorageSpaceCreateForm from './storagespace/StorageSpace.createform'; import StorageSpaceAssociateForm from './storagespace/StorageSpace.associateform'; import StorageSpaceTable from './storagespace/StorageSpace.table'; +import StorageSpacePermission from './storagespace/StorageSpace.permission'; +import StorageSpaceProfile from './storagespace/StorageSpace.profile'; import StorageSpaceService from './storagespace/StorageSpace.service'; import StorageSpaceUpdateForm from './storagespace/StorageSpace.updateform'; import SmartPalletBase from './smartpallet/SmartPallet.base'; @@ -897,6 +1033,8 @@ import SmartPalletSearchForm from './smartpallet/SmartPallet.searchform'; import SmartPalletCreateForm from './smartpallet/SmartPallet.createform'; import SmartPalletAssociateForm from './smartpallet/SmartPallet.associateform'; import SmartPalletTable from './smartpallet/SmartPallet.table'; +import SmartPalletPermission from './smartpallet/SmartPallet.permission'; +import SmartPalletProfile from './smartpallet/SmartPallet.profile'; import SmartPalletService from './smartpallet/SmartPallet.service'; import SmartPalletUpdateForm from './smartpallet/SmartPallet.updateform'; import GoodsShelfBase from './goodsshelf/GoodsShelf.base'; @@ -910,6 +1048,8 @@ import GoodsShelfSearchForm from './goodsshelf/GoodsShelf.searchform'; import GoodsShelfCreateForm from './goodsshelf/GoodsShelf.createform'; import GoodsShelfAssociateForm from './goodsshelf/GoodsShelf.associateform'; import GoodsShelfTable from './goodsshelf/GoodsShelf.table'; +import GoodsShelfPermission from './goodsshelf/GoodsShelf.permission'; +import GoodsShelfProfile from './goodsshelf/GoodsShelf.profile'; import GoodsShelfService from './goodsshelf/GoodsShelf.service'; import GoodsShelfUpdateForm from './goodsshelf/GoodsShelf.updateform'; import GoodsShelfStockCountBase from './goodsshelfstockcount/GoodsShelfStockCount.base'; @@ -923,6 +1063,8 @@ import GoodsShelfStockCountSearchForm from './goodsshelfstockcount/GoodsShelfSto import GoodsShelfStockCountCreateForm from './goodsshelfstockcount/GoodsShelfStockCount.createform'; import GoodsShelfStockCountAssociateForm from './goodsshelfstockcount/GoodsShelfStockCount.associateform'; import GoodsShelfStockCountTable from './goodsshelfstockcount/GoodsShelfStockCount.table'; +import GoodsShelfStockCountPermission from './goodsshelfstockcount/GoodsShelfStockCount.permission'; +import GoodsShelfStockCountProfile from './goodsshelfstockcount/GoodsShelfStockCount.profile'; import GoodsShelfStockCountService from './goodsshelfstockcount/GoodsShelfStockCount.service'; import GoodsShelfStockCountUpdateForm from './goodsshelfstockcount/GoodsShelfStockCount.updateform'; import StockCountIssueTrackBase from './stockcountissuetrack/StockCountIssueTrack.base'; @@ -936,6 +1078,8 @@ import StockCountIssueTrackSearchForm from './stockcountissuetrack/StockCountIss import StockCountIssueTrackCreateForm from './stockcountissuetrack/StockCountIssueTrack.createform'; import StockCountIssueTrackAssociateForm from './stockcountissuetrack/StockCountIssueTrack.associateform'; import StockCountIssueTrackTable from './stockcountissuetrack/StockCountIssueTrack.table'; +import StockCountIssueTrackPermission from './stockcountissuetrack/StockCountIssueTrack.permission'; +import StockCountIssueTrackProfile from './stockcountissuetrack/StockCountIssueTrack.profile'; import StockCountIssueTrackService from './stockcountissuetrack/StockCountIssueTrack.service'; import StockCountIssueTrackUpdateForm from './stockcountissuetrack/StockCountIssueTrack.updateform'; import GoodsAllocationBase from './goodsallocation/GoodsAllocation.base'; @@ -949,6 +1093,8 @@ import GoodsAllocationSearchForm from './goodsallocation/GoodsAllocation.searchf import GoodsAllocationCreateForm from './goodsallocation/GoodsAllocation.createform'; import GoodsAllocationAssociateForm from './goodsallocation/GoodsAllocation.associateform'; import GoodsAllocationTable from './goodsallocation/GoodsAllocation.table'; +import GoodsAllocationPermission from './goodsallocation/GoodsAllocation.permission'; +import GoodsAllocationProfile from './goodsallocation/GoodsAllocation.profile'; import GoodsAllocationService from './goodsallocation/GoodsAllocation.service'; import GoodsAllocationUpdateForm from './goodsallocation/GoodsAllocation.updateform'; import GoodsBase from './goods/Goods.base'; @@ -962,6 +1108,8 @@ import GoodsSearchForm from './goods/Goods.searchform'; import GoodsCreateForm from './goods/Goods.createform'; import GoodsAssociateForm from './goods/Goods.associateform'; import GoodsTable from './goods/Goods.table'; +import GoodsPermission from './goods/Goods.permission'; +import GoodsProfile from './goods/Goods.profile'; import GoodsService from './goods/Goods.service'; import GoodsUpdateForm from './goods/Goods.updateform'; import GoodsPackagingBase from './goodspackaging/GoodsPackaging.base'; @@ -975,6 +1123,8 @@ import GoodsPackagingSearchForm from './goodspackaging/GoodsPackaging.searchform import GoodsPackagingCreateForm from './goodspackaging/GoodsPackaging.createform'; import GoodsPackagingAssociateForm from './goodspackaging/GoodsPackaging.associateform'; import GoodsPackagingTable from './goodspackaging/GoodsPackaging.table'; +import GoodsPackagingPermission from './goodspackaging/GoodsPackaging.permission'; +import GoodsPackagingProfile from './goodspackaging/GoodsPackaging.profile'; import GoodsPackagingService from './goodspackaging/GoodsPackaging.service'; import GoodsPackagingUpdateForm from './goodspackaging/GoodsPackaging.updateform'; import GoodsMovementBase from './goodsmovement/GoodsMovement.base'; @@ -988,6 +1138,8 @@ import GoodsMovementSearchForm from './goodsmovement/GoodsMovement.searchform'; import GoodsMovementCreateForm from './goodsmovement/GoodsMovement.createform'; import GoodsMovementAssociateForm from './goodsmovement/GoodsMovement.associateform'; import GoodsMovementTable from './goodsmovement/GoodsMovement.table'; +import GoodsMovementPermission from './goodsmovement/GoodsMovement.permission'; +import GoodsMovementProfile from './goodsmovement/GoodsMovement.profile'; import GoodsMovementService from './goodsmovement/GoodsMovement.service'; import GoodsMovementUpdateForm from './goodsmovement/GoodsMovement.updateform'; import SupplierSpaceBase from './supplierspace/SupplierSpace.base'; @@ -1001,6 +1153,8 @@ import SupplierSpaceSearchForm from './supplierspace/SupplierSpace.searchform'; import SupplierSpaceCreateForm from './supplierspace/SupplierSpace.createform'; import SupplierSpaceAssociateForm from './supplierspace/SupplierSpace.associateform'; import SupplierSpaceTable from './supplierspace/SupplierSpace.table'; +import SupplierSpacePermission from './supplierspace/SupplierSpace.permission'; +import SupplierSpaceProfile from './supplierspace/SupplierSpace.profile'; import SupplierSpaceService from './supplierspace/SupplierSpace.service'; import SupplierSpaceUpdateForm from './supplierspace/SupplierSpace.updateform'; import ReceivingSpaceBase from './receivingspace/ReceivingSpace.base'; @@ -1014,6 +1168,8 @@ import ReceivingSpaceSearchForm from './receivingspace/ReceivingSpace.searchform import ReceivingSpaceCreateForm from './receivingspace/ReceivingSpace.createform'; import ReceivingSpaceAssociateForm from './receivingspace/ReceivingSpace.associateform'; import ReceivingSpaceTable from './receivingspace/ReceivingSpace.table'; +import ReceivingSpacePermission from './receivingspace/ReceivingSpace.permission'; +import ReceivingSpaceProfile from './receivingspace/ReceivingSpace.profile'; import ReceivingSpaceService from './receivingspace/ReceivingSpace.service'; import ReceivingSpaceUpdateForm from './receivingspace/ReceivingSpace.updateform'; import ShippingSpaceBase from './shippingspace/ShippingSpace.base'; @@ -1027,6 +1183,8 @@ import ShippingSpaceSearchForm from './shippingspace/ShippingSpace.searchform'; import ShippingSpaceCreateForm from './shippingspace/ShippingSpace.createform'; import ShippingSpaceAssociateForm from './shippingspace/ShippingSpace.associateform'; import ShippingSpaceTable from './shippingspace/ShippingSpace.table'; +import ShippingSpacePermission from './shippingspace/ShippingSpace.permission'; +import ShippingSpaceProfile from './shippingspace/ShippingSpace.profile'; import ShippingSpaceService from './shippingspace/ShippingSpace.service'; import ShippingSpaceUpdateForm from './shippingspace/ShippingSpace.updateform'; import DamageSpaceBase from './damagespace/DamageSpace.base'; @@ -1040,6 +1198,8 @@ import DamageSpaceSearchForm from './damagespace/DamageSpace.searchform'; import DamageSpaceCreateForm from './damagespace/DamageSpace.createform'; import DamageSpaceAssociateForm from './damagespace/DamageSpace.associateform'; import DamageSpaceTable from './damagespace/DamageSpace.table'; +import DamageSpacePermission from './damagespace/DamageSpace.permission'; +import DamageSpaceProfile from './damagespace/DamageSpace.profile'; import DamageSpaceService from './damagespace/DamageSpace.service'; import DamageSpaceUpdateForm from './damagespace/DamageSpace.updateform'; import WarehouseAssetBase from './warehouseasset/WarehouseAsset.base'; @@ -1053,6 +1213,8 @@ import WarehouseAssetSearchForm from './warehouseasset/WarehouseAsset.searchform import WarehouseAssetCreateForm from './warehouseasset/WarehouseAsset.createform'; import WarehouseAssetAssociateForm from './warehouseasset/WarehouseAsset.associateform'; import WarehouseAssetTable from './warehouseasset/WarehouseAsset.table'; +import WarehouseAssetPermission from './warehouseasset/WarehouseAsset.permission'; +import WarehouseAssetProfile from './warehouseasset/WarehouseAsset.profile'; import WarehouseAssetService from './warehouseasset/WarehouseAsset.service'; import WarehouseAssetUpdateForm from './warehouseasset/WarehouseAsset.updateform'; import TransportFleetBase from './transportfleet/TransportFleet.base'; @@ -1066,6 +1228,8 @@ import TransportFleetSearchForm from './transportfleet/TransportFleet.searchform import TransportFleetCreateForm from './transportfleet/TransportFleet.createform'; import TransportFleetAssociateForm from './transportfleet/TransportFleet.associateform'; import TransportFleetTable from './transportfleet/TransportFleet.table'; +import TransportFleetPermission from './transportfleet/TransportFleet.permission'; +import TransportFleetProfile from './transportfleet/TransportFleet.profile'; import TransportFleetService from './transportfleet/TransportFleet.service'; import TransportFleetUpdateForm from './transportfleet/TransportFleet.updateform'; import TransportTruckBase from './transporttruck/TransportTruck.base'; @@ -1079,6 +1243,8 @@ import TransportTruckSearchForm from './transporttruck/TransportTruck.searchform import TransportTruckCreateForm from './transporttruck/TransportTruck.createform'; import TransportTruckAssociateForm from './transporttruck/TransportTruck.associateform'; import TransportTruckTable from './transporttruck/TransportTruck.table'; +import TransportTruckPermission from './transporttruck/TransportTruck.permission'; +import TransportTruckProfile from './transporttruck/TransportTruck.profile'; import TransportTruckService from './transporttruck/TransportTruck.service'; import TransportTruckUpdateForm from './transporttruck/TransportTruck.updateform'; import TruckDriverBase from './truckdriver/TruckDriver.base'; @@ -1092,6 +1258,8 @@ import TruckDriverSearchForm from './truckdriver/TruckDriver.searchform'; import TruckDriverCreateForm from './truckdriver/TruckDriver.createform'; import TruckDriverAssociateForm from './truckdriver/TruckDriver.associateform'; import TruckDriverTable from './truckdriver/TruckDriver.table'; +import TruckDriverPermission from './truckdriver/TruckDriver.permission'; +import TruckDriverProfile from './truckdriver/TruckDriver.profile'; import TruckDriverService from './truckdriver/TruckDriver.service'; import TruckDriverUpdateForm from './truckdriver/TruckDriver.updateform'; import TransportTaskBase from './transporttask/TransportTask.base'; @@ -1105,6 +1273,8 @@ import TransportTaskSearchForm from './transporttask/TransportTask.searchform'; import TransportTaskCreateForm from './transporttask/TransportTask.createform'; import TransportTaskAssociateForm from './transporttask/TransportTask.associateform'; import TransportTaskTable from './transporttask/TransportTask.table'; +import TransportTaskPermission from './transporttask/TransportTask.permission'; +import TransportTaskProfile from './transporttask/TransportTask.profile'; import TransportTaskService from './transporttask/TransportTask.service'; import TransportTaskUpdateForm from './transporttask/TransportTask.updateform'; import TransportTaskTrackBase from './transporttasktrack/TransportTaskTrack.base'; @@ -1118,6 +1288,8 @@ import TransportTaskTrackSearchForm from './transporttasktrack/TransportTaskTrac import TransportTaskTrackCreateForm from './transporttasktrack/TransportTaskTrack.createform'; import TransportTaskTrackAssociateForm from './transporttasktrack/TransportTaskTrack.associateform'; import TransportTaskTrackTable from './transporttasktrack/TransportTaskTrack.table'; +import TransportTaskTrackPermission from './transporttasktrack/TransportTaskTrack.permission'; +import TransportTaskTrackProfile from './transporttasktrack/TransportTaskTrack.profile'; import TransportTaskTrackService from './transporttasktrack/TransportTaskTrack.service'; import TransportTaskTrackUpdateForm from './transporttasktrack/TransportTaskTrack.updateform'; import AccountSetBase from './accountset/AccountSet.base'; @@ -1131,6 +1303,8 @@ import AccountSetSearchForm from './accountset/AccountSet.searchform'; import AccountSetCreateForm from './accountset/AccountSet.createform'; import AccountSetAssociateForm from './accountset/AccountSet.associateform'; import AccountSetTable from './accountset/AccountSet.table'; +import AccountSetPermission from './accountset/AccountSet.permission'; +import AccountSetProfile from './accountset/AccountSet.profile'; import AccountSetService from './accountset/AccountSet.service'; import AccountSetUpdateForm from './accountset/AccountSet.updateform'; import AccountingSubjectBase from './accountingsubject/AccountingSubject.base'; @@ -1144,6 +1318,8 @@ import AccountingSubjectSearchForm from './accountingsubject/AccountingSubject.s import AccountingSubjectCreateForm from './accountingsubject/AccountingSubject.createform'; import AccountingSubjectAssociateForm from './accountingsubject/AccountingSubject.associateform'; import AccountingSubjectTable from './accountingsubject/AccountingSubject.table'; +import AccountingSubjectPermission from './accountingsubject/AccountingSubject.permission'; +import AccountingSubjectProfile from './accountingsubject/AccountingSubject.profile'; import AccountingSubjectService from './accountingsubject/AccountingSubject.service'; import AccountingSubjectUpdateForm from './accountingsubject/AccountingSubject.updateform'; import AccountingPeriodBase from './accountingperiod/AccountingPeriod.base'; @@ -1157,6 +1333,8 @@ import AccountingPeriodSearchForm from './accountingperiod/AccountingPeriod.sear import AccountingPeriodCreateForm from './accountingperiod/AccountingPeriod.createform'; import AccountingPeriodAssociateForm from './accountingperiod/AccountingPeriod.associateform'; import AccountingPeriodTable from './accountingperiod/AccountingPeriod.table'; +import AccountingPeriodPermission from './accountingperiod/AccountingPeriod.permission'; +import AccountingPeriodProfile from './accountingperiod/AccountingPeriod.profile'; import AccountingPeriodService from './accountingperiod/AccountingPeriod.service'; import AccountingPeriodUpdateForm from './accountingperiod/AccountingPeriod.updateform'; import AccountingDocumentTypeBase from './accountingdocumenttype/AccountingDocumentType.base'; @@ -1170,6 +1348,8 @@ import AccountingDocumentTypeSearchForm from './accountingdocumenttype/Accountin import AccountingDocumentTypeCreateForm from './accountingdocumenttype/AccountingDocumentType.createform'; import AccountingDocumentTypeAssociateForm from './accountingdocumenttype/AccountingDocumentType.associateform'; import AccountingDocumentTypeTable from './accountingdocumenttype/AccountingDocumentType.table'; +import AccountingDocumentTypePermission from './accountingdocumenttype/AccountingDocumentType.permission'; +import AccountingDocumentTypeProfile from './accountingdocumenttype/AccountingDocumentType.profile'; import AccountingDocumentTypeService from './accountingdocumenttype/AccountingDocumentType.service'; import AccountingDocumentTypeUpdateForm from './accountingdocumenttype/AccountingDocumentType.updateform'; import AccountingDocumentBase from './accountingdocument/AccountingDocument.base'; @@ -1183,6 +1363,8 @@ import AccountingDocumentSearchForm from './accountingdocument/AccountingDocumen import AccountingDocumentCreateForm from './accountingdocument/AccountingDocument.createform'; import AccountingDocumentAssociateForm from './accountingdocument/AccountingDocument.associateform'; import AccountingDocumentTable from './accountingdocument/AccountingDocument.table'; +import AccountingDocumentPermission from './accountingdocument/AccountingDocument.permission'; +import AccountingDocumentProfile from './accountingdocument/AccountingDocument.profile'; import AccountingDocumentService from './accountingdocument/AccountingDocument.service'; import AccountingDocumentUpdateForm from './accountingdocument/AccountingDocument.updateform'; import AccountingDocumentCreationBase from './accountingdocumentcreation/AccountingDocumentCreation.base'; @@ -1196,6 +1378,8 @@ import AccountingDocumentCreationSearchForm from './accountingdocumentcreation/A import AccountingDocumentCreationCreateForm from './accountingdocumentcreation/AccountingDocumentCreation.createform'; import AccountingDocumentCreationAssociateForm from './accountingdocumentcreation/AccountingDocumentCreation.associateform'; import AccountingDocumentCreationTable from './accountingdocumentcreation/AccountingDocumentCreation.table'; +import AccountingDocumentCreationPermission from './accountingdocumentcreation/AccountingDocumentCreation.permission'; +import AccountingDocumentCreationProfile from './accountingdocumentcreation/AccountingDocumentCreation.profile'; import AccountingDocumentCreationService from './accountingdocumentcreation/AccountingDocumentCreation.service'; import AccountingDocumentCreationUpdateForm from './accountingdocumentcreation/AccountingDocumentCreation.updateform'; import AccountingDocumentConfirmationBase from './accountingdocumentconfirmation/AccountingDocumentConfirmation.base'; @@ -1209,6 +1393,8 @@ import AccountingDocumentConfirmationSearchForm from './accountingdocumentconfir import AccountingDocumentConfirmationCreateForm from './accountingdocumentconfirmation/AccountingDocumentConfirmation.createform'; import AccountingDocumentConfirmationAssociateForm from './accountingdocumentconfirmation/AccountingDocumentConfirmation.associateform'; import AccountingDocumentConfirmationTable from './accountingdocumentconfirmation/AccountingDocumentConfirmation.table'; +import AccountingDocumentConfirmationPermission from './accountingdocumentconfirmation/AccountingDocumentConfirmation.permission'; +import AccountingDocumentConfirmationProfile from './accountingdocumentconfirmation/AccountingDocumentConfirmation.profile'; import AccountingDocumentConfirmationService from './accountingdocumentconfirmation/AccountingDocumentConfirmation.service'; import AccountingDocumentConfirmationUpdateForm from './accountingdocumentconfirmation/AccountingDocumentConfirmation.updateform'; import AccountingDocumentAuditingBase from './accountingdocumentauditing/AccountingDocumentAuditing.base'; @@ -1222,6 +1408,8 @@ import AccountingDocumentAuditingSearchForm from './accountingdocumentauditing/A import AccountingDocumentAuditingCreateForm from './accountingdocumentauditing/AccountingDocumentAuditing.createform'; import AccountingDocumentAuditingAssociateForm from './accountingdocumentauditing/AccountingDocumentAuditing.associateform'; import AccountingDocumentAuditingTable from './accountingdocumentauditing/AccountingDocumentAuditing.table'; +import AccountingDocumentAuditingPermission from './accountingdocumentauditing/AccountingDocumentAuditing.permission'; +import AccountingDocumentAuditingProfile from './accountingdocumentauditing/AccountingDocumentAuditing.profile'; import AccountingDocumentAuditingService from './accountingdocumentauditing/AccountingDocumentAuditing.service'; import AccountingDocumentAuditingUpdateForm from './accountingdocumentauditing/AccountingDocumentAuditing.updateform'; import AccountingDocumentPostingBase from './accountingdocumentposting/AccountingDocumentPosting.base'; @@ -1235,6 +1423,8 @@ import AccountingDocumentPostingSearchForm from './accountingdocumentposting/Acc import AccountingDocumentPostingCreateForm from './accountingdocumentposting/AccountingDocumentPosting.createform'; import AccountingDocumentPostingAssociateForm from './accountingdocumentposting/AccountingDocumentPosting.associateform'; import AccountingDocumentPostingTable from './accountingdocumentposting/AccountingDocumentPosting.table'; +import AccountingDocumentPostingPermission from './accountingdocumentposting/AccountingDocumentPosting.permission'; +import AccountingDocumentPostingProfile from './accountingdocumentposting/AccountingDocumentPosting.profile'; import AccountingDocumentPostingService from './accountingdocumentposting/AccountingDocumentPosting.service'; import AccountingDocumentPostingUpdateForm from './accountingdocumentposting/AccountingDocumentPosting.updateform'; import OriginalVoucherBase from './originalvoucher/OriginalVoucher.base'; @@ -1248,6 +1438,8 @@ import OriginalVoucherSearchForm from './originalvoucher/OriginalVoucher.searchf import OriginalVoucherCreateForm from './originalvoucher/OriginalVoucher.createform'; import OriginalVoucherAssociateForm from './originalvoucher/OriginalVoucher.associateform'; import OriginalVoucherTable from './originalvoucher/OriginalVoucher.table'; +import OriginalVoucherPermission from './originalvoucher/OriginalVoucher.permission'; +import OriginalVoucherProfile from './originalvoucher/OriginalVoucher.profile'; import OriginalVoucherService from './originalvoucher/OriginalVoucher.service'; import OriginalVoucherUpdateForm from './originalvoucher/OriginalVoucher.updateform'; import OriginalVoucherCreationBase from './originalvouchercreation/OriginalVoucherCreation.base'; @@ -1261,6 +1453,8 @@ import OriginalVoucherCreationSearchForm from './originalvouchercreation/Origina import OriginalVoucherCreationCreateForm from './originalvouchercreation/OriginalVoucherCreation.createform'; import OriginalVoucherCreationAssociateForm from './originalvouchercreation/OriginalVoucherCreation.associateform'; import OriginalVoucherCreationTable from './originalvouchercreation/OriginalVoucherCreation.table'; +import OriginalVoucherCreationPermission from './originalvouchercreation/OriginalVoucherCreation.permission'; +import OriginalVoucherCreationProfile from './originalvouchercreation/OriginalVoucherCreation.profile'; import OriginalVoucherCreationService from './originalvouchercreation/OriginalVoucherCreation.service'; import OriginalVoucherCreationUpdateForm from './originalvouchercreation/OriginalVoucherCreation.updateform'; import OriginalVoucherConfirmationBase from './originalvoucherconfirmation/OriginalVoucherConfirmation.base'; @@ -1274,6 +1468,8 @@ import OriginalVoucherConfirmationSearchForm from './originalvoucherconfirmation import OriginalVoucherConfirmationCreateForm from './originalvoucherconfirmation/OriginalVoucherConfirmation.createform'; import OriginalVoucherConfirmationAssociateForm from './originalvoucherconfirmation/OriginalVoucherConfirmation.associateform'; import OriginalVoucherConfirmationTable from './originalvoucherconfirmation/OriginalVoucherConfirmation.table'; +import OriginalVoucherConfirmationPermission from './originalvoucherconfirmation/OriginalVoucherConfirmation.permission'; +import OriginalVoucherConfirmationProfile from './originalvoucherconfirmation/OriginalVoucherConfirmation.profile'; import OriginalVoucherConfirmationService from './originalvoucherconfirmation/OriginalVoucherConfirmation.service'; import OriginalVoucherConfirmationUpdateForm from './originalvoucherconfirmation/OriginalVoucherConfirmation.updateform'; import OriginalVoucherAuditingBase from './originalvoucherauditing/OriginalVoucherAuditing.base'; @@ -1287,6 +1483,8 @@ import OriginalVoucherAuditingSearchForm from './originalvoucherauditing/Origina import OriginalVoucherAuditingCreateForm from './originalvoucherauditing/OriginalVoucherAuditing.createform'; import OriginalVoucherAuditingAssociateForm from './originalvoucherauditing/OriginalVoucherAuditing.associateform'; import OriginalVoucherAuditingTable from './originalvoucherauditing/OriginalVoucherAuditing.table'; +import OriginalVoucherAuditingPermission from './originalvoucherauditing/OriginalVoucherAuditing.permission'; +import OriginalVoucherAuditingProfile from './originalvoucherauditing/OriginalVoucherAuditing.profile'; import OriginalVoucherAuditingService from './originalvoucherauditing/OriginalVoucherAuditing.service'; import OriginalVoucherAuditingUpdateForm from './originalvoucherauditing/OriginalVoucherAuditing.updateform'; import AccountingDocumentLineBase from './accountingdocumentline/AccountingDocumentLine.base'; @@ -1300,6 +1498,8 @@ import AccountingDocumentLineSearchForm from './accountingdocumentline/Accountin import AccountingDocumentLineCreateForm from './accountingdocumentline/AccountingDocumentLine.createform'; import AccountingDocumentLineAssociateForm from './accountingdocumentline/AccountingDocumentLine.associateform'; import AccountingDocumentLineTable from './accountingdocumentline/AccountingDocumentLine.table'; +import AccountingDocumentLinePermission from './accountingdocumentline/AccountingDocumentLine.permission'; +import AccountingDocumentLineProfile from './accountingdocumentline/AccountingDocumentLine.profile'; import AccountingDocumentLineService from './accountingdocumentline/AccountingDocumentLine.service'; import AccountingDocumentLineUpdateForm from './accountingdocumentline/AccountingDocumentLine.updateform'; import LevelOneDepartmentBase from './levelonedepartment/LevelOneDepartment.base'; @@ -1313,6 +1513,8 @@ import LevelOneDepartmentSearchForm from './levelonedepartment/LevelOneDepartmen import LevelOneDepartmentCreateForm from './levelonedepartment/LevelOneDepartment.createform'; import LevelOneDepartmentAssociateForm from './levelonedepartment/LevelOneDepartment.associateform'; import LevelOneDepartmentTable from './levelonedepartment/LevelOneDepartment.table'; +import LevelOneDepartmentPermission from './levelonedepartment/LevelOneDepartment.permission'; +import LevelOneDepartmentProfile from './levelonedepartment/LevelOneDepartment.profile'; import LevelOneDepartmentService from './levelonedepartment/LevelOneDepartment.service'; import LevelOneDepartmentUpdateForm from './levelonedepartment/LevelOneDepartment.updateform'; import LevelTwoDepartmentBase from './leveltwodepartment/LevelTwoDepartment.base'; @@ -1326,6 +1528,8 @@ import LevelTwoDepartmentSearchForm from './leveltwodepartment/LevelTwoDepartmen import LevelTwoDepartmentCreateForm from './leveltwodepartment/LevelTwoDepartment.createform'; import LevelTwoDepartmentAssociateForm from './leveltwodepartment/LevelTwoDepartment.associateform'; import LevelTwoDepartmentTable from './leveltwodepartment/LevelTwoDepartment.table'; +import LevelTwoDepartmentPermission from './leveltwodepartment/LevelTwoDepartment.permission'; +import LevelTwoDepartmentProfile from './leveltwodepartment/LevelTwoDepartment.profile'; import LevelTwoDepartmentService from './leveltwodepartment/LevelTwoDepartment.service'; import LevelTwoDepartmentUpdateForm from './leveltwodepartment/LevelTwoDepartment.updateform'; import LevelThreeDepartmentBase from './levelthreedepartment/LevelThreeDepartment.base'; @@ -1339,6 +1543,8 @@ import LevelThreeDepartmentSearchForm from './levelthreedepartment/LevelThreeDep import LevelThreeDepartmentCreateForm from './levelthreedepartment/LevelThreeDepartment.createform'; import LevelThreeDepartmentAssociateForm from './levelthreedepartment/LevelThreeDepartment.associateform'; import LevelThreeDepartmentTable from './levelthreedepartment/LevelThreeDepartment.table'; +import LevelThreeDepartmentPermission from './levelthreedepartment/LevelThreeDepartment.permission'; +import LevelThreeDepartmentProfile from './levelthreedepartment/LevelThreeDepartment.profile'; import LevelThreeDepartmentService from './levelthreedepartment/LevelThreeDepartment.service'; import LevelThreeDepartmentUpdateForm from './levelthreedepartment/LevelThreeDepartment.updateform'; import SkillTypeBase from './skilltype/SkillType.base'; @@ -1352,6 +1558,8 @@ import SkillTypeSearchForm from './skilltype/SkillType.searchform'; import SkillTypeCreateForm from './skilltype/SkillType.createform'; import SkillTypeAssociateForm from './skilltype/SkillType.associateform'; import SkillTypeTable from './skilltype/SkillType.table'; +import SkillTypePermission from './skilltype/SkillType.permission'; +import SkillTypeProfile from './skilltype/SkillType.profile'; import SkillTypeService from './skilltype/SkillType.service'; import SkillTypeUpdateForm from './skilltype/SkillType.updateform'; import ResponsibilityTypeBase from './responsibilitytype/ResponsibilityType.base'; @@ -1365,6 +1573,8 @@ import ResponsibilityTypeSearchForm from './responsibilitytype/ResponsibilityTyp import ResponsibilityTypeCreateForm from './responsibilitytype/ResponsibilityType.createform'; import ResponsibilityTypeAssociateForm from './responsibilitytype/ResponsibilityType.associateform'; import ResponsibilityTypeTable from './responsibilitytype/ResponsibilityType.table'; +import ResponsibilityTypePermission from './responsibilitytype/ResponsibilityType.permission'; +import ResponsibilityTypeProfile from './responsibilitytype/ResponsibilityType.profile'; import ResponsibilityTypeService from './responsibilitytype/ResponsibilityType.service'; import ResponsibilityTypeUpdateForm from './responsibilitytype/ResponsibilityType.updateform'; import TerminationReasonBase from './terminationreason/TerminationReason.base'; @@ -1378,6 +1588,8 @@ import TerminationReasonSearchForm from './terminationreason/TerminationReason.s import TerminationReasonCreateForm from './terminationreason/TerminationReason.createform'; import TerminationReasonAssociateForm from './terminationreason/TerminationReason.associateform'; import TerminationReasonTable from './terminationreason/TerminationReason.table'; +import TerminationReasonPermission from './terminationreason/TerminationReason.permission'; +import TerminationReasonProfile from './terminationreason/TerminationReason.profile'; import TerminationReasonService from './terminationreason/TerminationReason.service'; import TerminationReasonUpdateForm from './terminationreason/TerminationReason.updateform'; import TerminationTypeBase from './terminationtype/TerminationType.base'; @@ -1391,6 +1603,8 @@ import TerminationTypeSearchForm from './terminationtype/TerminationType.searchf import TerminationTypeCreateForm from './terminationtype/TerminationType.createform'; import TerminationTypeAssociateForm from './terminationtype/TerminationType.associateform'; import TerminationTypeTable from './terminationtype/TerminationType.table'; +import TerminationTypePermission from './terminationtype/TerminationType.permission'; +import TerminationTypeProfile from './terminationtype/TerminationType.profile'; import TerminationTypeService from './terminationtype/TerminationType.service'; import TerminationTypeUpdateForm from './terminationtype/TerminationType.updateform'; import OccupationTypeBase from './occupationtype/OccupationType.base'; @@ -1404,6 +1618,8 @@ import OccupationTypeSearchForm from './occupationtype/OccupationType.searchform import OccupationTypeCreateForm from './occupationtype/OccupationType.createform'; import OccupationTypeAssociateForm from './occupationtype/OccupationType.associateform'; import OccupationTypeTable from './occupationtype/OccupationType.table'; +import OccupationTypePermission from './occupationtype/OccupationType.permission'; +import OccupationTypeProfile from './occupationtype/OccupationType.profile'; import OccupationTypeService from './occupationtype/OccupationType.service'; import OccupationTypeUpdateForm from './occupationtype/OccupationType.updateform'; import LeaveTypeBase from './leavetype/LeaveType.base'; @@ -1417,6 +1633,8 @@ import LeaveTypeSearchForm from './leavetype/LeaveType.searchform'; import LeaveTypeCreateForm from './leavetype/LeaveType.createform'; import LeaveTypeAssociateForm from './leavetype/LeaveType.associateform'; import LeaveTypeTable from './leavetype/LeaveType.table'; +import LeaveTypePermission from './leavetype/LeaveType.permission'; +import LeaveTypeProfile from './leavetype/LeaveType.profile'; import LeaveTypeService from './leavetype/LeaveType.service'; import LeaveTypeUpdateForm from './leavetype/LeaveType.updateform'; import SalaryGradeBase from './salarygrade/SalaryGrade.base'; @@ -1430,6 +1648,8 @@ import SalaryGradeSearchForm from './salarygrade/SalaryGrade.searchform'; import SalaryGradeCreateForm from './salarygrade/SalaryGrade.createform'; import SalaryGradeAssociateForm from './salarygrade/SalaryGrade.associateform'; import SalaryGradeTable from './salarygrade/SalaryGrade.table'; +import SalaryGradePermission from './salarygrade/SalaryGrade.permission'; +import SalaryGradeProfile from './salarygrade/SalaryGrade.profile'; import SalaryGradeService from './salarygrade/SalaryGrade.service'; import SalaryGradeUpdateForm from './salarygrade/SalaryGrade.updateform'; import InterviewTypeBase from './interviewtype/InterviewType.base'; @@ -1443,6 +1663,8 @@ import InterviewTypeSearchForm from './interviewtype/InterviewType.searchform'; import InterviewTypeCreateForm from './interviewtype/InterviewType.createform'; import InterviewTypeAssociateForm from './interviewtype/InterviewType.associateform'; import InterviewTypeTable from './interviewtype/InterviewType.table'; +import InterviewTypePermission from './interviewtype/InterviewType.permission'; +import InterviewTypeProfile from './interviewtype/InterviewType.profile'; import InterviewTypeService from './interviewtype/InterviewType.service'; import InterviewTypeUpdateForm from './interviewtype/InterviewType.updateform'; import TrainingCourseTypeBase from './trainingcoursetype/TrainingCourseType.base'; @@ -1456,6 +1678,8 @@ import TrainingCourseTypeSearchForm from './trainingcoursetype/TrainingCourseTyp import TrainingCourseTypeCreateForm from './trainingcoursetype/TrainingCourseType.createform'; import TrainingCourseTypeAssociateForm from './trainingcoursetype/TrainingCourseType.associateform'; import TrainingCourseTypeTable from './trainingcoursetype/TrainingCourseType.table'; +import TrainingCourseTypePermission from './trainingcoursetype/TrainingCourseType.permission'; +import TrainingCourseTypeProfile from './trainingcoursetype/TrainingCourseType.profile'; import TrainingCourseTypeService from './trainingcoursetype/TrainingCourseType.service'; import TrainingCourseTypeUpdateForm from './trainingcoursetype/TrainingCourseType.updateform'; import PublicHolidayBase from './publicholiday/PublicHoliday.base'; @@ -1469,6 +1693,8 @@ import PublicHolidaySearchForm from './publicholiday/PublicHoliday.searchform'; import PublicHolidayCreateForm from './publicholiday/PublicHoliday.createform'; import PublicHolidayAssociateForm from './publicholiday/PublicHoliday.associateform'; import PublicHolidayTable from './publicholiday/PublicHoliday.table'; +import PublicHolidayPermission from './publicholiday/PublicHoliday.permission'; +import PublicHolidayProfile from './publicholiday/PublicHoliday.profile'; import PublicHolidayService from './publicholiday/PublicHoliday.service'; import PublicHolidayUpdateForm from './publicholiday/PublicHoliday.updateform'; import TerminationBase from './termination/Termination.base'; @@ -1482,6 +1708,8 @@ import TerminationSearchForm from './termination/Termination.searchform'; import TerminationCreateForm from './termination/Termination.createform'; import TerminationAssociateForm from './termination/Termination.associateform'; import TerminationTable from './termination/Termination.table'; +import TerminationPermission from './termination/Termination.permission'; +import TerminationProfile from './termination/Termination.profile'; import TerminationService from './termination/Termination.service'; import TerminationUpdateForm from './termination/Termination.updateform'; import ViewBase from './view/View.base'; @@ -1495,6 +1723,8 @@ import ViewSearchForm from './view/View.searchform'; import ViewCreateForm from './view/View.createform'; import ViewAssociateForm from './view/View.associateform'; import ViewTable from './view/View.table'; +import ViewPermission from './view/View.permission'; +import ViewProfile from './view/View.profile'; import ViewService from './view/View.service'; import ViewUpdateForm from './view/View.updateform'; import EmployeeBase from './employee/Employee.base'; @@ -1508,6 +1738,8 @@ import EmployeeSearchForm from './employee/Employee.searchform'; import EmployeeCreateForm from './employee/Employee.createform'; import EmployeeAssociateForm from './employee/Employee.associateform'; import EmployeeTable from './employee/Employee.table'; +import EmployeePermission from './employee/Employee.permission'; +import EmployeeProfile from './employee/Employee.profile'; import EmployeeService from './employee/Employee.service'; import EmployeeUpdateForm from './employee/Employee.updateform'; import JobApplicationBase from './jobapplication/JobApplication.base'; @@ -1521,6 +1753,8 @@ import JobApplicationSearchForm from './jobapplication/JobApplication.searchform import JobApplicationCreateForm from './jobapplication/JobApplication.createform'; import JobApplicationAssociateForm from './jobapplication/JobApplication.associateform'; import JobApplicationTable from './jobapplication/JobApplication.table'; +import JobApplicationPermission from './jobapplication/JobApplication.permission'; +import JobApplicationProfile from './jobapplication/JobApplication.profile'; import JobApplicationService from './jobapplication/JobApplication.service'; import JobApplicationUpdateForm from './jobapplication/JobApplication.updateform'; import ProfessionInterviewBase from './professioninterview/ProfessionInterview.base'; @@ -1534,6 +1768,8 @@ import ProfessionInterviewSearchForm from './professioninterview/ProfessionInter import ProfessionInterviewCreateForm from './professioninterview/ProfessionInterview.createform'; import ProfessionInterviewAssociateForm from './professioninterview/ProfessionInterview.associateform'; import ProfessionInterviewTable from './professioninterview/ProfessionInterview.table'; +import ProfessionInterviewPermission from './professioninterview/ProfessionInterview.permission'; +import ProfessionInterviewProfile from './professioninterview/ProfessionInterview.profile'; import ProfessionInterviewService from './professioninterview/ProfessionInterview.service'; import ProfessionInterviewUpdateForm from './professioninterview/ProfessionInterview.updateform'; import HrInterviewBase from './hrinterview/HrInterview.base'; @@ -1547,6 +1783,8 @@ import HrInterviewSearchForm from './hrinterview/HrInterview.searchform'; import HrInterviewCreateForm from './hrinterview/HrInterview.createform'; import HrInterviewAssociateForm from './hrinterview/HrInterview.associateform'; import HrInterviewTable from './hrinterview/HrInterview.table'; +import HrInterviewPermission from './hrinterview/HrInterview.permission'; +import HrInterviewProfile from './hrinterview/HrInterview.profile'; import HrInterviewService from './hrinterview/HrInterview.service'; import HrInterviewUpdateForm from './hrinterview/HrInterview.updateform'; import OfferApprovalBase from './offerapproval/OfferApproval.base'; @@ -1560,6 +1798,8 @@ import OfferApprovalSearchForm from './offerapproval/OfferApproval.searchform'; import OfferApprovalCreateForm from './offerapproval/OfferApproval.createform'; import OfferApprovalAssociateForm from './offerapproval/OfferApproval.associateform'; import OfferApprovalTable from './offerapproval/OfferApproval.table'; +import OfferApprovalPermission from './offerapproval/OfferApproval.permission'; +import OfferApprovalProfile from './offerapproval/OfferApproval.profile'; import OfferApprovalService from './offerapproval/OfferApproval.service'; import OfferApprovalUpdateForm from './offerapproval/OfferApproval.updateform'; import OfferAcceptanceBase from './offeracceptance/OfferAcceptance.base'; @@ -1573,6 +1813,8 @@ import OfferAcceptanceSearchForm from './offeracceptance/OfferAcceptance.searchf import OfferAcceptanceCreateForm from './offeracceptance/OfferAcceptance.createform'; import OfferAcceptanceAssociateForm from './offeracceptance/OfferAcceptance.associateform'; import OfferAcceptanceTable from './offeracceptance/OfferAcceptance.table'; +import OfferAcceptancePermission from './offeracceptance/OfferAcceptance.permission'; +import OfferAcceptanceProfile from './offeracceptance/OfferAcceptance.profile'; import OfferAcceptanceService from './offeracceptance/OfferAcceptance.service'; import OfferAcceptanceUpdateForm from './offeracceptance/OfferAcceptance.updateform'; import EmployeeBoardingBase from './employeeboarding/EmployeeBoarding.base'; @@ -1586,6 +1828,8 @@ import EmployeeBoardingSearchForm from './employeeboarding/EmployeeBoarding.sear import EmployeeBoardingCreateForm from './employeeboarding/EmployeeBoarding.createform'; import EmployeeBoardingAssociateForm from './employeeboarding/EmployeeBoarding.associateform'; import EmployeeBoardingTable from './employeeboarding/EmployeeBoarding.table'; +import EmployeeBoardingPermission from './employeeboarding/EmployeeBoarding.permission'; +import EmployeeBoardingProfile from './employeeboarding/EmployeeBoarding.profile'; import EmployeeBoardingService from './employeeboarding/EmployeeBoarding.service'; import EmployeeBoardingUpdateForm from './employeeboarding/EmployeeBoarding.updateform'; import InstructorBase from './instructor/Instructor.base'; @@ -1599,6 +1843,8 @@ import InstructorSearchForm from './instructor/Instructor.searchform'; import InstructorCreateForm from './instructor/Instructor.createform'; import InstructorAssociateForm from './instructor/Instructor.associateform'; import InstructorTable from './instructor/Instructor.table'; +import InstructorPermission from './instructor/Instructor.permission'; +import InstructorProfile from './instructor/Instructor.profile'; import InstructorService from './instructor/Instructor.service'; import InstructorUpdateForm from './instructor/Instructor.updateform'; import CompanyTrainingBase from './companytraining/CompanyTraining.base'; @@ -1612,6 +1858,8 @@ import CompanyTrainingSearchForm from './companytraining/CompanyTraining.searchf import CompanyTrainingCreateForm from './companytraining/CompanyTraining.createform'; import CompanyTrainingAssociateForm from './companytraining/CompanyTraining.associateform'; import CompanyTrainingTable from './companytraining/CompanyTraining.table'; +import CompanyTrainingPermission from './companytraining/CompanyTraining.permission'; +import CompanyTrainingProfile from './companytraining/CompanyTraining.profile'; import CompanyTrainingService from './companytraining/CompanyTraining.service'; import CompanyTrainingUpdateForm from './companytraining/CompanyTraining.updateform'; import ScoringBase from './scoring/Scoring.base'; @@ -1625,6 +1873,8 @@ import ScoringSearchForm from './scoring/Scoring.searchform'; import ScoringCreateForm from './scoring/Scoring.createform'; import ScoringAssociateForm from './scoring/Scoring.associateform'; import ScoringTable from './scoring/Scoring.table'; +import ScoringPermission from './scoring/Scoring.permission'; +import ScoringProfile from './scoring/Scoring.profile'; import ScoringService from './scoring/Scoring.service'; import ScoringUpdateForm from './scoring/Scoring.updateform'; import EmployeeCompanyTrainingBase from './employeecompanytraining/EmployeeCompanyTraining.base'; @@ -1638,6 +1888,8 @@ import EmployeeCompanyTrainingSearchForm from './employeecompanytraining/Employe import EmployeeCompanyTrainingCreateForm from './employeecompanytraining/EmployeeCompanyTraining.createform'; import EmployeeCompanyTrainingAssociateForm from './employeecompanytraining/EmployeeCompanyTraining.associateform'; import EmployeeCompanyTrainingTable from './employeecompanytraining/EmployeeCompanyTraining.table'; +import EmployeeCompanyTrainingPermission from './employeecompanytraining/EmployeeCompanyTraining.permission'; +import EmployeeCompanyTrainingProfile from './employeecompanytraining/EmployeeCompanyTraining.profile'; import EmployeeCompanyTrainingService from './employeecompanytraining/EmployeeCompanyTraining.service'; import EmployeeCompanyTrainingUpdateForm from './employeecompanytraining/EmployeeCompanyTraining.updateform'; import EmployeeSkillBase from './employeeskill/EmployeeSkill.base'; @@ -1651,6 +1903,8 @@ import EmployeeSkillSearchForm from './employeeskill/EmployeeSkill.searchform'; import EmployeeSkillCreateForm from './employeeskill/EmployeeSkill.createform'; import EmployeeSkillAssociateForm from './employeeskill/EmployeeSkill.associateform'; import EmployeeSkillTable from './employeeskill/EmployeeSkill.table'; +import EmployeeSkillPermission from './employeeskill/EmployeeSkill.permission'; +import EmployeeSkillProfile from './employeeskill/EmployeeSkill.profile'; import EmployeeSkillService from './employeeskill/EmployeeSkill.service'; import EmployeeSkillUpdateForm from './employeeskill/EmployeeSkill.updateform'; import EmployeePerformanceBase from './employeeperformance/EmployeePerformance.base'; @@ -1664,6 +1918,8 @@ import EmployeePerformanceSearchForm from './employeeperformance/EmployeePerform import EmployeePerformanceCreateForm from './employeeperformance/EmployeePerformance.createform'; import EmployeePerformanceAssociateForm from './employeeperformance/EmployeePerformance.associateform'; import EmployeePerformanceTable from './employeeperformance/EmployeePerformance.table'; +import EmployeePerformancePermission from './employeeperformance/EmployeePerformance.permission'; +import EmployeePerformanceProfile from './employeeperformance/EmployeePerformance.profile'; import EmployeePerformanceService from './employeeperformance/EmployeePerformance.service'; import EmployeePerformanceUpdateForm from './employeeperformance/EmployeePerformance.updateform'; import EmployeeWorkExperienceBase from './employeeworkexperience/EmployeeWorkExperience.base'; @@ -1677,6 +1933,8 @@ import EmployeeWorkExperienceSearchForm from './employeeworkexperience/EmployeeW import EmployeeWorkExperienceCreateForm from './employeeworkexperience/EmployeeWorkExperience.createform'; import EmployeeWorkExperienceAssociateForm from './employeeworkexperience/EmployeeWorkExperience.associateform'; import EmployeeWorkExperienceTable from './employeeworkexperience/EmployeeWorkExperience.table'; +import EmployeeWorkExperiencePermission from './employeeworkexperience/EmployeeWorkExperience.permission'; +import EmployeeWorkExperienceProfile from './employeeworkexperience/EmployeeWorkExperience.profile'; import EmployeeWorkExperienceService from './employeeworkexperience/EmployeeWorkExperience.service'; import EmployeeWorkExperienceUpdateForm from './employeeworkexperience/EmployeeWorkExperience.updateform'; import EmployeeLeaveBase from './employeeleave/EmployeeLeave.base'; @@ -1690,6 +1948,8 @@ import EmployeeLeaveSearchForm from './employeeleave/EmployeeLeave.searchform'; import EmployeeLeaveCreateForm from './employeeleave/EmployeeLeave.createform'; import EmployeeLeaveAssociateForm from './employeeleave/EmployeeLeave.associateform'; import EmployeeLeaveTable from './employeeleave/EmployeeLeave.table'; +import EmployeeLeavePermission from './employeeleave/EmployeeLeave.permission'; +import EmployeeLeaveProfile from './employeeleave/EmployeeLeave.profile'; import EmployeeLeaveService from './employeeleave/EmployeeLeave.service'; import EmployeeLeaveUpdateForm from './employeeleave/EmployeeLeave.updateform'; import EmployeeInterviewBase from './employeeinterview/EmployeeInterview.base'; @@ -1703,6 +1963,8 @@ import EmployeeInterviewSearchForm from './employeeinterview/EmployeeInterview.s import EmployeeInterviewCreateForm from './employeeinterview/EmployeeInterview.createform'; import EmployeeInterviewAssociateForm from './employeeinterview/EmployeeInterview.associateform'; import EmployeeInterviewTable from './employeeinterview/EmployeeInterview.table'; +import EmployeeInterviewPermission from './employeeinterview/EmployeeInterview.permission'; +import EmployeeInterviewProfile from './employeeinterview/EmployeeInterview.profile'; import EmployeeInterviewService from './employeeinterview/EmployeeInterview.service'; import EmployeeInterviewUpdateForm from './employeeinterview/EmployeeInterview.updateform'; import EmployeeAttendanceBase from './employeeattendance/EmployeeAttendance.base'; @@ -1716,6 +1978,8 @@ import EmployeeAttendanceSearchForm from './employeeattendance/EmployeeAttendanc import EmployeeAttendanceCreateForm from './employeeattendance/EmployeeAttendance.createform'; import EmployeeAttendanceAssociateForm from './employeeattendance/EmployeeAttendance.associateform'; import EmployeeAttendanceTable from './employeeattendance/EmployeeAttendance.table'; +import EmployeeAttendancePermission from './employeeattendance/EmployeeAttendance.permission'; +import EmployeeAttendanceProfile from './employeeattendance/EmployeeAttendance.profile'; import EmployeeAttendanceService from './employeeattendance/EmployeeAttendance.service'; import EmployeeAttendanceUpdateForm from './employeeattendance/EmployeeAttendance.updateform'; import EmployeeQualifierBase from './employeequalifier/EmployeeQualifier.base'; @@ -1729,6 +1993,8 @@ import EmployeeQualifierSearchForm from './employeequalifier/EmployeeQualifier.s import EmployeeQualifierCreateForm from './employeequalifier/EmployeeQualifier.createform'; import EmployeeQualifierAssociateForm from './employeequalifier/EmployeeQualifier.associateform'; import EmployeeQualifierTable from './employeequalifier/EmployeeQualifier.table'; +import EmployeeQualifierPermission from './employeequalifier/EmployeeQualifier.permission'; +import EmployeeQualifierProfile from './employeequalifier/EmployeeQualifier.profile'; import EmployeeQualifierService from './employeequalifier/EmployeeQualifier.service'; import EmployeeQualifierUpdateForm from './employeequalifier/EmployeeQualifier.updateform'; import EmployeeEducationBase from './employeeeducation/EmployeeEducation.base'; @@ -1742,6 +2008,8 @@ import EmployeeEducationSearchForm from './employeeeducation/EmployeeEducation.s import EmployeeEducationCreateForm from './employeeeducation/EmployeeEducation.createform'; import EmployeeEducationAssociateForm from './employeeeducation/EmployeeEducation.associateform'; import EmployeeEducationTable from './employeeeducation/EmployeeEducation.table'; +import EmployeeEducationPermission from './employeeeducation/EmployeeEducation.permission'; +import EmployeeEducationProfile from './employeeeducation/EmployeeEducation.profile'; import EmployeeEducationService from './employeeeducation/EmployeeEducation.service'; import EmployeeEducationUpdateForm from './employeeeducation/EmployeeEducation.updateform'; import EmployeeAwardBase from './employeeaward/EmployeeAward.base'; @@ -1755,6 +2023,8 @@ import EmployeeAwardSearchForm from './employeeaward/EmployeeAward.searchform'; import EmployeeAwardCreateForm from './employeeaward/EmployeeAward.createform'; import EmployeeAwardAssociateForm from './employeeaward/EmployeeAward.associateform'; import EmployeeAwardTable from './employeeaward/EmployeeAward.table'; +import EmployeeAwardPermission from './employeeaward/EmployeeAward.permission'; +import EmployeeAwardProfile from './employeeaward/EmployeeAward.profile'; import EmployeeAwardService from './employeeaward/EmployeeAward.service'; import EmployeeAwardUpdateForm from './employeeaward/EmployeeAward.updateform'; import EmployeeSalarySheetBase from './employeesalarysheet/EmployeeSalarySheet.base'; @@ -1768,6 +2038,8 @@ import EmployeeSalarySheetSearchForm from './employeesalarysheet/EmployeeSalaryS import EmployeeSalarySheetCreateForm from './employeesalarysheet/EmployeeSalarySheet.createform'; import EmployeeSalarySheetAssociateForm from './employeesalarysheet/EmployeeSalarySheet.associateform'; import EmployeeSalarySheetTable from './employeesalarysheet/EmployeeSalarySheet.table'; +import EmployeeSalarySheetPermission from './employeesalarysheet/EmployeeSalarySheet.permission'; +import EmployeeSalarySheetProfile from './employeesalarysheet/EmployeeSalarySheet.profile'; import EmployeeSalarySheetService from './employeesalarysheet/EmployeeSalarySheet.service'; import EmployeeSalarySheetUpdateForm from './employeesalarysheet/EmployeeSalarySheet.updateform'; import PayingOffBase from './payingoff/PayingOff.base'; @@ -1781,6 +2053,8 @@ import PayingOffSearchForm from './payingoff/PayingOff.searchform'; import PayingOffCreateForm from './payingoff/PayingOff.createform'; import PayingOffAssociateForm from './payingoff/PayingOff.associateform'; import PayingOffTable from './payingoff/PayingOff.table'; +import PayingOffPermission from './payingoff/PayingOff.permission'; +import PayingOffProfile from './payingoff/PayingOff.profile'; import PayingOffService from './payingoff/PayingOff.service'; import PayingOffUpdateForm from './payingoff/PayingOff.updateform'; import UserDomainBase from './userdomain/UserDomain.base'; @@ -1794,6 +2068,8 @@ import UserDomainSearchForm from './userdomain/UserDomain.searchform'; import UserDomainCreateForm from './userdomain/UserDomain.createform'; import UserDomainAssociateForm from './userdomain/UserDomain.associateform'; import UserDomainTable from './userdomain/UserDomain.table'; +import UserDomainPermission from './userdomain/UserDomain.permission'; +import UserDomainProfile from './userdomain/UserDomain.profile'; import UserDomainService from './userdomain/UserDomain.service'; import UserDomainUpdateForm from './userdomain/UserDomain.updateform'; import UserWhiteListBase from './userwhitelist/UserWhiteList.base'; @@ -1807,6 +2083,8 @@ import UserWhiteListSearchForm from './userwhitelist/UserWhiteList.searchform'; import UserWhiteListCreateForm from './userwhitelist/UserWhiteList.createform'; import UserWhiteListAssociateForm from './userwhitelist/UserWhiteList.associateform'; import UserWhiteListTable from './userwhitelist/UserWhiteList.table'; +import UserWhiteListPermission from './userwhitelist/UserWhiteList.permission'; +import UserWhiteListProfile from './userwhitelist/UserWhiteList.profile'; import UserWhiteListService from './userwhitelist/UserWhiteList.service'; import UserWhiteListUpdateForm from './userwhitelist/UserWhiteList.updateform'; import SecUserBase from './secuser/SecUser.base'; @@ -1820,6 +2098,8 @@ import SecUserSearchForm from './secuser/SecUser.searchform'; import SecUserCreateForm from './secuser/SecUser.createform'; import SecUserAssociateForm from './secuser/SecUser.associateform'; import SecUserTable from './secuser/SecUser.table'; +import SecUserPermission from './secuser/SecUser.permission'; +import SecUserProfile from './secuser/SecUser.profile'; import SecUserService from './secuser/SecUser.service'; import SecUserUpdateForm from './secuser/SecUser.updateform'; import SecUserBlockingBase from './secuserblocking/SecUserBlocking.base'; @@ -1833,6 +2113,8 @@ import SecUserBlockingSearchForm from './secuserblocking/SecUserBlocking.searchf import SecUserBlockingCreateForm from './secuserblocking/SecUserBlocking.createform'; import SecUserBlockingAssociateForm from './secuserblocking/SecUserBlocking.associateform'; import SecUserBlockingTable from './secuserblocking/SecUserBlocking.table'; +import SecUserBlockingPermission from './secuserblocking/SecUserBlocking.permission'; +import SecUserBlockingProfile from './secuserblocking/SecUserBlocking.profile'; import SecUserBlockingService from './secuserblocking/SecUserBlocking.service'; import SecUserBlockingUpdateForm from './secuserblocking/SecUserBlocking.updateform'; import UserAppBase from './userapp/UserApp.base'; @@ -1846,6 +2128,8 @@ import UserAppSearchForm from './userapp/UserApp.searchform'; import UserAppCreateForm from './userapp/UserApp.createform'; import UserAppAssociateForm from './userapp/UserApp.associateform'; import UserAppTable from './userapp/UserApp.table'; +import UserAppPermission from './userapp/UserApp.permission'; +import UserAppProfile from './userapp/UserApp.profile'; import UserAppService from './userapp/UserApp.service'; import UserAppUpdateForm from './userapp/UserApp.updateform'; import ListAccessBase from './listaccess/ListAccess.base'; @@ -1859,6 +2143,8 @@ import ListAccessSearchForm from './listaccess/ListAccess.searchform'; import ListAccessCreateForm from './listaccess/ListAccess.createform'; import ListAccessAssociateForm from './listaccess/ListAccess.associateform'; import ListAccessTable from './listaccess/ListAccess.table'; +import ListAccessPermission from './listaccess/ListAccess.permission'; +import ListAccessProfile from './listaccess/ListAccess.profile'; import ListAccessService from './listaccess/ListAccess.service'; import ListAccessUpdateForm from './listaccess/ListAccess.updateform'; import ObjectAccessBase from './objectaccess/ObjectAccess.base'; @@ -1872,6 +2158,8 @@ import ObjectAccessSearchForm from './objectaccess/ObjectAccess.searchform'; import ObjectAccessCreateForm from './objectaccess/ObjectAccess.createform'; import ObjectAccessAssociateForm from './objectaccess/ObjectAccess.associateform'; import ObjectAccessTable from './objectaccess/ObjectAccess.table'; +import ObjectAccessPermission from './objectaccess/ObjectAccess.permission'; +import ObjectAccessProfile from './objectaccess/ObjectAccess.profile'; import ObjectAccessService from './objectaccess/ObjectAccess.service'; import ObjectAccessUpdateForm from './objectaccess/ObjectAccess.updateform'; import LoginHistoryBase from './loginhistory/LoginHistory.base'; @@ -1885,6 +2173,8 @@ import LoginHistorySearchForm from './loginhistory/LoginHistory.searchform'; import LoginHistoryCreateForm from './loginhistory/LoginHistory.createform'; import LoginHistoryAssociateForm from './loginhistory/LoginHistory.associateform'; import LoginHistoryTable from './loginhistory/LoginHistory.table'; +import LoginHistoryPermission from './loginhistory/LoginHistory.permission'; +import LoginHistoryProfile from './loginhistory/LoginHistory.profile'; import LoginHistoryService from './loginhistory/LoginHistory.service'; import LoginHistoryUpdateForm from './loginhistory/LoginHistory.updateform'; @@ -2418,6 +2708,8 @@ const OOTBComponents={ RetailStoreCountryCenterCreateForm, RetailStoreCountryCenterAssociateForm, RetailStoreCountryCenterTable, + RetailStoreCountryCenterPermission, + RetailStoreCountryCenterProfile, RetailStoreCountryCenterService, RetailStoreCountryCenterUpdateForm, CatalogBase, @@ -2431,6 +2723,8 @@ const OOTBComponents={ CatalogCreateForm, CatalogAssociateForm, CatalogTable, + CatalogPermission, + CatalogProfile, CatalogService, CatalogUpdateForm, LevelOneCategoryBase, @@ -2444,6 +2738,8 @@ const OOTBComponents={ LevelOneCategoryCreateForm, LevelOneCategoryAssociateForm, LevelOneCategoryTable, + LevelOneCategoryPermission, + LevelOneCategoryProfile, LevelOneCategoryService, LevelOneCategoryUpdateForm, LevelTwoCategoryBase, @@ -2457,6 +2753,8 @@ const OOTBComponents={ LevelTwoCategoryCreateForm, LevelTwoCategoryAssociateForm, LevelTwoCategoryTable, + LevelTwoCategoryPermission, + LevelTwoCategoryProfile, LevelTwoCategoryService, LevelTwoCategoryUpdateForm, LevelThreeCategoryBase, @@ -2470,6 +2768,8 @@ const OOTBComponents={ LevelThreeCategoryCreateForm, LevelThreeCategoryAssociateForm, LevelThreeCategoryTable, + LevelThreeCategoryPermission, + LevelThreeCategoryProfile, LevelThreeCategoryService, LevelThreeCategoryUpdateForm, ProductBase, @@ -2483,6 +2783,8 @@ const OOTBComponents={ ProductCreateForm, ProductAssociateForm, ProductTable, + ProductPermission, + ProductProfile, ProductService, ProductUpdateForm, SkuBase, @@ -2496,6 +2798,8 @@ const OOTBComponents={ SkuCreateForm, SkuAssociateForm, SkuTable, + SkuPermission, + SkuProfile, SkuService, SkuUpdateForm, RetailStoreProvinceCenterBase, @@ -2509,6 +2813,8 @@ const OOTBComponents={ RetailStoreProvinceCenterCreateForm, RetailStoreProvinceCenterAssociateForm, RetailStoreProvinceCenterTable, + RetailStoreProvinceCenterPermission, + RetailStoreProvinceCenterProfile, RetailStoreProvinceCenterService, RetailStoreProvinceCenterUpdateForm, ProvinceCenterDepartmentBase, @@ -2522,6 +2828,8 @@ const OOTBComponents={ ProvinceCenterDepartmentCreateForm, ProvinceCenterDepartmentAssociateForm, ProvinceCenterDepartmentTable, + ProvinceCenterDepartmentPermission, + ProvinceCenterDepartmentProfile, ProvinceCenterDepartmentService, ProvinceCenterDepartmentUpdateForm, ProvinceCenterEmployeeBase, @@ -2535,6 +2843,8 @@ const OOTBComponents={ ProvinceCenterEmployeeCreateForm, ProvinceCenterEmployeeAssociateForm, ProvinceCenterEmployeeTable, + ProvinceCenterEmployeePermission, + ProvinceCenterEmployeeProfile, ProvinceCenterEmployeeService, ProvinceCenterEmployeeUpdateForm, RetailStoreCityServiceCenterBase, @@ -2548,6 +2858,8 @@ const OOTBComponents={ RetailStoreCityServiceCenterCreateForm, RetailStoreCityServiceCenterAssociateForm, RetailStoreCityServiceCenterTable, + RetailStoreCityServiceCenterPermission, + RetailStoreCityServiceCenterProfile, RetailStoreCityServiceCenterService, RetailStoreCityServiceCenterUpdateForm, CityPartnerBase, @@ -2561,6 +2873,8 @@ const OOTBComponents={ CityPartnerCreateForm, CityPartnerAssociateForm, CityPartnerTable, + CityPartnerPermission, + CityPartnerProfile, CityPartnerService, CityPartnerUpdateForm, PotentialCustomerBase, @@ -2574,6 +2888,8 @@ const OOTBComponents={ PotentialCustomerCreateForm, PotentialCustomerAssociateForm, PotentialCustomerTable, + PotentialCustomerPermission, + PotentialCustomerProfile, PotentialCustomerService, PotentialCustomerUpdateForm, PotentialCustomerContactPersonBase, @@ -2587,6 +2903,8 @@ const OOTBComponents={ PotentialCustomerContactPersonCreateForm, PotentialCustomerContactPersonAssociateForm, PotentialCustomerContactPersonTable, + PotentialCustomerContactPersonPermission, + PotentialCustomerContactPersonProfile, PotentialCustomerContactPersonService, PotentialCustomerContactPersonUpdateForm, PotentialCustomerContactBase, @@ -2600,6 +2918,8 @@ const OOTBComponents={ PotentialCustomerContactCreateForm, PotentialCustomerContactAssociateForm, PotentialCustomerContactTable, + PotentialCustomerContactPermission, + PotentialCustomerContactProfile, PotentialCustomerContactService, PotentialCustomerContactUpdateForm, CityEventBase, @@ -2613,6 +2933,8 @@ const OOTBComponents={ CityEventCreateForm, CityEventAssociateForm, CityEventTable, + CityEventPermission, + CityEventProfile, CityEventService, CityEventUpdateForm, EventAttendanceBase, @@ -2626,6 +2948,8 @@ const OOTBComponents={ EventAttendanceCreateForm, EventAttendanceAssociateForm, EventAttendanceTable, + EventAttendancePermission, + EventAttendanceProfile, EventAttendanceService, EventAttendanceUpdateForm, RetailStoreBase, @@ -2639,6 +2963,8 @@ const OOTBComponents={ RetailStoreCreateForm, RetailStoreAssociateForm, RetailStoreTable, + RetailStorePermission, + RetailStoreProfile, RetailStoreService, RetailStoreUpdateForm, RetailStoreCreationBase, @@ -2652,6 +2978,8 @@ const OOTBComponents={ RetailStoreCreationCreateForm, RetailStoreCreationAssociateForm, RetailStoreCreationTable, + RetailStoreCreationPermission, + RetailStoreCreationProfile, RetailStoreCreationService, RetailStoreCreationUpdateForm, RetailStoreInvestmentInvitationBase, @@ -2665,6 +2993,8 @@ const OOTBComponents={ RetailStoreInvestmentInvitationCreateForm, RetailStoreInvestmentInvitationAssociateForm, RetailStoreInvestmentInvitationTable, + RetailStoreInvestmentInvitationPermission, + RetailStoreInvestmentInvitationProfile, RetailStoreInvestmentInvitationService, RetailStoreInvestmentInvitationUpdateForm, RetailStoreFranchisingBase, @@ -2678,6 +3008,8 @@ const OOTBComponents={ RetailStoreFranchisingCreateForm, RetailStoreFranchisingAssociateForm, RetailStoreFranchisingTable, + RetailStoreFranchisingPermission, + RetailStoreFranchisingProfile, RetailStoreFranchisingService, RetailStoreFranchisingUpdateForm, RetailStoreDecorationBase, @@ -2691,6 +3023,8 @@ const OOTBComponents={ RetailStoreDecorationCreateForm, RetailStoreDecorationAssociateForm, RetailStoreDecorationTable, + RetailStoreDecorationPermission, + RetailStoreDecorationProfile, RetailStoreDecorationService, RetailStoreDecorationUpdateForm, RetailStoreOpeningBase, @@ -2704,6 +3038,8 @@ const OOTBComponents={ RetailStoreOpeningCreateForm, RetailStoreOpeningAssociateForm, RetailStoreOpeningTable, + RetailStoreOpeningPermission, + RetailStoreOpeningProfile, RetailStoreOpeningService, RetailStoreOpeningUpdateForm, RetailStoreClosingBase, @@ -2717,6 +3053,8 @@ const OOTBComponents={ RetailStoreClosingCreateForm, RetailStoreClosingAssociateForm, RetailStoreClosingTable, + RetailStoreClosingPermission, + RetailStoreClosingProfile, RetailStoreClosingService, RetailStoreClosingUpdateForm, RetailStoreMemberBase, @@ -2730,6 +3068,8 @@ const OOTBComponents={ RetailStoreMemberCreateForm, RetailStoreMemberAssociateForm, RetailStoreMemberTable, + RetailStoreMemberPermission, + RetailStoreMemberProfile, RetailStoreMemberService, RetailStoreMemberUpdateForm, ConsumerOrderBase, @@ -2743,6 +3083,8 @@ const OOTBComponents={ ConsumerOrderCreateForm, ConsumerOrderAssociateForm, ConsumerOrderTable, + ConsumerOrderPermission, + ConsumerOrderProfile, ConsumerOrderService, ConsumerOrderUpdateForm, ConsumerOrderConfirmationBase, @@ -2756,6 +3098,8 @@ const OOTBComponents={ ConsumerOrderConfirmationCreateForm, ConsumerOrderConfirmationAssociateForm, ConsumerOrderConfirmationTable, + ConsumerOrderConfirmationPermission, + ConsumerOrderConfirmationProfile, ConsumerOrderConfirmationService, ConsumerOrderConfirmationUpdateForm, ConsumerOrderApprovalBase, @@ -2769,6 +3113,8 @@ const OOTBComponents={ ConsumerOrderApprovalCreateForm, ConsumerOrderApprovalAssociateForm, ConsumerOrderApprovalTable, + ConsumerOrderApprovalPermission, + ConsumerOrderApprovalProfile, ConsumerOrderApprovalService, ConsumerOrderApprovalUpdateForm, ConsumerOrderProcessingBase, @@ -2782,6 +3128,8 @@ const OOTBComponents={ ConsumerOrderProcessingCreateForm, ConsumerOrderProcessingAssociateForm, ConsumerOrderProcessingTable, + ConsumerOrderProcessingPermission, + ConsumerOrderProcessingProfile, ConsumerOrderProcessingService, ConsumerOrderProcessingUpdateForm, ConsumerOrderShipmentBase, @@ -2795,6 +3143,8 @@ const OOTBComponents={ ConsumerOrderShipmentCreateForm, ConsumerOrderShipmentAssociateForm, ConsumerOrderShipmentTable, + ConsumerOrderShipmentPermission, + ConsumerOrderShipmentProfile, ConsumerOrderShipmentService, ConsumerOrderShipmentUpdateForm, ConsumerOrderDeliveryBase, @@ -2808,6 +3158,8 @@ const OOTBComponents={ ConsumerOrderDeliveryCreateForm, ConsumerOrderDeliveryAssociateForm, ConsumerOrderDeliveryTable, + ConsumerOrderDeliveryPermission, + ConsumerOrderDeliveryProfile, ConsumerOrderDeliveryService, ConsumerOrderDeliveryUpdateForm, ConsumerOrderLineItemBase, @@ -2821,6 +3173,8 @@ const OOTBComponents={ ConsumerOrderLineItemCreateForm, ConsumerOrderLineItemAssociateForm, ConsumerOrderLineItemTable, + ConsumerOrderLineItemPermission, + ConsumerOrderLineItemProfile, ConsumerOrderLineItemService, ConsumerOrderLineItemUpdateForm, ConsumerOrderShippingGroupBase, @@ -2834,6 +3188,8 @@ const OOTBComponents={ ConsumerOrderShippingGroupCreateForm, ConsumerOrderShippingGroupAssociateForm, ConsumerOrderShippingGroupTable, + ConsumerOrderShippingGroupPermission, + ConsumerOrderShippingGroupProfile, ConsumerOrderShippingGroupService, ConsumerOrderShippingGroupUpdateForm, ConsumerOrderPaymentGroupBase, @@ -2847,6 +3203,8 @@ const OOTBComponents={ ConsumerOrderPaymentGroupCreateForm, ConsumerOrderPaymentGroupAssociateForm, ConsumerOrderPaymentGroupTable, + ConsumerOrderPaymentGroupPermission, + ConsumerOrderPaymentGroupProfile, ConsumerOrderPaymentGroupService, ConsumerOrderPaymentGroupUpdateForm, ConsumerOrderPriceAdjustmentBase, @@ -2860,6 +3218,8 @@ const OOTBComponents={ ConsumerOrderPriceAdjustmentCreateForm, ConsumerOrderPriceAdjustmentAssociateForm, ConsumerOrderPriceAdjustmentTable, + ConsumerOrderPriceAdjustmentPermission, + ConsumerOrderPriceAdjustmentProfile, ConsumerOrderPriceAdjustmentService, ConsumerOrderPriceAdjustmentUpdateForm, RetailStoreMemberCouponBase, @@ -2873,6 +3233,8 @@ const OOTBComponents={ RetailStoreMemberCouponCreateForm, RetailStoreMemberCouponAssociateForm, RetailStoreMemberCouponTable, + RetailStoreMemberCouponPermission, + RetailStoreMemberCouponProfile, RetailStoreMemberCouponService, RetailStoreMemberCouponUpdateForm, MemberWishlistBase, @@ -2886,6 +3248,8 @@ const OOTBComponents={ MemberWishlistCreateForm, MemberWishlistAssociateForm, MemberWishlistTable, + MemberWishlistPermission, + MemberWishlistProfile, MemberWishlistService, MemberWishlistUpdateForm, MemberRewardPointBase, @@ -2899,6 +3263,8 @@ const OOTBComponents={ MemberRewardPointCreateForm, MemberRewardPointAssociateForm, MemberRewardPointTable, + MemberRewardPointPermission, + MemberRewardPointProfile, MemberRewardPointService, MemberRewardPointUpdateForm, MemberRewardPointRedemptionBase, @@ -2912,6 +3278,8 @@ const OOTBComponents={ MemberRewardPointRedemptionCreateForm, MemberRewardPointRedemptionAssociateForm, MemberRewardPointRedemptionTable, + MemberRewardPointRedemptionPermission, + MemberRewardPointRedemptionProfile, MemberRewardPointRedemptionService, MemberRewardPointRedemptionUpdateForm, MemberWishlistProductBase, @@ -2925,6 +3293,8 @@ const OOTBComponents={ MemberWishlistProductCreateForm, MemberWishlistProductAssociateForm, MemberWishlistProductTable, + MemberWishlistProductPermission, + MemberWishlistProductProfile, MemberWishlistProductService, MemberWishlistProductUpdateForm, RetailStoreMemberAddressBase, @@ -2938,6 +3308,8 @@ const OOTBComponents={ RetailStoreMemberAddressCreateForm, RetailStoreMemberAddressAssociateForm, RetailStoreMemberAddressTable, + RetailStoreMemberAddressPermission, + RetailStoreMemberAddressProfile, RetailStoreMemberAddressService, RetailStoreMemberAddressUpdateForm, RetailStoreMemberGiftCardBase, @@ -2951,6 +3323,8 @@ const OOTBComponents={ RetailStoreMemberGiftCardCreateForm, RetailStoreMemberGiftCardAssociateForm, RetailStoreMemberGiftCardTable, + RetailStoreMemberGiftCardPermission, + RetailStoreMemberGiftCardProfile, RetailStoreMemberGiftCardService, RetailStoreMemberGiftCardUpdateForm, RetailStoreMemberGiftCardConsumeRecordBase, @@ -2964,6 +3338,8 @@ const OOTBComponents={ RetailStoreMemberGiftCardConsumeRecordCreateForm, RetailStoreMemberGiftCardConsumeRecordAssociateForm, RetailStoreMemberGiftCardConsumeRecordTable, + RetailStoreMemberGiftCardConsumeRecordPermission, + RetailStoreMemberGiftCardConsumeRecordProfile, RetailStoreMemberGiftCardConsumeRecordService, RetailStoreMemberGiftCardConsumeRecordUpdateForm, GoodsSupplierBase, @@ -2977,6 +3353,8 @@ const OOTBComponents={ GoodsSupplierCreateForm, GoodsSupplierAssociateForm, GoodsSupplierTable, + GoodsSupplierPermission, + GoodsSupplierProfile, GoodsSupplierService, GoodsSupplierUpdateForm, SupplierProductBase, @@ -2990,6 +3368,8 @@ const OOTBComponents={ SupplierProductCreateForm, SupplierProductAssociateForm, SupplierProductTable, + SupplierProductPermission, + SupplierProductProfile, SupplierProductService, SupplierProductUpdateForm, ProductSupplyDurationBase, @@ -3003,6 +3383,8 @@ const OOTBComponents={ ProductSupplyDurationCreateForm, ProductSupplyDurationAssociateForm, ProductSupplyDurationTable, + ProductSupplyDurationPermission, + ProductSupplyDurationProfile, ProductSupplyDurationService, ProductSupplyDurationUpdateForm, SupplyOrderBase, @@ -3016,6 +3398,8 @@ const OOTBComponents={ SupplyOrderCreateForm, SupplyOrderAssociateForm, SupplyOrderTable, + SupplyOrderPermission, + SupplyOrderProfile, SupplyOrderService, SupplyOrderUpdateForm, SupplyOrderConfirmationBase, @@ -3029,6 +3413,8 @@ const OOTBComponents={ SupplyOrderConfirmationCreateForm, SupplyOrderConfirmationAssociateForm, SupplyOrderConfirmationTable, + SupplyOrderConfirmationPermission, + SupplyOrderConfirmationProfile, SupplyOrderConfirmationService, SupplyOrderConfirmationUpdateForm, SupplyOrderApprovalBase, @@ -3042,6 +3428,8 @@ const OOTBComponents={ SupplyOrderApprovalCreateForm, SupplyOrderApprovalAssociateForm, SupplyOrderApprovalTable, + SupplyOrderApprovalPermission, + SupplyOrderApprovalProfile, SupplyOrderApprovalService, SupplyOrderApprovalUpdateForm, SupplyOrderProcessingBase, @@ -3055,6 +3443,8 @@ const OOTBComponents={ SupplyOrderProcessingCreateForm, SupplyOrderProcessingAssociateForm, SupplyOrderProcessingTable, + SupplyOrderProcessingPermission, + SupplyOrderProcessingProfile, SupplyOrderProcessingService, SupplyOrderProcessingUpdateForm, SupplyOrderPickingBase, @@ -3068,6 +3458,8 @@ const OOTBComponents={ SupplyOrderPickingCreateForm, SupplyOrderPickingAssociateForm, SupplyOrderPickingTable, + SupplyOrderPickingPermission, + SupplyOrderPickingProfile, SupplyOrderPickingService, SupplyOrderPickingUpdateForm, SupplyOrderShipmentBase, @@ -3081,6 +3473,8 @@ const OOTBComponents={ SupplyOrderShipmentCreateForm, SupplyOrderShipmentAssociateForm, SupplyOrderShipmentTable, + SupplyOrderShipmentPermission, + SupplyOrderShipmentProfile, SupplyOrderShipmentService, SupplyOrderShipmentUpdateForm, SupplyOrderDeliveryBase, @@ -3094,6 +3488,8 @@ const OOTBComponents={ SupplyOrderDeliveryCreateForm, SupplyOrderDeliveryAssociateForm, SupplyOrderDeliveryTable, + SupplyOrderDeliveryPermission, + SupplyOrderDeliveryProfile, SupplyOrderDeliveryService, SupplyOrderDeliveryUpdateForm, SupplyOrderLineItemBase, @@ -3107,6 +3503,8 @@ const OOTBComponents={ SupplyOrderLineItemCreateForm, SupplyOrderLineItemAssociateForm, SupplyOrderLineItemTable, + SupplyOrderLineItemPermission, + SupplyOrderLineItemProfile, SupplyOrderLineItemService, SupplyOrderLineItemUpdateForm, SupplyOrderShippingGroupBase, @@ -3120,6 +3518,8 @@ const OOTBComponents={ SupplyOrderShippingGroupCreateForm, SupplyOrderShippingGroupAssociateForm, SupplyOrderShippingGroupTable, + SupplyOrderShippingGroupPermission, + SupplyOrderShippingGroupProfile, SupplyOrderShippingGroupService, SupplyOrderShippingGroupUpdateForm, SupplyOrderPaymentGroupBase, @@ -3133,6 +3533,8 @@ const OOTBComponents={ SupplyOrderPaymentGroupCreateForm, SupplyOrderPaymentGroupAssociateForm, SupplyOrderPaymentGroupTable, + SupplyOrderPaymentGroupPermission, + SupplyOrderPaymentGroupProfile, SupplyOrderPaymentGroupService, SupplyOrderPaymentGroupUpdateForm, RetailStoreOrderBase, @@ -3146,6 +3548,8 @@ const OOTBComponents={ RetailStoreOrderCreateForm, RetailStoreOrderAssociateForm, RetailStoreOrderTable, + RetailStoreOrderPermission, + RetailStoreOrderProfile, RetailStoreOrderService, RetailStoreOrderUpdateForm, RetailStoreOrderConfirmationBase, @@ -3159,6 +3563,8 @@ const OOTBComponents={ RetailStoreOrderConfirmationCreateForm, RetailStoreOrderConfirmationAssociateForm, RetailStoreOrderConfirmationTable, + RetailStoreOrderConfirmationPermission, + RetailStoreOrderConfirmationProfile, RetailStoreOrderConfirmationService, RetailStoreOrderConfirmationUpdateForm, RetailStoreOrderApprovalBase, @@ -3172,6 +3578,8 @@ const OOTBComponents={ RetailStoreOrderApprovalCreateForm, RetailStoreOrderApprovalAssociateForm, RetailStoreOrderApprovalTable, + RetailStoreOrderApprovalPermission, + RetailStoreOrderApprovalProfile, RetailStoreOrderApprovalService, RetailStoreOrderApprovalUpdateForm, RetailStoreOrderProcessingBase, @@ -3185,6 +3593,8 @@ const OOTBComponents={ RetailStoreOrderProcessingCreateForm, RetailStoreOrderProcessingAssociateForm, RetailStoreOrderProcessingTable, + RetailStoreOrderProcessingPermission, + RetailStoreOrderProcessingProfile, RetailStoreOrderProcessingService, RetailStoreOrderProcessingUpdateForm, RetailStoreOrderPickingBase, @@ -3198,6 +3608,8 @@ const OOTBComponents={ RetailStoreOrderPickingCreateForm, RetailStoreOrderPickingAssociateForm, RetailStoreOrderPickingTable, + RetailStoreOrderPickingPermission, + RetailStoreOrderPickingProfile, RetailStoreOrderPickingService, RetailStoreOrderPickingUpdateForm, RetailStoreOrderShipmentBase, @@ -3211,6 +3623,8 @@ const OOTBComponents={ RetailStoreOrderShipmentCreateForm, RetailStoreOrderShipmentAssociateForm, RetailStoreOrderShipmentTable, + RetailStoreOrderShipmentPermission, + RetailStoreOrderShipmentProfile, RetailStoreOrderShipmentService, RetailStoreOrderShipmentUpdateForm, RetailStoreOrderDeliveryBase, @@ -3224,6 +3638,8 @@ const OOTBComponents={ RetailStoreOrderDeliveryCreateForm, RetailStoreOrderDeliveryAssociateForm, RetailStoreOrderDeliveryTable, + RetailStoreOrderDeliveryPermission, + RetailStoreOrderDeliveryProfile, RetailStoreOrderDeliveryService, RetailStoreOrderDeliveryUpdateForm, RetailStoreOrderLineItemBase, @@ -3237,6 +3653,8 @@ const OOTBComponents={ RetailStoreOrderLineItemCreateForm, RetailStoreOrderLineItemAssociateForm, RetailStoreOrderLineItemTable, + RetailStoreOrderLineItemPermission, + RetailStoreOrderLineItemProfile, RetailStoreOrderLineItemService, RetailStoreOrderLineItemUpdateForm, RetailStoreOrderShippingGroupBase, @@ -3250,6 +3668,8 @@ const OOTBComponents={ RetailStoreOrderShippingGroupCreateForm, RetailStoreOrderShippingGroupAssociateForm, RetailStoreOrderShippingGroupTable, + RetailStoreOrderShippingGroupPermission, + RetailStoreOrderShippingGroupProfile, RetailStoreOrderShippingGroupService, RetailStoreOrderShippingGroupUpdateForm, RetailStoreOrderPaymentGroupBase, @@ -3263,6 +3683,8 @@ const OOTBComponents={ RetailStoreOrderPaymentGroupCreateForm, RetailStoreOrderPaymentGroupAssociateForm, RetailStoreOrderPaymentGroupTable, + RetailStoreOrderPaymentGroupPermission, + RetailStoreOrderPaymentGroupProfile, RetailStoreOrderPaymentGroupService, RetailStoreOrderPaymentGroupUpdateForm, WarehouseBase, @@ -3276,6 +3698,8 @@ const OOTBComponents={ WarehouseCreateForm, WarehouseAssociateForm, WarehouseTable, + WarehousePermission, + WarehouseProfile, WarehouseService, WarehouseUpdateForm, StorageSpaceBase, @@ -3289,6 +3713,8 @@ const OOTBComponents={ StorageSpaceCreateForm, StorageSpaceAssociateForm, StorageSpaceTable, + StorageSpacePermission, + StorageSpaceProfile, StorageSpaceService, StorageSpaceUpdateForm, SmartPalletBase, @@ -3302,6 +3728,8 @@ const OOTBComponents={ SmartPalletCreateForm, SmartPalletAssociateForm, SmartPalletTable, + SmartPalletPermission, + SmartPalletProfile, SmartPalletService, SmartPalletUpdateForm, GoodsShelfBase, @@ -3315,6 +3743,8 @@ const OOTBComponents={ GoodsShelfCreateForm, GoodsShelfAssociateForm, GoodsShelfTable, + GoodsShelfPermission, + GoodsShelfProfile, GoodsShelfService, GoodsShelfUpdateForm, GoodsShelfStockCountBase, @@ -3328,6 +3758,8 @@ const OOTBComponents={ GoodsShelfStockCountCreateForm, GoodsShelfStockCountAssociateForm, GoodsShelfStockCountTable, + GoodsShelfStockCountPermission, + GoodsShelfStockCountProfile, GoodsShelfStockCountService, GoodsShelfStockCountUpdateForm, StockCountIssueTrackBase, @@ -3341,6 +3773,8 @@ const OOTBComponents={ StockCountIssueTrackCreateForm, StockCountIssueTrackAssociateForm, StockCountIssueTrackTable, + StockCountIssueTrackPermission, + StockCountIssueTrackProfile, StockCountIssueTrackService, StockCountIssueTrackUpdateForm, GoodsAllocationBase, @@ -3354,6 +3788,8 @@ const OOTBComponents={ GoodsAllocationCreateForm, GoodsAllocationAssociateForm, GoodsAllocationTable, + GoodsAllocationPermission, + GoodsAllocationProfile, GoodsAllocationService, GoodsAllocationUpdateForm, GoodsBase, @@ -3367,6 +3803,8 @@ const OOTBComponents={ GoodsCreateForm, GoodsAssociateForm, GoodsTable, + GoodsPermission, + GoodsProfile, GoodsService, GoodsUpdateForm, GoodsPackagingBase, @@ -3380,6 +3818,8 @@ const OOTBComponents={ GoodsPackagingCreateForm, GoodsPackagingAssociateForm, GoodsPackagingTable, + GoodsPackagingPermission, + GoodsPackagingProfile, GoodsPackagingService, GoodsPackagingUpdateForm, GoodsMovementBase, @@ -3393,6 +3833,8 @@ const OOTBComponents={ GoodsMovementCreateForm, GoodsMovementAssociateForm, GoodsMovementTable, + GoodsMovementPermission, + GoodsMovementProfile, GoodsMovementService, GoodsMovementUpdateForm, SupplierSpaceBase, @@ -3406,6 +3848,8 @@ const OOTBComponents={ SupplierSpaceCreateForm, SupplierSpaceAssociateForm, SupplierSpaceTable, + SupplierSpacePermission, + SupplierSpaceProfile, SupplierSpaceService, SupplierSpaceUpdateForm, ReceivingSpaceBase, @@ -3419,6 +3863,8 @@ const OOTBComponents={ ReceivingSpaceCreateForm, ReceivingSpaceAssociateForm, ReceivingSpaceTable, + ReceivingSpacePermission, + ReceivingSpaceProfile, ReceivingSpaceService, ReceivingSpaceUpdateForm, ShippingSpaceBase, @@ -3432,6 +3878,8 @@ const OOTBComponents={ ShippingSpaceCreateForm, ShippingSpaceAssociateForm, ShippingSpaceTable, + ShippingSpacePermission, + ShippingSpaceProfile, ShippingSpaceService, ShippingSpaceUpdateForm, DamageSpaceBase, @@ -3445,6 +3893,8 @@ const OOTBComponents={ DamageSpaceCreateForm, DamageSpaceAssociateForm, DamageSpaceTable, + DamageSpacePermission, + DamageSpaceProfile, DamageSpaceService, DamageSpaceUpdateForm, WarehouseAssetBase, @@ -3458,6 +3908,8 @@ const OOTBComponents={ WarehouseAssetCreateForm, WarehouseAssetAssociateForm, WarehouseAssetTable, + WarehouseAssetPermission, + WarehouseAssetProfile, WarehouseAssetService, WarehouseAssetUpdateForm, TransportFleetBase, @@ -3471,6 +3923,8 @@ const OOTBComponents={ TransportFleetCreateForm, TransportFleetAssociateForm, TransportFleetTable, + TransportFleetPermission, + TransportFleetProfile, TransportFleetService, TransportFleetUpdateForm, TransportTruckBase, @@ -3484,6 +3938,8 @@ const OOTBComponents={ TransportTruckCreateForm, TransportTruckAssociateForm, TransportTruckTable, + TransportTruckPermission, + TransportTruckProfile, TransportTruckService, TransportTruckUpdateForm, TruckDriverBase, @@ -3497,6 +3953,8 @@ const OOTBComponents={ TruckDriverCreateForm, TruckDriverAssociateForm, TruckDriverTable, + TruckDriverPermission, + TruckDriverProfile, TruckDriverService, TruckDriverUpdateForm, TransportTaskBase, @@ -3510,6 +3968,8 @@ const OOTBComponents={ TransportTaskCreateForm, TransportTaskAssociateForm, TransportTaskTable, + TransportTaskPermission, + TransportTaskProfile, TransportTaskService, TransportTaskUpdateForm, TransportTaskTrackBase, @@ -3523,6 +3983,8 @@ const OOTBComponents={ TransportTaskTrackCreateForm, TransportTaskTrackAssociateForm, TransportTaskTrackTable, + TransportTaskTrackPermission, + TransportTaskTrackProfile, TransportTaskTrackService, TransportTaskTrackUpdateForm, AccountSetBase, @@ -3536,6 +3998,8 @@ const OOTBComponents={ AccountSetCreateForm, AccountSetAssociateForm, AccountSetTable, + AccountSetPermission, + AccountSetProfile, AccountSetService, AccountSetUpdateForm, AccountingSubjectBase, @@ -3549,6 +4013,8 @@ const OOTBComponents={ AccountingSubjectCreateForm, AccountingSubjectAssociateForm, AccountingSubjectTable, + AccountingSubjectPermission, + AccountingSubjectProfile, AccountingSubjectService, AccountingSubjectUpdateForm, AccountingPeriodBase, @@ -3562,6 +4028,8 @@ const OOTBComponents={ AccountingPeriodCreateForm, AccountingPeriodAssociateForm, AccountingPeriodTable, + AccountingPeriodPermission, + AccountingPeriodProfile, AccountingPeriodService, AccountingPeriodUpdateForm, AccountingDocumentTypeBase, @@ -3575,6 +4043,8 @@ const OOTBComponents={ AccountingDocumentTypeCreateForm, AccountingDocumentTypeAssociateForm, AccountingDocumentTypeTable, + AccountingDocumentTypePermission, + AccountingDocumentTypeProfile, AccountingDocumentTypeService, AccountingDocumentTypeUpdateForm, AccountingDocumentBase, @@ -3588,6 +4058,8 @@ const OOTBComponents={ AccountingDocumentCreateForm, AccountingDocumentAssociateForm, AccountingDocumentTable, + AccountingDocumentPermission, + AccountingDocumentProfile, AccountingDocumentService, AccountingDocumentUpdateForm, AccountingDocumentCreationBase, @@ -3601,6 +4073,8 @@ const OOTBComponents={ AccountingDocumentCreationCreateForm, AccountingDocumentCreationAssociateForm, AccountingDocumentCreationTable, + AccountingDocumentCreationPermission, + AccountingDocumentCreationProfile, AccountingDocumentCreationService, AccountingDocumentCreationUpdateForm, AccountingDocumentConfirmationBase, @@ -3614,6 +4088,8 @@ const OOTBComponents={ AccountingDocumentConfirmationCreateForm, AccountingDocumentConfirmationAssociateForm, AccountingDocumentConfirmationTable, + AccountingDocumentConfirmationPermission, + AccountingDocumentConfirmationProfile, AccountingDocumentConfirmationService, AccountingDocumentConfirmationUpdateForm, AccountingDocumentAuditingBase, @@ -3627,6 +4103,8 @@ const OOTBComponents={ AccountingDocumentAuditingCreateForm, AccountingDocumentAuditingAssociateForm, AccountingDocumentAuditingTable, + AccountingDocumentAuditingPermission, + AccountingDocumentAuditingProfile, AccountingDocumentAuditingService, AccountingDocumentAuditingUpdateForm, AccountingDocumentPostingBase, @@ -3640,6 +4118,8 @@ const OOTBComponents={ AccountingDocumentPostingCreateForm, AccountingDocumentPostingAssociateForm, AccountingDocumentPostingTable, + AccountingDocumentPostingPermission, + AccountingDocumentPostingProfile, AccountingDocumentPostingService, AccountingDocumentPostingUpdateForm, OriginalVoucherBase, @@ -3653,6 +4133,8 @@ const OOTBComponents={ OriginalVoucherCreateForm, OriginalVoucherAssociateForm, OriginalVoucherTable, + OriginalVoucherPermission, + OriginalVoucherProfile, OriginalVoucherService, OriginalVoucherUpdateForm, OriginalVoucherCreationBase, @@ -3666,6 +4148,8 @@ const OOTBComponents={ OriginalVoucherCreationCreateForm, OriginalVoucherCreationAssociateForm, OriginalVoucherCreationTable, + OriginalVoucherCreationPermission, + OriginalVoucherCreationProfile, OriginalVoucherCreationService, OriginalVoucherCreationUpdateForm, OriginalVoucherConfirmationBase, @@ -3679,6 +4163,8 @@ const OOTBComponents={ OriginalVoucherConfirmationCreateForm, OriginalVoucherConfirmationAssociateForm, OriginalVoucherConfirmationTable, + OriginalVoucherConfirmationPermission, + OriginalVoucherConfirmationProfile, OriginalVoucherConfirmationService, OriginalVoucherConfirmationUpdateForm, OriginalVoucherAuditingBase, @@ -3692,6 +4178,8 @@ const OOTBComponents={ OriginalVoucherAuditingCreateForm, OriginalVoucherAuditingAssociateForm, OriginalVoucherAuditingTable, + OriginalVoucherAuditingPermission, + OriginalVoucherAuditingProfile, OriginalVoucherAuditingService, OriginalVoucherAuditingUpdateForm, AccountingDocumentLineBase, @@ -3705,6 +4193,8 @@ const OOTBComponents={ AccountingDocumentLineCreateForm, AccountingDocumentLineAssociateForm, AccountingDocumentLineTable, + AccountingDocumentLinePermission, + AccountingDocumentLineProfile, AccountingDocumentLineService, AccountingDocumentLineUpdateForm, LevelOneDepartmentBase, @@ -3718,6 +4208,8 @@ const OOTBComponents={ LevelOneDepartmentCreateForm, LevelOneDepartmentAssociateForm, LevelOneDepartmentTable, + LevelOneDepartmentPermission, + LevelOneDepartmentProfile, LevelOneDepartmentService, LevelOneDepartmentUpdateForm, LevelTwoDepartmentBase, @@ -3731,6 +4223,8 @@ const OOTBComponents={ LevelTwoDepartmentCreateForm, LevelTwoDepartmentAssociateForm, LevelTwoDepartmentTable, + LevelTwoDepartmentPermission, + LevelTwoDepartmentProfile, LevelTwoDepartmentService, LevelTwoDepartmentUpdateForm, LevelThreeDepartmentBase, @@ -3744,6 +4238,8 @@ const OOTBComponents={ LevelThreeDepartmentCreateForm, LevelThreeDepartmentAssociateForm, LevelThreeDepartmentTable, + LevelThreeDepartmentPermission, + LevelThreeDepartmentProfile, LevelThreeDepartmentService, LevelThreeDepartmentUpdateForm, SkillTypeBase, @@ -3757,6 +4253,8 @@ const OOTBComponents={ SkillTypeCreateForm, SkillTypeAssociateForm, SkillTypeTable, + SkillTypePermission, + SkillTypeProfile, SkillTypeService, SkillTypeUpdateForm, ResponsibilityTypeBase, @@ -3770,6 +4268,8 @@ const OOTBComponents={ ResponsibilityTypeCreateForm, ResponsibilityTypeAssociateForm, ResponsibilityTypeTable, + ResponsibilityTypePermission, + ResponsibilityTypeProfile, ResponsibilityTypeService, ResponsibilityTypeUpdateForm, TerminationReasonBase, @@ -3783,6 +4283,8 @@ const OOTBComponents={ TerminationReasonCreateForm, TerminationReasonAssociateForm, TerminationReasonTable, + TerminationReasonPermission, + TerminationReasonProfile, TerminationReasonService, TerminationReasonUpdateForm, TerminationTypeBase, @@ -3796,6 +4298,8 @@ const OOTBComponents={ TerminationTypeCreateForm, TerminationTypeAssociateForm, TerminationTypeTable, + TerminationTypePermission, + TerminationTypeProfile, TerminationTypeService, TerminationTypeUpdateForm, OccupationTypeBase, @@ -3809,6 +4313,8 @@ const OOTBComponents={ OccupationTypeCreateForm, OccupationTypeAssociateForm, OccupationTypeTable, + OccupationTypePermission, + OccupationTypeProfile, OccupationTypeService, OccupationTypeUpdateForm, LeaveTypeBase, @@ -3822,6 +4328,8 @@ const OOTBComponents={ LeaveTypeCreateForm, LeaveTypeAssociateForm, LeaveTypeTable, + LeaveTypePermission, + LeaveTypeProfile, LeaveTypeService, LeaveTypeUpdateForm, SalaryGradeBase, @@ -3835,6 +4343,8 @@ const OOTBComponents={ SalaryGradeCreateForm, SalaryGradeAssociateForm, SalaryGradeTable, + SalaryGradePermission, + SalaryGradeProfile, SalaryGradeService, SalaryGradeUpdateForm, InterviewTypeBase, @@ -3848,6 +4358,8 @@ const OOTBComponents={ InterviewTypeCreateForm, InterviewTypeAssociateForm, InterviewTypeTable, + InterviewTypePermission, + InterviewTypeProfile, InterviewTypeService, InterviewTypeUpdateForm, TrainingCourseTypeBase, @@ -3861,6 +4373,8 @@ const OOTBComponents={ TrainingCourseTypeCreateForm, TrainingCourseTypeAssociateForm, TrainingCourseTypeTable, + TrainingCourseTypePermission, + TrainingCourseTypeProfile, TrainingCourseTypeService, TrainingCourseTypeUpdateForm, PublicHolidayBase, @@ -3874,6 +4388,8 @@ const OOTBComponents={ PublicHolidayCreateForm, PublicHolidayAssociateForm, PublicHolidayTable, + PublicHolidayPermission, + PublicHolidayProfile, PublicHolidayService, PublicHolidayUpdateForm, TerminationBase, @@ -3887,6 +4403,8 @@ const OOTBComponents={ TerminationCreateForm, TerminationAssociateForm, TerminationTable, + TerminationPermission, + TerminationProfile, TerminationService, TerminationUpdateForm, ViewBase, @@ -3900,6 +4418,8 @@ const OOTBComponents={ ViewCreateForm, ViewAssociateForm, ViewTable, + ViewPermission, + ViewProfile, ViewService, ViewUpdateForm, EmployeeBase, @@ -3913,6 +4433,8 @@ const OOTBComponents={ EmployeeCreateForm, EmployeeAssociateForm, EmployeeTable, + EmployeePermission, + EmployeeProfile, EmployeeService, EmployeeUpdateForm, JobApplicationBase, @@ -3926,6 +4448,8 @@ const OOTBComponents={ JobApplicationCreateForm, JobApplicationAssociateForm, JobApplicationTable, + JobApplicationPermission, + JobApplicationProfile, JobApplicationService, JobApplicationUpdateForm, ProfessionInterviewBase, @@ -3939,6 +4463,8 @@ const OOTBComponents={ ProfessionInterviewCreateForm, ProfessionInterviewAssociateForm, ProfessionInterviewTable, + ProfessionInterviewPermission, + ProfessionInterviewProfile, ProfessionInterviewService, ProfessionInterviewUpdateForm, HrInterviewBase, @@ -3952,6 +4478,8 @@ const OOTBComponents={ HrInterviewCreateForm, HrInterviewAssociateForm, HrInterviewTable, + HrInterviewPermission, + HrInterviewProfile, HrInterviewService, HrInterviewUpdateForm, OfferApprovalBase, @@ -3965,6 +4493,8 @@ const OOTBComponents={ OfferApprovalCreateForm, OfferApprovalAssociateForm, OfferApprovalTable, + OfferApprovalPermission, + OfferApprovalProfile, OfferApprovalService, OfferApprovalUpdateForm, OfferAcceptanceBase, @@ -3978,6 +4508,8 @@ const OOTBComponents={ OfferAcceptanceCreateForm, OfferAcceptanceAssociateForm, OfferAcceptanceTable, + OfferAcceptancePermission, + OfferAcceptanceProfile, OfferAcceptanceService, OfferAcceptanceUpdateForm, EmployeeBoardingBase, @@ -3991,6 +4523,8 @@ const OOTBComponents={ EmployeeBoardingCreateForm, EmployeeBoardingAssociateForm, EmployeeBoardingTable, + EmployeeBoardingPermission, + EmployeeBoardingProfile, EmployeeBoardingService, EmployeeBoardingUpdateForm, InstructorBase, @@ -4004,6 +4538,8 @@ const OOTBComponents={ InstructorCreateForm, InstructorAssociateForm, InstructorTable, + InstructorPermission, + InstructorProfile, InstructorService, InstructorUpdateForm, CompanyTrainingBase, @@ -4017,6 +4553,8 @@ const OOTBComponents={ CompanyTrainingCreateForm, CompanyTrainingAssociateForm, CompanyTrainingTable, + CompanyTrainingPermission, + CompanyTrainingProfile, CompanyTrainingService, CompanyTrainingUpdateForm, ScoringBase, @@ -4030,6 +4568,8 @@ const OOTBComponents={ ScoringCreateForm, ScoringAssociateForm, ScoringTable, + ScoringPermission, + ScoringProfile, ScoringService, ScoringUpdateForm, EmployeeCompanyTrainingBase, @@ -4043,6 +4583,8 @@ const OOTBComponents={ EmployeeCompanyTrainingCreateForm, EmployeeCompanyTrainingAssociateForm, EmployeeCompanyTrainingTable, + EmployeeCompanyTrainingPermission, + EmployeeCompanyTrainingProfile, EmployeeCompanyTrainingService, EmployeeCompanyTrainingUpdateForm, EmployeeSkillBase, @@ -4056,6 +4598,8 @@ const OOTBComponents={ EmployeeSkillCreateForm, EmployeeSkillAssociateForm, EmployeeSkillTable, + EmployeeSkillPermission, + EmployeeSkillProfile, EmployeeSkillService, EmployeeSkillUpdateForm, EmployeePerformanceBase, @@ -4069,6 +4613,8 @@ const OOTBComponents={ EmployeePerformanceCreateForm, EmployeePerformanceAssociateForm, EmployeePerformanceTable, + EmployeePerformancePermission, + EmployeePerformanceProfile, EmployeePerformanceService, EmployeePerformanceUpdateForm, EmployeeWorkExperienceBase, @@ -4082,6 +4628,8 @@ const OOTBComponents={ EmployeeWorkExperienceCreateForm, EmployeeWorkExperienceAssociateForm, EmployeeWorkExperienceTable, + EmployeeWorkExperiencePermission, + EmployeeWorkExperienceProfile, EmployeeWorkExperienceService, EmployeeWorkExperienceUpdateForm, EmployeeLeaveBase, @@ -4095,6 +4643,8 @@ const OOTBComponents={ EmployeeLeaveCreateForm, EmployeeLeaveAssociateForm, EmployeeLeaveTable, + EmployeeLeavePermission, + EmployeeLeaveProfile, EmployeeLeaveService, EmployeeLeaveUpdateForm, EmployeeInterviewBase, @@ -4108,6 +4658,8 @@ const OOTBComponents={ EmployeeInterviewCreateForm, EmployeeInterviewAssociateForm, EmployeeInterviewTable, + EmployeeInterviewPermission, + EmployeeInterviewProfile, EmployeeInterviewService, EmployeeInterviewUpdateForm, EmployeeAttendanceBase, @@ -4121,6 +4673,8 @@ const OOTBComponents={ EmployeeAttendanceCreateForm, EmployeeAttendanceAssociateForm, EmployeeAttendanceTable, + EmployeeAttendancePermission, + EmployeeAttendanceProfile, EmployeeAttendanceService, EmployeeAttendanceUpdateForm, EmployeeQualifierBase, @@ -4134,6 +4688,8 @@ const OOTBComponents={ EmployeeQualifierCreateForm, EmployeeQualifierAssociateForm, EmployeeQualifierTable, + EmployeeQualifierPermission, + EmployeeQualifierProfile, EmployeeQualifierService, EmployeeQualifierUpdateForm, EmployeeEducationBase, @@ -4147,6 +4703,8 @@ const OOTBComponents={ EmployeeEducationCreateForm, EmployeeEducationAssociateForm, EmployeeEducationTable, + EmployeeEducationPermission, + EmployeeEducationProfile, EmployeeEducationService, EmployeeEducationUpdateForm, EmployeeAwardBase, @@ -4160,6 +4718,8 @@ const OOTBComponents={ EmployeeAwardCreateForm, EmployeeAwardAssociateForm, EmployeeAwardTable, + EmployeeAwardPermission, + EmployeeAwardProfile, EmployeeAwardService, EmployeeAwardUpdateForm, EmployeeSalarySheetBase, @@ -4173,6 +4733,8 @@ const OOTBComponents={ EmployeeSalarySheetCreateForm, EmployeeSalarySheetAssociateForm, EmployeeSalarySheetTable, + EmployeeSalarySheetPermission, + EmployeeSalarySheetProfile, EmployeeSalarySheetService, EmployeeSalarySheetUpdateForm, PayingOffBase, @@ -4186,6 +4748,8 @@ const OOTBComponents={ PayingOffCreateForm, PayingOffAssociateForm, PayingOffTable, + PayingOffPermission, + PayingOffProfile, PayingOffService, PayingOffUpdateForm, UserDomainBase, @@ -4199,6 +4763,8 @@ const OOTBComponents={ UserDomainCreateForm, UserDomainAssociateForm, UserDomainTable, + UserDomainPermission, + UserDomainProfile, UserDomainService, UserDomainUpdateForm, UserWhiteListBase, @@ -4212,6 +4778,8 @@ const OOTBComponents={ UserWhiteListCreateForm, UserWhiteListAssociateForm, UserWhiteListTable, + UserWhiteListPermission, + UserWhiteListProfile, UserWhiteListService, UserWhiteListUpdateForm, SecUserBase, @@ -4225,6 +4793,8 @@ const OOTBComponents={ SecUserCreateForm, SecUserAssociateForm, SecUserTable, + SecUserPermission, + SecUserProfile, SecUserService, SecUserUpdateForm, SecUserBlockingBase, @@ -4238,6 +4808,8 @@ const OOTBComponents={ SecUserBlockingCreateForm, SecUserBlockingAssociateForm, SecUserBlockingTable, + SecUserBlockingPermission, + SecUserBlockingProfile, SecUserBlockingService, SecUserBlockingUpdateForm, UserAppBase, @@ -4251,6 +4823,8 @@ const OOTBComponents={ UserAppCreateForm, UserAppAssociateForm, UserAppTable, + UserAppPermission, + UserAppProfile, UserAppService, UserAppUpdateForm, ListAccessBase, @@ -4264,6 +4838,8 @@ const OOTBComponents={ ListAccessCreateForm, ListAccessAssociateForm, ListAccessTable, + ListAccessPermission, + ListAccessProfile, ListAccessService, ListAccessUpdateForm, ObjectAccessBase, @@ -4277,6 +4853,8 @@ const OOTBComponents={ ObjectAccessCreateForm, ObjectAccessAssociateForm, ObjectAccessTable, + ObjectAccessPermission, + ObjectAccessProfile, ObjectAccessService, ObjectAccessUpdateForm, LoginHistoryBase, @@ -4290,6 +4868,8 @@ const OOTBComponents={ LoginHistoryCreateForm, LoginHistoryAssociateForm, LoginHistoryTable, + LoginHistoryPermission, + LoginHistoryProfile, LoginHistoryService, LoginHistoryUpdateForm, menuDataOf,bindBizModels,unbindBizModels,calcLocationPath,calcMenuData diff --git a/bizui/src/bizcomponents/instructor/Instructor.app.js b/bizui/src/bizcomponents/instructor/Instructor.app.js index b80f6942c..be0c174c9 100644 --- a/bizui/src/bizcomponents/instructor/Instructor.app.js +++ b/bizui/src/bizcomponents/instructor/Instructor.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class InstructorBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class InstructorBizApp extends React.PureComponent { buildRouters = () =>{ const {InstructorDashboard} = GlobalComponents - const {InstructorPreference} = GlobalComponents + const {InstructorPermission} = GlobalComponents + const {InstructorProfile} = GlobalComponents const routers=[ {path:"/instructor/:id/dashboard", component: InstructorDashboard}, - {path:"/instructor/:id/preference", component: InstructorPreference}, + {path:"/instructor/:id/profile", component: InstructorProfile}, + {path:"/instructor/:id/permission", component: InstructorPermission}, diff --git a/bizui/src/bizcomponents/instructor/Instructor.associateform.js b/bizui/src/bizcomponents/instructor/Instructor.associateform.js index 626ba23e0..36dae1031 100644 --- a/bizui/src/bizcomponents/instructor/Instructor.associateform.js +++ b/bizui/src/bizcomponents/instructor/Instructor.associateform.js @@ -144,7 +144,7 @@ class InstructorAssociateForm extends Component { {getFieldDecorator('title', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -154,7 +154,7 @@ class InstructorAssociateForm extends Component { {getFieldDecorator('familyName', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -164,7 +164,7 @@ class InstructorAssociateForm extends Component { {getFieldDecorator('givenName', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -174,7 +174,7 @@ class InstructorAssociateForm extends Component { {getFieldDecorator('cellPhone', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -184,7 +184,7 @@ class InstructorAssociateForm extends Component { {getFieldDecorator('email', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -194,7 +194,7 @@ class InstructorAssociateForm extends Component { {getFieldDecorator('introduction', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/instructor/Instructor.associateform.less b/bizui/src/bizcomponents/instructor/Instructor.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/instructor/Instructor.associateform.less +++ b/bizui/src/bizcomponents/instructor/Instructor.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/instructor/Instructor.base.js b/bizui/src/bizcomponents/instructor/Instructor.base.js index 48d9851c1..d8bc59c1a 100644 --- a/bizui/src/bizcomponents/instructor/Instructor.base.js +++ b/bizui/src/bizcomponents/instructor/Instructor.base.js @@ -1,95 +1,41 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"讲师", menuFor: "instructor", subItems: [ - {name: 'companyTrainingList', displayName:'公司培训', icon:'om',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'companyTrainingList', displayName:'公司培训', icon:'om',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) - -} - -const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'instructor') }, - { title: '头衔', debugtype: 'string', dataIndex: 'title', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: '姓', debugtype: 'string', dataIndex: 'familyName', width: '5',render: (text, record)=>renderTextCell(text,record) }, - { title: '名', debugtype: 'string', dataIndex: 'givenName', width: '6',render: (text, record)=>renderTextCell(text,record) }, - { title: '手机', debugtype: 'string_china_mobile_phone', dataIndex: 'cellPhone', width: '15',render: (text, record)=>renderTextCell(text,record) }, - { title: '电子邮件', debugtype: 'string_email', dataIndex: 'email', width: '24',render: (text, record)=>renderTextCell(text,record) }, - { title: '公司', dataIndex: 'company', render: (text, record) => renderReferenceCell(text, record)}, - { title: '介绍', debugtype: 'string', dataIndex: 'introduction', width: '19',render: (text, record)=>renderTextCell(text,record) }, - { title: '最后更新时间', dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record) }, - -] - const fieldLabels = { id: '序号', title: '头衔', @@ -103,8 +49,46 @@ const fieldLabels = { } +const displayColumns = [ + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'instructor') , sorter: true }, + { title: fieldLabels.title, debugtype: 'string', dataIndex: 'title', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.familyName, debugtype: 'string', dataIndex: 'familyName', width: '5',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.givenName, debugtype: 'string', dataIndex: 'givenName', width: '6',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.cellPhone, debugtype: 'string_china_mobile_phone', dataIndex: 'cellPhone', width: '15',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.email, debugtype: 'string_email', dataIndex: 'email', width: '24',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.company, dataIndex: 'company', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.introduction, debugtype: 'string', dataIndex: 'introduction', width: '19',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.lastUpdateTime, dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record), sorter: true}, + +] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({instructor,targetComponent})=>{ + + + + const {InstructorService} = GlobalComponents + // const userContext = null + return ( + +{instructor.id} +{instructor.title} +{instructor.familyName} +{instructor.givenName} +{instructor.cellPhone} +{instructor.email} +{instructor.introduction} +{ moment(instructor.lastUpdateTime).format('YYYY-MM-DD')} + + {buildTransferModal(instructor,targetComponent)} + + ) + +} + + + -const InstructorBase={menuData,displayColumns,fieldLabels} +const InstructorBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default InstructorBase diff --git a/bizui/src/bizcomponents/instructor/Instructor.createform.js b/bizui/src/bizcomponents/instructor/Instructor.createform.js index 4824391f7..9d566f288 100644 --- a/bizui/src/bizcomponents/instructor/Instructor.createform.js +++ b/bizui/src/bizcomponents/instructor/Instructor.createform.js @@ -212,7 +212,7 @@ class InstructorCreateForm extends Component { {getFieldDecorator('title', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -222,7 +222,7 @@ class InstructorCreateForm extends Component { {getFieldDecorator('familyName', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -232,7 +232,7 @@ class InstructorCreateForm extends Component { {getFieldDecorator('givenName', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -242,7 +242,7 @@ class InstructorCreateForm extends Component { {getFieldDecorator('cellPhone', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -252,7 +252,7 @@ class InstructorCreateForm extends Component { {getFieldDecorator('email', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -262,7 +262,7 @@ class InstructorCreateForm extends Component { {getFieldDecorator('introduction', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/instructor/Instructor.dashboard.js b/bizui/src/bizcomponents/instructor/Instructor.dashboard.js index aaad41c87..c4bc315cd 100644 --- a/bizui/src/bizcomponents/instructor/Instructor.dashboard.js +++ b/bizui/src/bizcomponents/instructor/Instructor.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -142,6 +142,7 @@ class InstructorDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -150,13 +151,17 @@ class InstructorDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/instructor/Instructor.model.js b/bizui/src/bizcomponents/instructor/Instructor.model.js index bb6eda4da..90fc1e50f 100644 --- a/bizui/src/bizcomponents/instructor/Instructor.model.js +++ b/bizui/src/bizcomponents/instructor/Instructor.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/instructor/${id}/list/\CompanyTrainingList/公司培训+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/instructor/${id}/list/CompanyTrainingList/公司培训+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateCompanyTraining({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/instructor/${id}/list/\CompanyTrainingList/公司培训列表`, state: newPlayload } + const location = { pathname: `/instructor/${id}/list/CompanyTrainingList/公司培训列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextCompanyTrainingUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/instructor/Instructor.permission.js b/bizui/src/bizcomponents/instructor/Instructor.permission.js new file mode 100644 index 000000000..e78057d4b --- /dev/null +++ b/bizui/src/bizcomponents/instructor/Instructor.permission.js @@ -0,0 +1,90 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './Instructor.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (instructor,targetComponent) =>{ + const userContext = null + return ( + +{instructor.id} +{instructor.title} +{instructor.familyName} +{instructor.givenName} +{instructor.cellPhone} +{instructor.email} +{instructor.introduction} +{ moment(instructor.lastUpdateTime).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = instructor => { + const {InstructorBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class InstructorPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const instructor = this.props.instructor; + const { id,displayName, companyTrainingCount } = instructor + const cardsData = {cardsName:"讲师",cardsFor: "instructor",cardsSource: instructor, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + instructor: state._instructor, +}))(Form.create()(InstructorPermission)) + diff --git a/bizui/src/bizcomponents/instructor/Instructor.permission.less b/bizui/src/bizcomponents/instructor/Instructor.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/instructor/Instructor.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/instructor/Instructor.preference.js b/bizui/src/bizcomponents/instructor/Instructor.preference.js index cabc87eb6..5331f8561 100644 --- a/bizui/src/bizcomponents/instructor/Instructor.preference.js +++ b/bizui/src/bizcomponents/instructor/Instructor.preference.js @@ -305,8 +305,12 @@ class InstructorPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, companyTrainingCount } = this.props.instructor - const cardsData = {cardsName:"讲师",cardsFor: "instructor",cardsSource: this.props.instructor, + const instructor = this.props.instructor; + const { id,displayName, companyTrainingCount } = instructor + + + + const cardsData = {cardsName:"讲师",cardsFor: "instructor",cardsSource: instructor, subItems: [ ], diff --git a/bizui/src/bizcomponents/instructor/Instructor.profile.js b/bizui/src/bizcomponents/instructor/Instructor.profile.js new file mode 100644 index 000000000..0c76ab36a --- /dev/null +++ b/bizui/src/bizcomponents/instructor/Instructor.profile.js @@ -0,0 +1,97 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './Instructor.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (instructor,targetComponent) =>{ + const userContext = null + return ( + +{instructor.id} +{instructor.title} +{instructor.familyName} +{instructor.givenName} +{instructor.cellPhone} +{instructor.email} +{instructor.introduction} +{ moment(instructor.lastUpdateTime).format('YYYY-MM-DD')} + + + ) +} + + + +class InstructorProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const instructor = this.props.instructor; + const { id,displayName, companyTrainingCount } = instructor + + const cardsData = {cardsName:"讲师",cardsFor: "instructor",cardsSource: instructor, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + instructor: state._instructor, +}))(Form.create()(InstructorProfile)) + diff --git a/bizui/src/bizcomponents/instructor/Instructor.profile.less b/bizui/src/bizcomponents/instructor/Instructor.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/instructor/Instructor.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/instructor/Instructor.search.js b/bizui/src/bizcomponents/instructor/Instructor.search.js index 94ad09941..fcc3efc06 100644 --- a/bizui/src/bizcomponents/instructor/Instructor.search.js +++ b/bizui/src/bizcomponents/instructor/Instructor.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/instructor/Instructor.searchform.js b/bizui/src/bizcomponents/instructor/Instructor.searchform.js index a5ac2fc7c..d95046f66 100644 --- a/bizui/src/bizcomponents/instructor/Instructor.searchform.js +++ b/bizui/src/bizcomponents/instructor/Instructor.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`instructorList.searchField`] = fieldName - value[`instructorList.searchVerb`] = searchVerb - value[`instructorList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,16 +127,17 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'title')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'familyName')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'givenName')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'cellPhone')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'email')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'company')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'introduction')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'title')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'familyName')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'givenName')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'cellPhone')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'email')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'company')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'introduction')) console.log("the final parameter", paramList) @@ -152,11 +153,12 @@ componentDidMount() { } - params['instructorList'] = 1 - params['instructorList.orderBy.0'] = "id" - params['instructorList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -211,8 +213,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -322,8 +324,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/instructor/Instructor.table.js b/bizui/src/bizcomponents/instructor/Instructor.table.js index bc01cb8fb..c4df0115b 100644 --- a/bizui/src/bizcomponents/instructor/Instructor.table.js +++ b/bizui/src/bizcomponents/instructor/Instructor.table.js @@ -40,24 +40,53 @@ class InstructorTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = InstructorBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class InstructorTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class InstructorTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/instructor/Instructor.updateform.js b/bizui/src/bizcomponents/instructor/Instructor.updateform.js index bb5d40bc0..7190cbf99 100644 --- a/bizui/src/bizcomponents/instructor/Instructor.updateform.js +++ b/bizui/src/bizcomponents/instructor/Instructor.updateform.js @@ -262,7 +262,7 @@ class InstructorUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class InstructorUpdateForm extends Component { initialValue: selectedRow.title, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class InstructorUpdateForm extends Component { initialValue: selectedRow.familyName, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -298,7 +298,7 @@ class InstructorUpdateForm extends Component { initialValue: selectedRow.givenName, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -310,7 +310,7 @@ class InstructorUpdateForm extends Component { initialValue: selectedRow.cellPhone, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -322,7 +322,7 @@ class InstructorUpdateForm extends Component { initialValue: selectedRow.email, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -334,7 +334,7 @@ class InstructorUpdateForm extends Component { initialValue: selectedRow.introduction, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/interviewtype/InterviewType.app.js b/bizui/src/bizcomponents/interviewtype/InterviewType.app.js index bd9163fe8..c21852113 100644 --- a/bizui/src/bizcomponents/interviewtype/InterviewType.app.js +++ b/bizui/src/bizcomponents/interviewtype/InterviewType.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class InterviewTypeBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class InterviewTypeBizApp extends React.PureComponent { buildRouters = () =>{ const {InterviewTypeDashboard} = GlobalComponents - const {InterviewTypePreference} = GlobalComponents + const {InterviewTypePermission} = GlobalComponents + const {InterviewTypeProfile} = GlobalComponents const routers=[ {path:"/interviewType/:id/dashboard", component: InterviewTypeDashboard}, - {path:"/interviewType/:id/preference", component: InterviewTypePreference}, + {path:"/interviewType/:id/profile", component: InterviewTypeProfile}, + {path:"/interviewType/:id/permission", component: InterviewTypePermission}, diff --git a/bizui/src/bizcomponents/interviewtype/InterviewType.associateform.js b/bizui/src/bizcomponents/interviewtype/InterviewType.associateform.js index a43904451..f75e7bff9 100644 --- a/bizui/src/bizcomponents/interviewtype/InterviewType.associateform.js +++ b/bizui/src/bizcomponents/interviewtype/InterviewType.associateform.js @@ -141,7 +141,7 @@ class InterviewTypeAssociateForm extends Component { {getFieldDecorator('code', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -151,7 +151,7 @@ class InterviewTypeAssociateForm extends Component { {getFieldDecorator('description', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -161,7 +161,7 @@ class InterviewTypeAssociateForm extends Component { {getFieldDecorator('detailDescription', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/interviewtype/InterviewType.associateform.less b/bizui/src/bizcomponents/interviewtype/InterviewType.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/interviewtype/InterviewType.associateform.less +++ b/bizui/src/bizcomponents/interviewtype/InterviewType.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/interviewtype/InterviewType.base.js b/bizui/src/bizcomponents/interviewtype/InterviewType.base.js index 576950e11..655856eda 100644 --- a/bizui/src/bizcomponents/interviewtype/InterviewType.base.js +++ b/bizui/src/bizcomponents/interviewtype/InterviewType.base.js @@ -1,102 +1,82 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"面试类型", menuFor: "interviewType", subItems: [ - {name: 'employeeInterviewList', displayName:'员工面试', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'employeeInterviewList', displayName:'员工面试', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + code: '代码', + company: '公司', + description: '描述', + detailDescription: '详细描述', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'interviewType') }, - { title: '代码', debugtype: 'string', dataIndex: 'code', width: '12',render: (text, record)=>renderTextCell(text,record) }, - { title: '公司', dataIndex: 'company', render: (text, record) => renderReferenceCell(text, record)}, - { title: '描述', debugtype: 'string', dataIndex: 'description', width: '10',render: (text, record)=>renderTextCell(text,record) }, - { title: '详细描述', debugtype: 'string', dataIndex: 'detailDescription', width: '65',render: (text, record)=>renderTextCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'interviewType') , sorter: true }, + { title: fieldLabels.code, debugtype: 'string', dataIndex: 'code', width: '12',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.company, dataIndex: 'company', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.description, debugtype: 'string', dataIndex: 'description', width: '10',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.detailDescription, debugtype: 'string', dataIndex: 'detailDescription', width: '65',render: (text, record)=>renderTextCell(text,record)}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({interviewType,targetComponent})=>{ -const fieldLabels = { - id: '序号', - code: '代码', - company: '公司', - description: '描述', - detailDescription: '详细描述', + + + const {InterviewTypeService} = GlobalComponents + // const userContext = null + return ( + +{interviewType.id} +{interviewType.code} +{interviewType.description} +{interviewType.detailDescription} + + {buildTransferModal(interviewType,targetComponent)} + + ) } + + -const InterviewTypeBase={menuData,displayColumns,fieldLabels} +const InterviewTypeBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default InterviewTypeBase diff --git a/bizui/src/bizcomponents/interviewtype/InterviewType.createform.js b/bizui/src/bizcomponents/interviewtype/InterviewType.createform.js index d78f75e1b..0fe858fc3 100644 --- a/bizui/src/bizcomponents/interviewtype/InterviewType.createform.js +++ b/bizui/src/bizcomponents/interviewtype/InterviewType.createform.js @@ -209,7 +209,7 @@ class InterviewTypeCreateForm extends Component { {getFieldDecorator('code', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -219,7 +219,7 @@ class InterviewTypeCreateForm extends Component { {getFieldDecorator('description', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -229,7 +229,7 @@ class InterviewTypeCreateForm extends Component { {getFieldDecorator('detailDescription', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/interviewtype/InterviewType.dashboard.js b/bizui/src/bizcomponents/interviewtype/InterviewType.dashboard.js index 7925307e0..ae2ffc015 100644 --- a/bizui/src/bizcomponents/interviewtype/InterviewType.dashboard.js +++ b/bizui/src/bizcomponents/interviewtype/InterviewType.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -138,6 +138,7 @@ class InterviewTypeDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -146,13 +147,17 @@ class InterviewTypeDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/interviewtype/InterviewType.model.js b/bizui/src/bizcomponents/interviewtype/InterviewType.model.js index 97a19866d..9b2e4e9b5 100644 --- a/bizui/src/bizcomponents/interviewtype/InterviewType.model.js +++ b/bizui/src/bizcomponents/interviewtype/InterviewType.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/interviewType/${id}/list/\EmployeeInterviewList/员工面试+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/interviewType/${id}/list/EmployeeInterviewList/员工面试+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateEmployeeInterview({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/interviewType/${id}/list/\EmployeeInterviewList/员工面试列表`, state: newPlayload } + const location = { pathname: `/interviewType/${id}/list/EmployeeInterviewList/员工面试列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextEmployeeInterviewUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/interviewtype/InterviewType.permission.js b/bizui/src/bizcomponents/interviewtype/InterviewType.permission.js new file mode 100644 index 000000000..cfd98236c --- /dev/null +++ b/bizui/src/bizcomponents/interviewtype/InterviewType.permission.js @@ -0,0 +1,86 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './InterviewType.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (interviewType,targetComponent) =>{ + const userContext = null + return ( + +{interviewType.id} +{interviewType.code} +{interviewType.description} +{interviewType.detailDescription} + + + ) +} + + +const renderPermissionSetting = interviewType => { + const {InterviewTypeBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class InterviewTypePermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const interviewType = this.props.interviewType; + const { id,displayName, employeeInterviewCount } = interviewType + const cardsData = {cardsName:"面试类型",cardsFor: "interviewType",cardsSource: interviewType, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + interviewType: state._interviewType, +}))(Form.create()(InterviewTypePermission)) + diff --git a/bizui/src/bizcomponents/interviewtype/InterviewType.permission.less b/bizui/src/bizcomponents/interviewtype/InterviewType.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/interviewtype/InterviewType.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/interviewtype/InterviewType.preference.js b/bizui/src/bizcomponents/interviewtype/InterviewType.preference.js index b01f15c7f..536fbc76a 100644 --- a/bizui/src/bizcomponents/interviewtype/InterviewType.preference.js +++ b/bizui/src/bizcomponents/interviewtype/InterviewType.preference.js @@ -301,8 +301,12 @@ class InterviewTypePreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, employeeInterviewCount } = this.props.interviewType - const cardsData = {cardsName:"面试类型",cardsFor: "interviewType",cardsSource: this.props.interviewType, + const interviewType = this.props.interviewType; + const { id,displayName, employeeInterviewCount } = interviewType + + + + const cardsData = {cardsName:"面试类型",cardsFor: "interviewType",cardsSource: interviewType, subItems: [ ], diff --git a/bizui/src/bizcomponents/interviewtype/InterviewType.profile.js b/bizui/src/bizcomponents/interviewtype/InterviewType.profile.js new file mode 100644 index 000000000..ee4676062 --- /dev/null +++ b/bizui/src/bizcomponents/interviewtype/InterviewType.profile.js @@ -0,0 +1,93 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './InterviewType.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (interviewType,targetComponent) =>{ + const userContext = null + return ( + +{interviewType.id} +{interviewType.code} +{interviewType.description} +{interviewType.detailDescription} + + + ) +} + + + +class InterviewTypeProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const interviewType = this.props.interviewType; + const { id,displayName, employeeInterviewCount } = interviewType + + const cardsData = {cardsName:"面试类型",cardsFor: "interviewType",cardsSource: interviewType, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + interviewType: state._interviewType, +}))(Form.create()(InterviewTypeProfile)) + diff --git a/bizui/src/bizcomponents/interviewtype/InterviewType.profile.less b/bizui/src/bizcomponents/interviewtype/InterviewType.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/interviewtype/InterviewType.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/interviewtype/InterviewType.search.js b/bizui/src/bizcomponents/interviewtype/InterviewType.search.js index 51ff3909e..eea7c3837 100644 --- a/bizui/src/bizcomponents/interviewtype/InterviewType.search.js +++ b/bizui/src/bizcomponents/interviewtype/InterviewType.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/interviewtype/InterviewType.searchform.js b/bizui/src/bizcomponents/interviewtype/InterviewType.searchform.js index a7468a699..17149bf1d 100644 --- a/bizui/src/bizcomponents/interviewtype/InterviewType.searchform.js +++ b/bizui/src/bizcomponents/interviewtype/InterviewType.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`interviewTypeList.searchField`] = fieldName - value[`interviewTypeList.searchVerb`] = searchVerb - value[`interviewTypeList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,13 +127,14 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'code')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'company')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'description')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'detailDescription')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'code')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'company')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'description')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'detailDescription')) console.log("the final parameter", paramList) @@ -149,11 +150,12 @@ componentDidMount() { } - params['interviewTypeList'] = 1 - params['interviewTypeList.orderBy.0'] = "id" - params['interviewTypeList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -208,8 +210,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -295,8 +297,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/interviewtype/InterviewType.table.js b/bizui/src/bizcomponents/interviewtype/InterviewType.table.js index 0efa9dd59..b197560dd 100644 --- a/bizui/src/bizcomponents/interviewtype/InterviewType.table.js +++ b/bizui/src/bizcomponents/interviewtype/InterviewType.table.js @@ -40,24 +40,53 @@ class InterviewTypeTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = InterviewTypeBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class InterviewTypeTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class InterviewTypeTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/interviewtype/InterviewType.updateform.js b/bizui/src/bizcomponents/interviewtype/InterviewType.updateform.js index 819fec5fd..a3d6fb27b 100644 --- a/bizui/src/bizcomponents/interviewtype/InterviewType.updateform.js +++ b/bizui/src/bizcomponents/interviewtype/InterviewType.updateform.js @@ -261,7 +261,7 @@ class InterviewTypeUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class InterviewTypeUpdateForm extends Component { initialValue: selectedRow.code, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -285,7 +285,7 @@ class InterviewTypeUpdateForm extends Component { initialValue: selectedRow.description, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -297,7 +297,7 @@ class InterviewTypeUpdateForm extends Component { initialValue: selectedRow.detailDescription, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/jobapplication/JobApplication.app.js b/bizui/src/bizcomponents/jobapplication/JobApplication.app.js index 7088fffde..a69751ed6 100644 --- a/bizui/src/bizcomponents/jobapplication/JobApplication.app.js +++ b/bizui/src/bizcomponents/jobapplication/JobApplication.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class JobApplicationBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class JobApplicationBizApp extends React.PureComponent { buildRouters = () =>{ const {JobApplicationDashboard} = GlobalComponents - const {JobApplicationPreference} = GlobalComponents + const {JobApplicationPermission} = GlobalComponents + const {JobApplicationProfile} = GlobalComponents const routers=[ {path:"/jobApplication/:id/dashboard", component: JobApplicationDashboard}, - {path:"/jobApplication/:id/preference", component: JobApplicationPreference}, + {path:"/jobApplication/:id/profile", component: JobApplicationProfile}, + {path:"/jobApplication/:id/permission", component: JobApplicationPermission}, diff --git a/bizui/src/bizcomponents/jobapplication/JobApplication.associateform.js b/bizui/src/bizcomponents/jobapplication/JobApplication.associateform.js index 369320a81..121eb163f 100644 --- a/bizui/src/bizcomponents/jobapplication/JobApplication.associateform.js +++ b/bizui/src/bizcomponents/jobapplication/JobApplication.associateform.js @@ -18,7 +18,7 @@ const { TextArea } = Input const testValues = {}; /* const testValues = { - applicationTime: '2018-03-21', + applicationTime: '2016-12-27', who: '申请者本人', comments: '我觉得我符合职位要求,请给我一个机会为公司发展做出贡献,谢谢!', } @@ -140,7 +140,7 @@ class JobApplicationAssociateForm extends Component { {getFieldDecorator('applicationTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -150,7 +150,7 @@ class JobApplicationAssociateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -160,7 +160,7 @@ class JobApplicationAssociateForm extends Component { {getFieldDecorator('comments', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/jobapplication/JobApplication.associateform.less b/bizui/src/bizcomponents/jobapplication/JobApplication.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/jobapplication/JobApplication.associateform.less +++ b/bizui/src/bizcomponents/jobapplication/JobApplication.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/jobapplication/JobApplication.base.js b/bizui/src/bizcomponents/jobapplication/JobApplication.base.js index 511247922..0010733a9 100644 --- a/bizui/src/bizcomponents/jobapplication/JobApplication.base.js +++ b/bizui/src/bizcomponents/jobapplication/JobApplication.base.js @@ -1,100 +1,80 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"工作申请", menuFor: "jobApplication", subItems: [ - {name: 'employeeList', displayName:'员工', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'employeeList', displayName:'员工', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + applicationTime: '申请时间', + who: '谁', + comments: '评论', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'jobApplication') }, - { title: '申请时间', dataIndex: 'applicationTime', render: (text, record) =>renderDateCell(text,record) }, - { title: '谁', debugtype: 'string', dataIndex: 'who', width: '9',render: (text, record)=>renderTextCell(text,record) }, - { title: '评论', debugtype: 'string', dataIndex: 'comments', width: '35',render: (text, record)=>renderTextCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'jobApplication') , sorter: true }, + { title: fieldLabels.applicationTime, dataIndex: 'applicationTime', render: (text, record) =>renderDateCell(text,record), sorter: true }, + { title: fieldLabels.who, debugtype: 'string', dataIndex: 'who', width: '9',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.comments, debugtype: 'string', dataIndex: 'comments', width: '35',render: (text, record)=>renderTextCell(text,record)}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({jobApplication,targetComponent})=>{ -const fieldLabels = { - id: '序号', - applicationTime: '申请时间', - who: '谁', - comments: '评论', + + + const {JobApplicationService} = GlobalComponents + // const userContext = null + return ( + +{jobApplication.id} +{ moment(jobApplication.applicationTime).format('YYYY-MM-DD')} +{jobApplication.who} +{jobApplication.comments} + + {buildTransferModal(jobApplication,targetComponent)} + + ) } + + -const JobApplicationBase={menuData,displayColumns,fieldLabels} +const JobApplicationBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default JobApplicationBase diff --git a/bizui/src/bizcomponents/jobapplication/JobApplication.createform.js b/bizui/src/bizcomponents/jobapplication/JobApplication.createform.js index 723578f3a..27d74abf5 100644 --- a/bizui/src/bizcomponents/jobapplication/JobApplication.createform.js +++ b/bizui/src/bizcomponents/jobapplication/JobApplication.createform.js @@ -17,7 +17,7 @@ const { TextArea } = Input const testValues = {}; /* const testValues = { - applicationTime: '2017-12-25', + applicationTime: '2019-02-24', who: '申请者本人', comments: '我觉得我符合职位要求,请给我一个机会为公司发展做出贡献,谢谢!', } @@ -208,7 +208,7 @@ class JobApplicationCreateForm extends Component { {getFieldDecorator('applicationTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -218,7 +218,7 @@ class JobApplicationCreateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -228,7 +228,7 @@ class JobApplicationCreateForm extends Component { {getFieldDecorator('comments', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/jobapplication/JobApplication.dashboard.js b/bizui/src/bizcomponents/jobapplication/JobApplication.dashboard.js index 5e618eab2..b68a25c7f 100644 --- a/bizui/src/bizcomponents/jobapplication/JobApplication.dashboard.js +++ b/bizui/src/bizcomponents/jobapplication/JobApplication.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -138,6 +138,7 @@ class JobApplicationDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -146,13 +147,17 @@ class JobApplicationDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/jobapplication/JobApplication.model.js b/bizui/src/bizcomponents/jobapplication/JobApplication.model.js index d62fd4fe5..2d2ff761c 100644 --- a/bizui/src/bizcomponents/jobapplication/JobApplication.model.js +++ b/bizui/src/bizcomponents/jobapplication/JobApplication.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/jobApplication/${id}/list/\EmployeeList/员工+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/jobApplication/${id}/list/EmployeeList/员工+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateEmployee({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/jobApplication/${id}/list/\EmployeeList/员工列表`, state: newPlayload } + const location = { pathname: `/jobApplication/${id}/list/EmployeeList/员工列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextEmployeeUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/jobapplication/JobApplication.permission.js b/bizui/src/bizcomponents/jobapplication/JobApplication.permission.js new file mode 100644 index 000000000..1a94be7eb --- /dev/null +++ b/bizui/src/bizcomponents/jobapplication/JobApplication.permission.js @@ -0,0 +1,86 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './JobApplication.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (jobApplication,targetComponent) =>{ + const userContext = null + return ( + +{jobApplication.id} +{ moment(jobApplication.applicationTime).format('YYYY-MM-DD')} +{jobApplication.who} +{jobApplication.comments} + + + ) +} + + +const renderPermissionSetting = jobApplication => { + const {JobApplicationBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class JobApplicationPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const jobApplication = this.props.jobApplication; + const { id,displayName, employeeCount } = jobApplication + const cardsData = {cardsName:"工作申请",cardsFor: "jobApplication",cardsSource: jobApplication, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + jobApplication: state._jobApplication, +}))(Form.create()(JobApplicationPermission)) + diff --git a/bizui/src/bizcomponents/jobapplication/JobApplication.permission.less b/bizui/src/bizcomponents/jobapplication/JobApplication.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/jobapplication/JobApplication.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/jobapplication/JobApplication.preference.js b/bizui/src/bizcomponents/jobapplication/JobApplication.preference.js index d406ad0cd..5b5b886d5 100644 --- a/bizui/src/bizcomponents/jobapplication/JobApplication.preference.js +++ b/bizui/src/bizcomponents/jobapplication/JobApplication.preference.js @@ -301,8 +301,12 @@ class JobApplicationPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, employeeCount } = this.props.jobApplication - const cardsData = {cardsName:"工作申请",cardsFor: "jobApplication",cardsSource: this.props.jobApplication, + const jobApplication = this.props.jobApplication; + const { id,displayName, employeeCount } = jobApplication + + + + const cardsData = {cardsName:"工作申请",cardsFor: "jobApplication",cardsSource: jobApplication, subItems: [ ], diff --git a/bizui/src/bizcomponents/jobapplication/JobApplication.profile.js b/bizui/src/bizcomponents/jobapplication/JobApplication.profile.js new file mode 100644 index 000000000..5ab366bb5 --- /dev/null +++ b/bizui/src/bizcomponents/jobapplication/JobApplication.profile.js @@ -0,0 +1,93 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './JobApplication.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (jobApplication,targetComponent) =>{ + const userContext = null + return ( + +{jobApplication.id} +{ moment(jobApplication.applicationTime).format('YYYY-MM-DD')} +{jobApplication.who} +{jobApplication.comments} + + + ) +} + + + +class JobApplicationProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const jobApplication = this.props.jobApplication; + const { id,displayName, employeeCount } = jobApplication + + const cardsData = {cardsName:"工作申请",cardsFor: "jobApplication",cardsSource: jobApplication, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + jobApplication: state._jobApplication, +}))(Form.create()(JobApplicationProfile)) + diff --git a/bizui/src/bizcomponents/jobapplication/JobApplication.profile.less b/bizui/src/bizcomponents/jobapplication/JobApplication.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/jobapplication/JobApplication.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/jobapplication/JobApplication.search.js b/bizui/src/bizcomponents/jobapplication/JobApplication.search.js index a4bc3938a..0e711b250 100644 --- a/bizui/src/bizcomponents/jobapplication/JobApplication.search.js +++ b/bizui/src/bizcomponents/jobapplication/JobApplication.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/jobapplication/JobApplication.searchform.js b/bizui/src/bizcomponents/jobapplication/JobApplication.searchform.js index 6d78bb069..7728861ee 100644 --- a/bizui/src/bizcomponents/jobapplication/JobApplication.searchform.js +++ b/bizui/src/bizcomponents/jobapplication/JobApplication.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`jobApplicationList.searchField`] = fieldName - value[`jobApplicationList.searchVerb`] = searchVerb - value[`jobApplicationList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,11 +127,12 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'who')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'comments')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'who')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'comments')) console.log("the final parameter", paramList) @@ -147,11 +148,12 @@ componentDidMount() { } - params['jobApplicationList'] = 1 - params['jobApplicationList.orderBy.0'] = "id" - params['jobApplicationList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -206,8 +208,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -270,8 +272,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/jobapplication/JobApplication.table.js b/bizui/src/bizcomponents/jobapplication/JobApplication.table.js index 6c4923535..2068be0b2 100644 --- a/bizui/src/bizcomponents/jobapplication/JobApplication.table.js +++ b/bizui/src/bizcomponents/jobapplication/JobApplication.table.js @@ -40,24 +40,53 @@ class JobApplicationTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = JobApplicationBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class JobApplicationTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class JobApplicationTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/jobapplication/JobApplication.updateform.js b/bizui/src/bizcomponents/jobapplication/JobApplication.updateform.js index 08a0eb7f5..936714eb4 100644 --- a/bizui/src/bizcomponents/jobapplication/JobApplication.updateform.js +++ b/bizui/src/bizcomponents/jobapplication/JobApplication.updateform.js @@ -262,7 +262,7 @@ class JobApplicationUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class JobApplicationUpdateForm extends Component { initialValue: selectedRow.applicationTime, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class JobApplicationUpdateForm extends Component { initialValue: selectedRow.who, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -298,7 +298,7 @@ class JobApplicationUpdateForm extends Component { initialValue: selectedRow.comments, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/leavetype/LeaveType.app.js b/bizui/src/bizcomponents/leavetype/LeaveType.app.js index a353df3b4..3f8532f8d 100644 --- a/bizui/src/bizcomponents/leavetype/LeaveType.app.js +++ b/bizui/src/bizcomponents/leavetype/LeaveType.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class LeaveTypeBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class LeaveTypeBizApp extends React.PureComponent { buildRouters = () =>{ const {LeaveTypeDashboard} = GlobalComponents - const {LeaveTypePreference} = GlobalComponents + const {LeaveTypePermission} = GlobalComponents + const {LeaveTypeProfile} = GlobalComponents const routers=[ {path:"/leaveType/:id/dashboard", component: LeaveTypeDashboard}, - {path:"/leaveType/:id/preference", component: LeaveTypePreference}, + {path:"/leaveType/:id/profile", component: LeaveTypeProfile}, + {path:"/leaveType/:id/permission", component: LeaveTypePermission}, diff --git a/bizui/src/bizcomponents/leavetype/LeaveType.associateform.js b/bizui/src/bizcomponents/leavetype/LeaveType.associateform.js index a6183fd47..d5e3e423f 100644 --- a/bizui/src/bizcomponents/leavetype/LeaveType.associateform.js +++ b/bizui/src/bizcomponents/leavetype/LeaveType.associateform.js @@ -141,7 +141,7 @@ class LeaveTypeAssociateForm extends Component { {getFieldDecorator('code', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -151,7 +151,7 @@ class LeaveTypeAssociateForm extends Component { {getFieldDecorator('description', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -161,7 +161,7 @@ class LeaveTypeAssociateForm extends Component { {getFieldDecorator('detailDescription', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/leavetype/LeaveType.associateform.less b/bizui/src/bizcomponents/leavetype/LeaveType.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/leavetype/LeaveType.associateform.less +++ b/bizui/src/bizcomponents/leavetype/LeaveType.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/leavetype/LeaveType.base.js b/bizui/src/bizcomponents/leavetype/LeaveType.base.js index 9db3e5f38..05afae61c 100644 --- a/bizui/src/bizcomponents/leavetype/LeaveType.base.js +++ b/bizui/src/bizcomponents/leavetype/LeaveType.base.js @@ -1,102 +1,82 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"请假类型", menuFor: "leaveType", subItems: [ - {name: 'employeeLeaveList', displayName:'请假记录', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'employeeLeaveList', displayName:'请假记录', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + code: '代码', + company: '公司', + description: '描述', + detailDescription: '详细描述', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'leaveType') }, - { title: '代码', debugtype: 'string', dataIndex: 'code', width: '10',render: (text, record)=>renderTextCell(text,record) }, - { title: '公司', dataIndex: 'company', render: (text, record) => renderReferenceCell(text, record)}, - { title: '描述', debugtype: 'string', dataIndex: 'description', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: '详细描述', debugtype: 'string', dataIndex: 'detailDescription', width: '65',render: (text, record)=>renderTextCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'leaveType') , sorter: true }, + { title: fieldLabels.code, debugtype: 'string', dataIndex: 'code', width: '10',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.company, dataIndex: 'company', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.description, debugtype: 'string', dataIndex: 'description', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.detailDescription, debugtype: 'string', dataIndex: 'detailDescription', width: '65',render: (text, record)=>renderTextCell(text,record)}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({leaveType,targetComponent})=>{ -const fieldLabels = { - id: '序号', - code: '代码', - company: '公司', - description: '描述', - detailDescription: '详细描述', + + + const {LeaveTypeService} = GlobalComponents + // const userContext = null + return ( + +{leaveType.id} +{leaveType.code} +{leaveType.description} +{leaveType.detailDescription} + + {buildTransferModal(leaveType,targetComponent)} + + ) } + + -const LeaveTypeBase={menuData,displayColumns,fieldLabels} +const LeaveTypeBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default LeaveTypeBase diff --git a/bizui/src/bizcomponents/leavetype/LeaveType.createform.js b/bizui/src/bizcomponents/leavetype/LeaveType.createform.js index a5e66ef29..517538766 100644 --- a/bizui/src/bizcomponents/leavetype/LeaveType.createform.js +++ b/bizui/src/bizcomponents/leavetype/LeaveType.createform.js @@ -209,7 +209,7 @@ class LeaveTypeCreateForm extends Component { {getFieldDecorator('code', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -219,7 +219,7 @@ class LeaveTypeCreateForm extends Component { {getFieldDecorator('description', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -229,7 +229,7 @@ class LeaveTypeCreateForm extends Component { {getFieldDecorator('detailDescription', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/leavetype/LeaveType.dashboard.js b/bizui/src/bizcomponents/leavetype/LeaveType.dashboard.js index 0c584c983..2becc945e 100644 --- a/bizui/src/bizcomponents/leavetype/LeaveType.dashboard.js +++ b/bizui/src/bizcomponents/leavetype/LeaveType.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -138,6 +138,7 @@ class LeaveTypeDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -146,13 +147,17 @@ class LeaveTypeDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/leavetype/LeaveType.model.js b/bizui/src/bizcomponents/leavetype/LeaveType.model.js index 6c8539a14..793afa251 100644 --- a/bizui/src/bizcomponents/leavetype/LeaveType.model.js +++ b/bizui/src/bizcomponents/leavetype/LeaveType.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/leaveType/${id}/list/\EmployeeLeaveList/请假记录+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/leaveType/${id}/list/EmployeeLeaveList/请假记录+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateEmployeeLeave({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/leaveType/${id}/list/\EmployeeLeaveList/请假记录列表`, state: newPlayload } + const location = { pathname: `/leaveType/${id}/list/EmployeeLeaveList/请假记录列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextEmployeeLeaveUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/leavetype/LeaveType.permission.js b/bizui/src/bizcomponents/leavetype/LeaveType.permission.js new file mode 100644 index 000000000..e8cc3fac2 --- /dev/null +++ b/bizui/src/bizcomponents/leavetype/LeaveType.permission.js @@ -0,0 +1,86 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './LeaveType.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (leaveType,targetComponent) =>{ + const userContext = null + return ( + +{leaveType.id} +{leaveType.code} +{leaveType.description} +{leaveType.detailDescription} + + + ) +} + + +const renderPermissionSetting = leaveType => { + const {LeaveTypeBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class LeaveTypePermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const leaveType = this.props.leaveType; + const { id,displayName, employeeLeaveCount } = leaveType + const cardsData = {cardsName:"请假类型",cardsFor: "leaveType",cardsSource: leaveType, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + leaveType: state._leaveType, +}))(Form.create()(LeaveTypePermission)) + diff --git a/bizui/src/bizcomponents/leavetype/LeaveType.permission.less b/bizui/src/bizcomponents/leavetype/LeaveType.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/leavetype/LeaveType.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/leavetype/LeaveType.preference.js b/bizui/src/bizcomponents/leavetype/LeaveType.preference.js index 4302bcab3..2ff3eb010 100644 --- a/bizui/src/bizcomponents/leavetype/LeaveType.preference.js +++ b/bizui/src/bizcomponents/leavetype/LeaveType.preference.js @@ -301,8 +301,12 @@ class LeaveTypePreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, employeeLeaveCount } = this.props.leaveType - const cardsData = {cardsName:"请假类型",cardsFor: "leaveType",cardsSource: this.props.leaveType, + const leaveType = this.props.leaveType; + const { id,displayName, employeeLeaveCount } = leaveType + + + + const cardsData = {cardsName:"请假类型",cardsFor: "leaveType",cardsSource: leaveType, subItems: [ ], diff --git a/bizui/src/bizcomponents/leavetype/LeaveType.profile.js b/bizui/src/bizcomponents/leavetype/LeaveType.profile.js new file mode 100644 index 000000000..2eede4a77 --- /dev/null +++ b/bizui/src/bizcomponents/leavetype/LeaveType.profile.js @@ -0,0 +1,93 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './LeaveType.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (leaveType,targetComponent) =>{ + const userContext = null + return ( + +{leaveType.id} +{leaveType.code} +{leaveType.description} +{leaveType.detailDescription} + + + ) +} + + + +class LeaveTypeProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const leaveType = this.props.leaveType; + const { id,displayName, employeeLeaveCount } = leaveType + + const cardsData = {cardsName:"请假类型",cardsFor: "leaveType",cardsSource: leaveType, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + leaveType: state._leaveType, +}))(Form.create()(LeaveTypeProfile)) + diff --git a/bizui/src/bizcomponents/leavetype/LeaveType.profile.less b/bizui/src/bizcomponents/leavetype/LeaveType.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/leavetype/LeaveType.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/leavetype/LeaveType.search.js b/bizui/src/bizcomponents/leavetype/LeaveType.search.js index 3cf9e3d3c..d22c50ad4 100644 --- a/bizui/src/bizcomponents/leavetype/LeaveType.search.js +++ b/bizui/src/bizcomponents/leavetype/LeaveType.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/leavetype/LeaveType.searchform.js b/bizui/src/bizcomponents/leavetype/LeaveType.searchform.js index d27e6a9e5..34df4f7fd 100644 --- a/bizui/src/bizcomponents/leavetype/LeaveType.searchform.js +++ b/bizui/src/bizcomponents/leavetype/LeaveType.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`leaveTypeList.searchField`] = fieldName - value[`leaveTypeList.searchVerb`] = searchVerb - value[`leaveTypeList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,13 +127,14 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'code')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'company')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'description')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'detailDescription')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'code')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'company')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'description')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'detailDescription')) console.log("the final parameter", paramList) @@ -149,11 +150,12 @@ componentDidMount() { } - params['leaveTypeList'] = 1 - params['leaveTypeList.orderBy.0'] = "id" - params['leaveTypeList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -208,8 +210,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -295,8 +297,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/leavetype/LeaveType.table.js b/bizui/src/bizcomponents/leavetype/LeaveType.table.js index 9e09b4c32..e438fca21 100644 --- a/bizui/src/bizcomponents/leavetype/LeaveType.table.js +++ b/bizui/src/bizcomponents/leavetype/LeaveType.table.js @@ -40,24 +40,53 @@ class LeaveTypeTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = LeaveTypeBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class LeaveTypeTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class LeaveTypeTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/leavetype/LeaveType.updateform.js b/bizui/src/bizcomponents/leavetype/LeaveType.updateform.js index 4b4bc4a36..f3d4f70f4 100644 --- a/bizui/src/bizcomponents/leavetype/LeaveType.updateform.js +++ b/bizui/src/bizcomponents/leavetype/LeaveType.updateform.js @@ -261,7 +261,7 @@ class LeaveTypeUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class LeaveTypeUpdateForm extends Component { initialValue: selectedRow.code, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -285,7 +285,7 @@ class LeaveTypeUpdateForm extends Component { initialValue: selectedRow.description, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -297,7 +297,7 @@ class LeaveTypeUpdateForm extends Component { initialValue: selectedRow.detailDescription, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.app.js b/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.app.js index f43060bc4..e8d9cc95c 100644 --- a/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.app.js +++ b/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class LevelOneCategoryBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class LevelOneCategoryBizApp extends React.PureComponent { buildRouters = () =>{ const {LevelOneCategoryDashboard} = GlobalComponents - const {LevelOneCategoryPreference} = GlobalComponents + const {LevelOneCategoryPermission} = GlobalComponents + const {LevelOneCategoryProfile} = GlobalComponents const routers=[ {path:"/levelOneCategory/:id/dashboard", component: LevelOneCategoryDashboard}, - {path:"/levelOneCategory/:id/preference", component: LevelOneCategoryPreference}, + {path:"/levelOneCategory/:id/profile", component: LevelOneCategoryProfile}, + {path:"/levelOneCategory/:id/permission", component: LevelOneCategoryPermission}, diff --git a/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.associateform.js b/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.associateform.js index eb1560352..7d866375b 100644 --- a/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.associateform.js +++ b/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.associateform.js @@ -139,7 +139,7 @@ class LevelOneCategoryAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.associateform.less b/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.associateform.less +++ b/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.base.js b/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.base.js index 1a4265538..0b069b4c3 100644 --- a/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.base.js +++ b/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.base.js @@ -1,98 +1,82 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"一级分类", menuFor: "levelOneCategory", subItems: [ - {name: 'levelTwoCategoryList', displayName:'二级分类', icon:'at',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'levelTwoCategoryList', displayName:'二级分类', icon:'at',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + catalog: '目录', + name: '名称', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'levelOneCategory') }, - { title: '目录', dataIndex: 'catalog', render: (text, record) => renderReferenceCell(text, record)}, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '8',render: (text, record)=>renderTextCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'levelOneCategory') , sorter: true }, + { title: fieldLabels.catalog, dataIndex: 'catalog', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '8',render: (text, record)=>renderTextCell(text,record)}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({levelOneCategory,targetComponent})=>{ -const fieldLabels = { - id: '序号', - catalog: '目录', - name: '名称', + + + const {LevelOneCategoryService} = GlobalComponents + // const userContext = null + return ( + +{levelOneCategory.id} +{levelOneCategory.catalog==null?appLocaleName(userContext,"NotAssigned"):`${levelOneCategory.catalog.displayName}(${levelOneCategory.catalog.id})`} + + showTransferModel(targetComponent,"目录","catalog",LevelOneCategoryService.requestCandidateCatalog, + LevelOneCategoryService.transferToAnotherCatalog,"anotherCatalogId",levelOneCategory.catalog?levelOneCategory.catalog.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{levelOneCategory.name} + + {buildTransferModal(levelOneCategory,targetComponent)} + + ) } + + -const LevelOneCategoryBase={menuData,displayColumns,fieldLabels} +const LevelOneCategoryBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default LevelOneCategoryBase diff --git a/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.createform.js b/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.createform.js index 28399bb2f..ebdf4da8b 100644 --- a/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.createform.js +++ b/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.createform.js @@ -207,7 +207,7 @@ class LevelOneCategoryCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.dashboard.js b/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.dashboard.js index 93f1a303e..8b676e905 100644 --- a/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.dashboard.js +++ b/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -142,6 +142,7 @@ class LevelOneCategoryDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -150,13 +151,17 @@ class LevelOneCategoryDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.model.js b/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.model.js index e2e0140ee..b83899ed9 100644 --- a/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.model.js +++ b/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/levelOneCategory/${id}/list/\LevelTwoCategoryList/二级分类+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/levelOneCategory/${id}/list/LevelTwoCategoryList/二级分类+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateLevelTwoCategory({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/levelOneCategory/${id}/list/\LevelTwoCategoryList/二级分类列表`, state: newPlayload } + const location = { pathname: `/levelOneCategory/${id}/list/LevelTwoCategoryList/二级分类列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextLevelTwoCategoryUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.permission.js b/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.permission.js new file mode 100644 index 000000000..e6073b985 --- /dev/null +++ b/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.permission.js @@ -0,0 +1,84 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './LevelOneCategory.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (levelOneCategory,targetComponent) =>{ + const userContext = null + return ( + +{levelOneCategory.id} +{levelOneCategory.name} + + + ) +} + + +const renderPermissionSetting = levelOneCategory => { + const {LevelOneCategoryBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class LevelOneCategoryPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const levelOneCategory = this.props.levelOneCategory; + const { id,displayName, levelTwoCategoryCount } = levelOneCategory + const cardsData = {cardsName:"一级分类",cardsFor: "levelOneCategory",cardsSource: levelOneCategory, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + levelOneCategory: state._levelOneCategory, +}))(Form.create()(LevelOneCategoryPermission)) + diff --git a/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.permission.less b/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.preference.js b/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.preference.js index c5b421622..6fb89f103 100644 --- a/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.preference.js +++ b/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.preference.js @@ -305,8 +305,12 @@ class LevelOneCategoryPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, levelTwoCategoryCount } = this.props.levelOneCategory - const cardsData = {cardsName:"一级分类",cardsFor: "levelOneCategory",cardsSource: this.props.levelOneCategory, + const levelOneCategory = this.props.levelOneCategory; + const { id,displayName, levelTwoCategoryCount } = levelOneCategory + + + + const cardsData = {cardsName:"一级分类",cardsFor: "levelOneCategory",cardsSource: levelOneCategory, subItems: [ ], diff --git a/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.profile.js b/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.profile.js new file mode 100644 index 000000000..81a2ce714 --- /dev/null +++ b/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.profile.js @@ -0,0 +1,91 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './LevelOneCategory.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (levelOneCategory,targetComponent) =>{ + const userContext = null + return ( + +{levelOneCategory.id} +{levelOneCategory.name} + + + ) +} + + + +class LevelOneCategoryProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const levelOneCategory = this.props.levelOneCategory; + const { id,displayName, levelTwoCategoryCount } = levelOneCategory + + const cardsData = {cardsName:"一级分类",cardsFor: "levelOneCategory",cardsSource: levelOneCategory, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + levelOneCategory: state._levelOneCategory, +}))(Form.create()(LevelOneCategoryProfile)) + diff --git a/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.profile.less b/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.search.js b/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.search.js index db16827ce..4eaf18ec4 100644 --- a/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.search.js +++ b/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.searchform.js b/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.searchform.js index 88c1d430d..e7a42e330 100644 --- a/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.searchform.js +++ b/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`levelOneCategoryList.searchField`] = fieldName - value[`levelOneCategoryList.searchVerb`] = searchVerb - value[`levelOneCategoryList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,11 +127,12 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'catalog')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'catalog')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) console.log("the final parameter", paramList) @@ -147,11 +148,12 @@ componentDidMount() { } - params['levelOneCategoryList'] = 1 - params['levelOneCategoryList.orderBy.0'] = "id" - params['levelOneCategoryList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -213,8 +215,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -284,8 +286,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.table.js b/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.table.js index 6c3af33bb..7bef20bd2 100644 --- a/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.table.js +++ b/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.table.js @@ -40,24 +40,53 @@ class LevelOneCategoryTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = LevelOneCategoryBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class LevelOneCategoryTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class LevelOneCategoryTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.updateform.js b/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.updateform.js index a9a504e0b..ef697e5e8 100644 --- a/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.updateform.js +++ b/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.updateform.js @@ -261,7 +261,7 @@ class LevelOneCategoryUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class LevelOneCategoryUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.app.js b/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.app.js index 29fafec46..64a9e191d 100644 --- a/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.app.js +++ b/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class LevelOneDepartmentBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class LevelOneDepartmentBizApp extends React.PureComponent { buildRouters = () =>{ const {LevelOneDepartmentDashboard} = GlobalComponents - const {LevelOneDepartmentPreference} = GlobalComponents + const {LevelOneDepartmentPermission} = GlobalComponents + const {LevelOneDepartmentProfile} = GlobalComponents const routers=[ {path:"/levelOneDepartment/:id/dashboard", component: LevelOneDepartmentDashboard}, - {path:"/levelOneDepartment/:id/preference", component: LevelOneDepartmentPreference}, + {path:"/levelOneDepartment/:id/profile", component: LevelOneDepartmentProfile}, + {path:"/levelOneDepartment/:id/permission", component: LevelOneDepartmentPermission}, diff --git a/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.associateform.js b/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.associateform.js index 223987aab..881390750 100644 --- a/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.associateform.js +++ b/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.associateform.js @@ -21,7 +21,7 @@ const testValues = { name: '供应链部', description: '主要执行集团信息系统建设,维护,规划', manager: '刘强', - founded: '2018-04-30', + founded: '2017-05-04', belongsToId: 'RSCC000001', } */ @@ -142,7 +142,7 @@ class LevelOneDepartmentAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -152,7 +152,7 @@ class LevelOneDepartmentAssociateForm extends Component { {getFieldDecorator('description', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -162,7 +162,7 @@ class LevelOneDepartmentAssociateForm extends Component { {getFieldDecorator('manager', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -172,7 +172,7 @@ class LevelOneDepartmentAssociateForm extends Component { {getFieldDecorator('founded', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.associateform.less b/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.associateform.less +++ b/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.base.js b/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.base.js index 72362cbf9..ea03c7fbb 100644 --- a/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.base.js +++ b/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.base.js @@ -1,92 +1,41 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"一级部门", menuFor: "levelOneDepartment", subItems: [ - {name: 'levelTwoDepartmentList', displayName:'二级部门', icon:'dice-two',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'levelTwoDepartmentList', displayName:'二级部门', icon:'dice-two',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) - -} - -const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'levelOneDepartment') }, - { title: '属于', dataIndex: 'belongsTo', render: (text, record) => renderReferenceCell(text, record)}, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '9',render: (text, record)=>renderTextCell(text,record) }, - { title: '描述', debugtype: 'string', dataIndex: 'description', width: '22',render: (text, record)=>renderTextCell(text,record) }, - { title: '经理', debugtype: 'string', dataIndex: 'manager', width: '7',render: (text, record)=>renderTextCell(text,record) }, - { title: '成立', dataIndex: 'founded', render: (text, record) =>renderDateCell(text,record) }, - -] - const fieldLabels = { id: '序号', belongsTo: '属于', @@ -97,8 +46,40 @@ const fieldLabels = { } +const displayColumns = [ + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'levelOneDepartment') , sorter: true }, + { title: fieldLabels.belongsTo, dataIndex: 'belongsTo', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '9',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.description, debugtype: 'string', dataIndex: 'description', width: '22',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.manager, debugtype: 'string', dataIndex: 'manager', width: '7',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.founded, dataIndex: 'founded', render: (text, record) =>renderDateCell(text,record), sorter: true }, + +] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({levelOneDepartment,targetComponent})=>{ + + + + const {LevelOneDepartmentService} = GlobalComponents + // const userContext = null + return ( + +{levelOneDepartment.id} +{levelOneDepartment.name} +{levelOneDepartment.description} +{levelOneDepartment.manager} +{ moment(levelOneDepartment.founded).format('YYYY-MM-DD')} + + {buildTransferModal(levelOneDepartment,targetComponent)} + + ) + +} + + + -const LevelOneDepartmentBase={menuData,displayColumns,fieldLabels} +const LevelOneDepartmentBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default LevelOneDepartmentBase diff --git a/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.createform.js b/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.createform.js index f4c8436f7..e86a47a10 100644 --- a/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.createform.js +++ b/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.createform.js @@ -20,7 +20,7 @@ const testValues = { name: '供应链部', description: '主要执行集团信息系统建设,维护,规划', manager: '刘强', - founded: '2018-01-28', + founded: '2016-12-05', belongsToId: 'RSCC000001', } */ @@ -210,7 +210,7 @@ class LevelOneDepartmentCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -220,7 +220,7 @@ class LevelOneDepartmentCreateForm extends Component { {getFieldDecorator('description', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -230,7 +230,7 @@ class LevelOneDepartmentCreateForm extends Component { {getFieldDecorator('manager', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -240,7 +240,7 @@ class LevelOneDepartmentCreateForm extends Component { {getFieldDecorator('founded', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.dashboard.js b/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.dashboard.js index 16a3bb478..4cd51c13a 100644 --- a/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.dashboard.js +++ b/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -139,6 +139,7 @@ class LevelOneDepartmentDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -147,13 +148,17 @@ class LevelOneDepartmentDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.model.js b/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.model.js index 88526551a..5e5db5364 100644 --- a/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.model.js +++ b/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/levelOneDepartment/${id}/list/\LevelTwoDepartmentList/二级部门+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/levelOneDepartment/${id}/list/LevelTwoDepartmentList/二级部门+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateLevelTwoDepartment({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/levelOneDepartment/${id}/list/\LevelTwoDepartmentList/二级部门列表`, state: newPlayload } + const location = { pathname: `/levelOneDepartment/${id}/list/LevelTwoDepartmentList/二级部门列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextLevelTwoDepartmentUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.permission.js b/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.permission.js new file mode 100644 index 000000000..dc8524d19 --- /dev/null +++ b/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.permission.js @@ -0,0 +1,87 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './LevelOneDepartment.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (levelOneDepartment,targetComponent) =>{ + const userContext = null + return ( + +{levelOneDepartment.id} +{levelOneDepartment.name} +{levelOneDepartment.description} +{levelOneDepartment.manager} +{ moment(levelOneDepartment.founded).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = levelOneDepartment => { + const {LevelOneDepartmentBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class LevelOneDepartmentPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const levelOneDepartment = this.props.levelOneDepartment; + const { id,displayName, levelTwoDepartmentCount } = levelOneDepartment + const cardsData = {cardsName:"一级部门",cardsFor: "levelOneDepartment",cardsSource: levelOneDepartment, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + levelOneDepartment: state._levelOneDepartment, +}))(Form.create()(LevelOneDepartmentPermission)) + diff --git a/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.permission.less b/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.preference.js b/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.preference.js index 5c9bcc4e2..61205cd10 100644 --- a/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.preference.js +++ b/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.preference.js @@ -302,8 +302,12 @@ class LevelOneDepartmentPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, levelTwoDepartmentCount } = this.props.levelOneDepartment - const cardsData = {cardsName:"一级部门",cardsFor: "levelOneDepartment",cardsSource: this.props.levelOneDepartment, + const levelOneDepartment = this.props.levelOneDepartment; + const { id,displayName, levelTwoDepartmentCount } = levelOneDepartment + + + + const cardsData = {cardsName:"一级部门",cardsFor: "levelOneDepartment",cardsSource: levelOneDepartment, subItems: [ ], diff --git a/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.profile.js b/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.profile.js new file mode 100644 index 000000000..11c580748 --- /dev/null +++ b/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.profile.js @@ -0,0 +1,94 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './LevelOneDepartment.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (levelOneDepartment,targetComponent) =>{ + const userContext = null + return ( + +{levelOneDepartment.id} +{levelOneDepartment.name} +{levelOneDepartment.description} +{levelOneDepartment.manager} +{ moment(levelOneDepartment.founded).format('YYYY-MM-DD')} + + + ) +} + + + +class LevelOneDepartmentProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const levelOneDepartment = this.props.levelOneDepartment; + const { id,displayName, levelTwoDepartmentCount } = levelOneDepartment + + const cardsData = {cardsName:"一级部门",cardsFor: "levelOneDepartment",cardsSource: levelOneDepartment, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + levelOneDepartment: state._levelOneDepartment, +}))(Form.create()(LevelOneDepartmentProfile)) + diff --git a/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.profile.less b/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.search.js b/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.search.js index 18751fa54..fb77cb404 100644 --- a/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.search.js +++ b/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.searchform.js b/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.searchform.js index af4c8f38a..c0d020368 100644 --- a/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.searchform.js +++ b/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`levelOneDepartmentList.searchField`] = fieldName - value[`levelOneDepartmentList.searchVerb`] = searchVerb - value[`levelOneDepartmentList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,13 +127,14 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'belongsTo')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'description')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'manager')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'belongsTo')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'description')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'manager')) console.log("the final parameter", paramList) @@ -149,11 +150,12 @@ componentDidMount() { } - params['levelOneDepartmentList'] = 1 - params['levelOneDepartmentList.orderBy.0'] = "id" - params['levelOneDepartmentList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -215,8 +217,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -302,8 +304,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.table.js b/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.table.js index 96bc1ede0..56f01efe7 100644 --- a/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.table.js +++ b/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.table.js @@ -40,24 +40,53 @@ class LevelOneDepartmentTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = LevelOneDepartmentBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class LevelOneDepartmentTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class LevelOneDepartmentTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.updateform.js b/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.updateform.js index ad7d415cd..e36611b19 100644 --- a/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.updateform.js +++ b/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.updateform.js @@ -262,7 +262,7 @@ class LevelOneDepartmentUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class LevelOneDepartmentUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class LevelOneDepartmentUpdateForm extends Component { initialValue: selectedRow.description, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -298,7 +298,7 @@ class LevelOneDepartmentUpdateForm extends Component { initialValue: selectedRow.manager, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -310,7 +310,7 @@ class LevelOneDepartmentUpdateForm extends Component { initialValue: selectedRow.founded, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.app.js b/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.app.js index 8e1381f8d..c6ffa7fa7 100644 --- a/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.app.js +++ b/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class LevelThreeCategoryBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class LevelThreeCategoryBizApp extends React.PureComponent { buildRouters = () =>{ const {LevelThreeCategoryDashboard} = GlobalComponents - const {LevelThreeCategoryPreference} = GlobalComponents + const {LevelThreeCategoryPermission} = GlobalComponents + const {LevelThreeCategoryProfile} = GlobalComponents const routers=[ {path:"/levelThreeCategory/:id/dashboard", component: LevelThreeCategoryDashboard}, - {path:"/levelThreeCategory/:id/preference", component: LevelThreeCategoryPreference}, + {path:"/levelThreeCategory/:id/profile", component: LevelThreeCategoryProfile}, + {path:"/levelThreeCategory/:id/permission", component: LevelThreeCategoryPermission}, diff --git a/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.associateform.js b/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.associateform.js index ebae27ad3..963f5795f 100644 --- a/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.associateform.js +++ b/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.associateform.js @@ -139,7 +139,7 @@ class LevelThreeCategoryAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.associateform.less b/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.associateform.less +++ b/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.base.js b/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.base.js index 1a0b93b7a..5cb7eb33a 100644 --- a/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.base.js +++ b/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.base.js @@ -1,98 +1,82 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"三级分类", menuFor: "levelThreeCategory", subItems: [ - {name: 'productList', displayName:'产品', icon:'product-hunt',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'productList', displayName:'产品', icon:'product-hunt',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + parentCategory: '父类', + name: '名称', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'levelThreeCategory') }, - { title: '父类', dataIndex: 'parentCategory', render: (text, record) => renderReferenceCell(text, record)}, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '8',render: (text, record)=>renderTextCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'levelThreeCategory') , sorter: true }, + { title: fieldLabels.parentCategory, dataIndex: 'parentCategory', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '8',render: (text, record)=>renderTextCell(text,record)}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({levelThreeCategory,targetComponent})=>{ -const fieldLabels = { - id: '序号', - parentCategory: '父类', - name: '名称', + + + const {LevelThreeCategoryService} = GlobalComponents + // const userContext = null + return ( + +{levelThreeCategory.id} +{levelThreeCategory.parentCategory==null?appLocaleName(userContext,"NotAssigned"):`${levelThreeCategory.parentCategory.displayName}(${levelThreeCategory.parentCategory.id})`} + + showTransferModel(targetComponent,"父类","levelTwoCategory",LevelThreeCategoryService.requestCandidateParentCategory, + LevelThreeCategoryService.transferToAnotherParentCategory,"anotherParentCategoryId",levelThreeCategory.parentCategory?levelThreeCategory.parentCategory.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{levelThreeCategory.name} + + {buildTransferModal(levelThreeCategory,targetComponent)} + + ) } + + -const LevelThreeCategoryBase={menuData,displayColumns,fieldLabels} +const LevelThreeCategoryBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default LevelThreeCategoryBase diff --git a/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.createform.js b/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.createform.js index dc5378701..ee036e89e 100644 --- a/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.createform.js +++ b/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.createform.js @@ -207,7 +207,7 @@ class LevelThreeCategoryCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.dashboard.js b/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.dashboard.js index 65199ee97..521837b2d 100644 --- a/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.dashboard.js +++ b/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -142,6 +142,7 @@ class LevelThreeCategoryDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -150,13 +151,17 @@ class LevelThreeCategoryDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.model.js b/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.model.js index c4c3fff13..248694bea 100644 --- a/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.model.js +++ b/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/levelThreeCategory/${id}/list/\ProductList/产品+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/levelThreeCategory/${id}/list/ProductList/产品+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateProduct({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/levelThreeCategory/${id}/list/\ProductList/产品列表`, state: newPlayload } + const location = { pathname: `/levelThreeCategory/${id}/list/ProductList/产品列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextProductUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.permission.js b/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.permission.js new file mode 100644 index 000000000..1d760946f --- /dev/null +++ b/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.permission.js @@ -0,0 +1,84 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './LevelThreeCategory.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (levelThreeCategory,targetComponent) =>{ + const userContext = null + return ( + +{levelThreeCategory.id} +{levelThreeCategory.name} + + + ) +} + + +const renderPermissionSetting = levelThreeCategory => { + const {LevelThreeCategoryBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class LevelThreeCategoryPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const levelThreeCategory = this.props.levelThreeCategory; + const { id,displayName, productCount } = levelThreeCategory + const cardsData = {cardsName:"三级分类",cardsFor: "levelThreeCategory",cardsSource: levelThreeCategory, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + levelThreeCategory: state._levelThreeCategory, +}))(Form.create()(LevelThreeCategoryPermission)) + diff --git a/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.permission.less b/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.preference.js b/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.preference.js index 2c48449a2..f600154d6 100644 --- a/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.preference.js +++ b/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.preference.js @@ -305,8 +305,12 @@ class LevelThreeCategoryPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, productCount } = this.props.levelThreeCategory - const cardsData = {cardsName:"三级分类",cardsFor: "levelThreeCategory",cardsSource: this.props.levelThreeCategory, + const levelThreeCategory = this.props.levelThreeCategory; + const { id,displayName, productCount } = levelThreeCategory + + + + const cardsData = {cardsName:"三级分类",cardsFor: "levelThreeCategory",cardsSource: levelThreeCategory, subItems: [ ], diff --git a/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.profile.js b/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.profile.js new file mode 100644 index 000000000..4f407cb37 --- /dev/null +++ b/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.profile.js @@ -0,0 +1,91 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './LevelThreeCategory.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (levelThreeCategory,targetComponent) =>{ + const userContext = null + return ( + +{levelThreeCategory.id} +{levelThreeCategory.name} + + + ) +} + + + +class LevelThreeCategoryProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const levelThreeCategory = this.props.levelThreeCategory; + const { id,displayName, productCount } = levelThreeCategory + + const cardsData = {cardsName:"三级分类",cardsFor: "levelThreeCategory",cardsSource: levelThreeCategory, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + levelThreeCategory: state._levelThreeCategory, +}))(Form.create()(LevelThreeCategoryProfile)) + diff --git a/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.profile.less b/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.search.js b/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.search.js index a419b9b54..06a06a8f7 100644 --- a/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.search.js +++ b/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.searchform.js b/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.searchform.js index b4ef3e251..d69d8b1eb 100644 --- a/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.searchform.js +++ b/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`levelThreeCategoryList.searchField`] = fieldName - value[`levelThreeCategoryList.searchVerb`] = searchVerb - value[`levelThreeCategoryList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,11 +127,12 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'parentCategory')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'parentCategory')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) console.log("the final parameter", paramList) @@ -147,11 +148,12 @@ componentDidMount() { } - params['levelThreeCategoryList'] = 1 - params['levelThreeCategoryList.orderBy.0'] = "id" - params['levelThreeCategoryList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -213,8 +215,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -284,8 +286,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.table.js b/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.table.js index 6a7aa860b..5f9080032 100644 --- a/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.table.js +++ b/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.table.js @@ -40,24 +40,53 @@ class LevelThreeCategoryTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = LevelThreeCategoryBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class LevelThreeCategoryTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class LevelThreeCategoryTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.updateform.js b/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.updateform.js index 1f15a2584..6e2005dcb 100644 --- a/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.updateform.js +++ b/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.updateform.js @@ -261,7 +261,7 @@ class LevelThreeCategoryUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class LevelThreeCategoryUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.app.js b/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.app.js index 90b8ca9c8..b59c2dc63 100644 --- a/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.app.js +++ b/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class LevelThreeDepartmentBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class LevelThreeDepartmentBizApp extends React.PureComponent { buildRouters = () =>{ const {LevelThreeDepartmentDashboard} = GlobalComponents - const {LevelThreeDepartmentPreference} = GlobalComponents + const {LevelThreeDepartmentPermission} = GlobalComponents + const {LevelThreeDepartmentProfile} = GlobalComponents const routers=[ {path:"/levelThreeDepartment/:id/dashboard", component: LevelThreeDepartmentDashboard}, - {path:"/levelThreeDepartment/:id/preference", component: LevelThreeDepartmentPreference}, + {path:"/levelThreeDepartment/:id/profile", component: LevelThreeDepartmentProfile}, + {path:"/levelThreeDepartment/:id/permission", component: LevelThreeDepartmentPermission}, diff --git a/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.associateform.js b/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.associateform.js index 5068f21d0..1e4d0fe55 100644 --- a/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.associateform.js +++ b/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.associateform.js @@ -20,7 +20,7 @@ const testValues = {}; const testValues = { name: '信息系统部大数据清洗组', description: '主要执行集团信息系统建设,维护,规划', - founded: '2019-03-22', + founded: '2018-06-27', belongsToId: 'LTD000001', } */ @@ -141,7 +141,7 @@ class LevelThreeDepartmentAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -151,7 +151,7 @@ class LevelThreeDepartmentAssociateForm extends Component { {getFieldDecorator('description', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -161,7 +161,7 @@ class LevelThreeDepartmentAssociateForm extends Component { {getFieldDecorator('founded', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.associateform.less b/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.associateform.less +++ b/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.base.js b/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.base.js index 6928a284a..644fae10c 100644 --- a/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.base.js +++ b/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.base.js @@ -1,102 +1,88 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"三级部门", menuFor: "levelThreeDepartment", subItems: [ - {name: 'employeeList', displayName:'员工', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'employeeList', displayName:'员工', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + belongsTo: '属于', + name: '名称', + description: '描述', + founded: '成立', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'levelThreeDepartment') }, - { title: '属于', dataIndex: 'belongsTo', render: (text, record) => renderReferenceCell(text, record)}, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '17',render: (text, record)=>renderTextCell(text,record) }, - { title: '描述', debugtype: 'string', dataIndex: 'description', width: '22',render: (text, record)=>renderTextCell(text,record) }, - { title: '成立', dataIndex: 'founded', render: (text, record) =>renderDateCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'levelThreeDepartment') , sorter: true }, + { title: fieldLabels.belongsTo, dataIndex: 'belongsTo', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '17',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.description, debugtype: 'string', dataIndex: 'description', width: '22',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.founded, dataIndex: 'founded', render: (text, record) =>renderDateCell(text,record), sorter: true }, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({levelThreeDepartment,targetComponent})=>{ -const fieldLabels = { - id: '序号', - belongsTo: '属于', - name: '名称', - description: '描述', - founded: '成立', + + + const {LevelThreeDepartmentService} = GlobalComponents + // const userContext = null + return ( + +{levelThreeDepartment.id} +{levelThreeDepartment.belongsTo==null?appLocaleName(userContext,"NotAssigned"):`${levelThreeDepartment.belongsTo.displayName}(${levelThreeDepartment.belongsTo.id})`} + + showTransferModel(targetComponent,"属于","levelTwoDepartment",LevelThreeDepartmentService.requestCandidateBelongsTo, + LevelThreeDepartmentService.transferToAnotherBelongsTo,"anotherBelongsToId",levelThreeDepartment.belongsTo?levelThreeDepartment.belongsTo.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{levelThreeDepartment.name} +{levelThreeDepartment.description} +{ moment(levelThreeDepartment.founded).format('YYYY-MM-DD')} + + {buildTransferModal(levelThreeDepartment,targetComponent)} + + ) } + + -const LevelThreeDepartmentBase={menuData,displayColumns,fieldLabels} +const LevelThreeDepartmentBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default LevelThreeDepartmentBase diff --git a/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.createform.js b/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.createform.js index 89670196d..14c83bb3e 100644 --- a/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.createform.js +++ b/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.createform.js @@ -19,7 +19,7 @@ const testValues = {}; const testValues = { name: '信息系统部大数据清洗组', description: '主要执行集团信息系统建设,维护,规划', - founded: '2019-01-22', + founded: '2018-07-30', belongsToId: 'LTD000001', } */ @@ -209,7 +209,7 @@ class LevelThreeDepartmentCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -219,7 +219,7 @@ class LevelThreeDepartmentCreateForm extends Component { {getFieldDecorator('description', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -229,7 +229,7 @@ class LevelThreeDepartmentCreateForm extends Component { {getFieldDecorator('founded', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.dashboard.js b/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.dashboard.js index daebb7d06..7b8edf024 100644 --- a/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.dashboard.js +++ b/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -144,6 +144,7 @@ class LevelThreeDepartmentDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -152,13 +153,17 @@ class LevelThreeDepartmentDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.model.js b/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.model.js index 893c6c3dc..54f36eca9 100644 --- a/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.model.js +++ b/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/levelThreeDepartment/${id}/list/\EmployeeList/员工+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/levelThreeDepartment/${id}/list/EmployeeList/员工+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateEmployee({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/levelThreeDepartment/${id}/list/\EmployeeList/员工列表`, state: newPlayload } + const location = { pathname: `/levelThreeDepartment/${id}/list/EmployeeList/员工列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextEmployeeUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.permission.js b/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.permission.js new file mode 100644 index 000000000..d8b9a6497 --- /dev/null +++ b/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.permission.js @@ -0,0 +1,86 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './LevelThreeDepartment.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (levelThreeDepartment,targetComponent) =>{ + const userContext = null + return ( + +{levelThreeDepartment.id} +{levelThreeDepartment.name} +{levelThreeDepartment.description} +{ moment(levelThreeDepartment.founded).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = levelThreeDepartment => { + const {LevelThreeDepartmentBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class LevelThreeDepartmentPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const levelThreeDepartment = this.props.levelThreeDepartment; + const { id,displayName, employeeCount } = levelThreeDepartment + const cardsData = {cardsName:"三级部门",cardsFor: "levelThreeDepartment",cardsSource: levelThreeDepartment, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + levelThreeDepartment: state._levelThreeDepartment, +}))(Form.create()(LevelThreeDepartmentPermission)) + diff --git a/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.permission.less b/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.preference.js b/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.preference.js index 17eca0d22..8ea487937 100644 --- a/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.preference.js +++ b/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.preference.js @@ -307,8 +307,12 @@ class LevelThreeDepartmentPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, employeeCount } = this.props.levelThreeDepartment - const cardsData = {cardsName:"三级部门",cardsFor: "levelThreeDepartment",cardsSource: this.props.levelThreeDepartment, + const levelThreeDepartment = this.props.levelThreeDepartment; + const { id,displayName, employeeCount } = levelThreeDepartment + + + + const cardsData = {cardsName:"三级部门",cardsFor: "levelThreeDepartment",cardsSource: levelThreeDepartment, subItems: [ ], diff --git a/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.profile.js b/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.profile.js new file mode 100644 index 000000000..874e4dba2 --- /dev/null +++ b/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.profile.js @@ -0,0 +1,93 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './LevelThreeDepartment.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (levelThreeDepartment,targetComponent) =>{ + const userContext = null + return ( + +{levelThreeDepartment.id} +{levelThreeDepartment.name} +{levelThreeDepartment.description} +{ moment(levelThreeDepartment.founded).format('YYYY-MM-DD')} + + + ) +} + + + +class LevelThreeDepartmentProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const levelThreeDepartment = this.props.levelThreeDepartment; + const { id,displayName, employeeCount } = levelThreeDepartment + + const cardsData = {cardsName:"三级部门",cardsFor: "levelThreeDepartment",cardsSource: levelThreeDepartment, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + levelThreeDepartment: state._levelThreeDepartment, +}))(Form.create()(LevelThreeDepartmentProfile)) + diff --git a/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.profile.less b/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.search.js b/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.search.js index aa8fa1309..64a7d8426 100644 --- a/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.search.js +++ b/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.searchform.js b/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.searchform.js index 07aa0e3d2..a014ded5b 100644 --- a/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.searchform.js +++ b/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`levelThreeDepartmentList.searchField`] = fieldName - value[`levelThreeDepartmentList.searchVerb`] = searchVerb - value[`levelThreeDepartmentList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,12 +127,13 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'belongsTo')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'description')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'belongsTo')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'description')) console.log("the final parameter", paramList) @@ -148,11 +149,12 @@ componentDidMount() { } - params['levelThreeDepartmentList'] = 1 - params['levelThreeDepartmentList.orderBy.0'] = "id" - params['levelThreeDepartmentList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -214,8 +216,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -293,8 +295,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.table.js b/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.table.js index 66a2ba90b..743b4de59 100644 --- a/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.table.js +++ b/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.table.js @@ -40,24 +40,53 @@ class LevelThreeDepartmentTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = LevelThreeDepartmentBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class LevelThreeDepartmentTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class LevelThreeDepartmentTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.updateform.js b/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.updateform.js index 18c64d0fc..f4a953afb 100644 --- a/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.updateform.js +++ b/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.updateform.js @@ -262,7 +262,7 @@ class LevelThreeDepartmentUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class LevelThreeDepartmentUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class LevelThreeDepartmentUpdateForm extends Component { initialValue: selectedRow.description, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -298,7 +298,7 @@ class LevelThreeDepartmentUpdateForm extends Component { initialValue: selectedRow.founded, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.app.js b/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.app.js index 4afb487fc..7781958f4 100644 --- a/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.app.js +++ b/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class LevelTwoCategoryBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class LevelTwoCategoryBizApp extends React.PureComponent { buildRouters = () =>{ const {LevelTwoCategoryDashboard} = GlobalComponents - const {LevelTwoCategoryPreference} = GlobalComponents + const {LevelTwoCategoryPermission} = GlobalComponents + const {LevelTwoCategoryProfile} = GlobalComponents const routers=[ {path:"/levelTwoCategory/:id/dashboard", component: LevelTwoCategoryDashboard}, - {path:"/levelTwoCategory/:id/preference", component: LevelTwoCategoryPreference}, + {path:"/levelTwoCategory/:id/profile", component: LevelTwoCategoryProfile}, + {path:"/levelTwoCategory/:id/permission", component: LevelTwoCategoryPermission}, diff --git a/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.associateform.js b/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.associateform.js index 63d8238fa..524a2b011 100644 --- a/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.associateform.js +++ b/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.associateform.js @@ -139,7 +139,7 @@ class LevelTwoCategoryAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.associateform.less b/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.associateform.less +++ b/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.base.js b/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.base.js index 6453003d0..676f0572e 100644 --- a/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.base.js +++ b/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.base.js @@ -1,98 +1,82 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"二级分类", menuFor: "levelTwoCategory", subItems: [ - {name: 'levelThreeCategoryList', displayName:'三级分类', icon:'at',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'levelThreeCategoryList', displayName:'三级分类', icon:'at',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + parentCategory: '父类', + name: '名称', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'levelTwoCategory') }, - { title: '父类', dataIndex: 'parentCategory', render: (text, record) => renderReferenceCell(text, record)}, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '8',render: (text, record)=>renderTextCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'levelTwoCategory') , sorter: true }, + { title: fieldLabels.parentCategory, dataIndex: 'parentCategory', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '8',render: (text, record)=>renderTextCell(text,record)}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({levelTwoCategory,targetComponent})=>{ -const fieldLabels = { - id: '序号', - parentCategory: '父类', - name: '名称', + + + const {LevelTwoCategoryService} = GlobalComponents + // const userContext = null + return ( + +{levelTwoCategory.id} +{levelTwoCategory.parentCategory==null?appLocaleName(userContext,"NotAssigned"):`${levelTwoCategory.parentCategory.displayName}(${levelTwoCategory.parentCategory.id})`} + + showTransferModel(targetComponent,"父类","levelOneCategory",LevelTwoCategoryService.requestCandidateParentCategory, + LevelTwoCategoryService.transferToAnotherParentCategory,"anotherParentCategoryId",levelTwoCategory.parentCategory?levelTwoCategory.parentCategory.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{levelTwoCategory.name} + + {buildTransferModal(levelTwoCategory,targetComponent)} + + ) } + + -const LevelTwoCategoryBase={menuData,displayColumns,fieldLabels} +const LevelTwoCategoryBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default LevelTwoCategoryBase diff --git a/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.createform.js b/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.createform.js index b65cee54e..2327f1bc4 100644 --- a/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.createform.js +++ b/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.createform.js @@ -207,7 +207,7 @@ class LevelTwoCategoryCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.dashboard.js b/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.dashboard.js index 73430907e..60e1bb14a 100644 --- a/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.dashboard.js +++ b/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -142,6 +142,7 @@ class LevelTwoCategoryDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -150,13 +151,17 @@ class LevelTwoCategoryDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.model.js b/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.model.js index 0963b2dfb..ef42be64d 100644 --- a/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.model.js +++ b/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/levelTwoCategory/${id}/list/\LevelThreeCategoryList/三级分类+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/levelTwoCategory/${id}/list/LevelThreeCategoryList/三级分类+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateLevelThreeCategory({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/levelTwoCategory/${id}/list/\LevelThreeCategoryList/三级分类列表`, state: newPlayload } + const location = { pathname: `/levelTwoCategory/${id}/list/LevelThreeCategoryList/三级分类列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextLevelThreeCategoryUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.permission.js b/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.permission.js new file mode 100644 index 000000000..f254f1790 --- /dev/null +++ b/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.permission.js @@ -0,0 +1,84 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './LevelTwoCategory.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (levelTwoCategory,targetComponent) =>{ + const userContext = null + return ( + +{levelTwoCategory.id} +{levelTwoCategory.name} + + + ) +} + + +const renderPermissionSetting = levelTwoCategory => { + const {LevelTwoCategoryBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class LevelTwoCategoryPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const levelTwoCategory = this.props.levelTwoCategory; + const { id,displayName, levelThreeCategoryCount } = levelTwoCategory + const cardsData = {cardsName:"二级分类",cardsFor: "levelTwoCategory",cardsSource: levelTwoCategory, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + levelTwoCategory: state._levelTwoCategory, +}))(Form.create()(LevelTwoCategoryPermission)) + diff --git a/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.permission.less b/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.preference.js b/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.preference.js index a287f75cf..c0f08cab9 100644 --- a/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.preference.js +++ b/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.preference.js @@ -305,8 +305,12 @@ class LevelTwoCategoryPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, levelThreeCategoryCount } = this.props.levelTwoCategory - const cardsData = {cardsName:"二级分类",cardsFor: "levelTwoCategory",cardsSource: this.props.levelTwoCategory, + const levelTwoCategory = this.props.levelTwoCategory; + const { id,displayName, levelThreeCategoryCount } = levelTwoCategory + + + + const cardsData = {cardsName:"二级分类",cardsFor: "levelTwoCategory",cardsSource: levelTwoCategory, subItems: [ ], diff --git a/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.profile.js b/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.profile.js new file mode 100644 index 000000000..f152666fc --- /dev/null +++ b/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.profile.js @@ -0,0 +1,91 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './LevelTwoCategory.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (levelTwoCategory,targetComponent) =>{ + const userContext = null + return ( + +{levelTwoCategory.id} +{levelTwoCategory.name} + + + ) +} + + + +class LevelTwoCategoryProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const levelTwoCategory = this.props.levelTwoCategory; + const { id,displayName, levelThreeCategoryCount } = levelTwoCategory + + const cardsData = {cardsName:"二级分类",cardsFor: "levelTwoCategory",cardsSource: levelTwoCategory, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + levelTwoCategory: state._levelTwoCategory, +}))(Form.create()(LevelTwoCategoryProfile)) + diff --git a/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.profile.less b/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.search.js b/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.search.js index f9eaf9191..8f712d033 100644 --- a/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.search.js +++ b/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.searchform.js b/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.searchform.js index 8fd69f6a8..dff36d146 100644 --- a/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.searchform.js +++ b/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`levelTwoCategoryList.searchField`] = fieldName - value[`levelTwoCategoryList.searchVerb`] = searchVerb - value[`levelTwoCategoryList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,11 +127,12 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'parentCategory')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'parentCategory')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) console.log("the final parameter", paramList) @@ -147,11 +148,12 @@ componentDidMount() { } - params['levelTwoCategoryList'] = 1 - params['levelTwoCategoryList.orderBy.0'] = "id" - params['levelTwoCategoryList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -213,8 +215,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -284,8 +286,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.table.js b/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.table.js index 13fa84465..3aee64eb9 100644 --- a/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.table.js +++ b/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.table.js @@ -40,24 +40,53 @@ class LevelTwoCategoryTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = LevelTwoCategoryBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class LevelTwoCategoryTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class LevelTwoCategoryTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.updateform.js b/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.updateform.js index aa1df728a..165fcc7c7 100644 --- a/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.updateform.js +++ b/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.updateform.js @@ -261,7 +261,7 @@ class LevelTwoCategoryUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class LevelTwoCategoryUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.app.js b/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.app.js index 09b18e2ce..5a5b9cf53 100644 --- a/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.app.js +++ b/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class LevelTwoDepartmentBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class LevelTwoDepartmentBizApp extends React.PureComponent { buildRouters = () =>{ const {LevelTwoDepartmentDashboard} = GlobalComponents - const {LevelTwoDepartmentPreference} = GlobalComponents + const {LevelTwoDepartmentPermission} = GlobalComponents + const {LevelTwoDepartmentProfile} = GlobalComponents const routers=[ {path:"/levelTwoDepartment/:id/dashboard", component: LevelTwoDepartmentDashboard}, - {path:"/levelTwoDepartment/:id/preference", component: LevelTwoDepartmentPreference}, + {path:"/levelTwoDepartment/:id/profile", component: LevelTwoDepartmentProfile}, + {path:"/levelTwoDepartment/:id/permission", component: LevelTwoDepartmentPermission}, diff --git a/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.associateform.js b/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.associateform.js index 1ebdace8e..b5622d92b 100644 --- a/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.associateform.js +++ b/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.associateform.js @@ -20,7 +20,7 @@ const testValues = {}; const testValues = { name: '信息系统部大数据部门', description: '主要执行集团信息系统建设,维护,规划', - founded: '2018-10-19', + founded: '2017-08-23', belongsToId: 'LOD000001', } */ @@ -141,7 +141,7 @@ class LevelTwoDepartmentAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -151,7 +151,7 @@ class LevelTwoDepartmentAssociateForm extends Component { {getFieldDecorator('description', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -161,7 +161,7 @@ class LevelTwoDepartmentAssociateForm extends Component { {getFieldDecorator('founded', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.associateform.less b/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.associateform.less +++ b/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.base.js b/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.base.js index e480a8045..44741a66c 100644 --- a/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.base.js +++ b/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.base.js @@ -1,102 +1,88 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"二级部门", menuFor: "levelTwoDepartment", subItems: [ - {name: 'levelThreeDepartmentList', displayName:'三级部门', icon:'battery-three-quarters',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'levelThreeDepartmentList', displayName:'三级部门', icon:'battery-three-quarters',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + belongsTo: '属于', + name: '名称', + description: '描述', + founded: '成立', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'levelTwoDepartment') }, - { title: '属于', dataIndex: 'belongsTo', render: (text, record) => renderReferenceCell(text, record)}, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '14',render: (text, record)=>renderTextCell(text,record) }, - { title: '描述', debugtype: 'string', dataIndex: 'description', width: '22',render: (text, record)=>renderTextCell(text,record) }, - { title: '成立', dataIndex: 'founded', render: (text, record) =>renderDateCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'levelTwoDepartment') , sorter: true }, + { title: fieldLabels.belongsTo, dataIndex: 'belongsTo', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '14',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.description, debugtype: 'string', dataIndex: 'description', width: '22',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.founded, dataIndex: 'founded', render: (text, record) =>renderDateCell(text,record), sorter: true }, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({levelTwoDepartment,targetComponent})=>{ -const fieldLabels = { - id: '序号', - belongsTo: '属于', - name: '名称', - description: '描述', - founded: '成立', + + + const {LevelTwoDepartmentService} = GlobalComponents + // const userContext = null + return ( + +{levelTwoDepartment.id} +{levelTwoDepartment.belongsTo==null?appLocaleName(userContext,"NotAssigned"):`${levelTwoDepartment.belongsTo.displayName}(${levelTwoDepartment.belongsTo.id})`} + + showTransferModel(targetComponent,"属于","levelOneDepartment",LevelTwoDepartmentService.requestCandidateBelongsTo, + LevelTwoDepartmentService.transferToAnotherBelongsTo,"anotherBelongsToId",levelTwoDepartment.belongsTo?levelTwoDepartment.belongsTo.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{levelTwoDepartment.name} +{levelTwoDepartment.description} +{ moment(levelTwoDepartment.founded).format('YYYY-MM-DD')} + + {buildTransferModal(levelTwoDepartment,targetComponent)} + + ) } + + -const LevelTwoDepartmentBase={menuData,displayColumns,fieldLabels} +const LevelTwoDepartmentBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default LevelTwoDepartmentBase diff --git a/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.createform.js b/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.createform.js index 921980f78..46363a323 100644 --- a/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.createform.js +++ b/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.createform.js @@ -19,7 +19,7 @@ const testValues = {}; const testValues = { name: '信息系统部大数据部门', description: '主要执行集团信息系统建设,维护,规划', - founded: '2017-04-06', + founded: '2017-01-18', belongsToId: 'LOD000001', } */ @@ -209,7 +209,7 @@ class LevelTwoDepartmentCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -219,7 +219,7 @@ class LevelTwoDepartmentCreateForm extends Component { {getFieldDecorator('description', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -229,7 +229,7 @@ class LevelTwoDepartmentCreateForm extends Component { {getFieldDecorator('founded', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.dashboard.js b/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.dashboard.js index 5a706115a..9c8d94e81 100644 --- a/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.dashboard.js +++ b/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -144,6 +144,7 @@ class LevelTwoDepartmentDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -152,13 +153,17 @@ class LevelTwoDepartmentDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.model.js b/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.model.js index dbe40e0f4..e03903fb9 100644 --- a/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.model.js +++ b/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/levelTwoDepartment/${id}/list/\LevelThreeDepartmentList/三级部门+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/levelTwoDepartment/${id}/list/LevelThreeDepartmentList/三级部门+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateLevelThreeDepartment({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/levelTwoDepartment/${id}/list/\LevelThreeDepartmentList/三级部门列表`, state: newPlayload } + const location = { pathname: `/levelTwoDepartment/${id}/list/LevelThreeDepartmentList/三级部门列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextLevelThreeDepartmentUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.permission.js b/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.permission.js new file mode 100644 index 000000000..113c71e15 --- /dev/null +++ b/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.permission.js @@ -0,0 +1,86 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './LevelTwoDepartment.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (levelTwoDepartment,targetComponent) =>{ + const userContext = null + return ( + +{levelTwoDepartment.id} +{levelTwoDepartment.name} +{levelTwoDepartment.description} +{ moment(levelTwoDepartment.founded).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = levelTwoDepartment => { + const {LevelTwoDepartmentBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class LevelTwoDepartmentPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const levelTwoDepartment = this.props.levelTwoDepartment; + const { id,displayName, levelThreeDepartmentCount } = levelTwoDepartment + const cardsData = {cardsName:"二级部门",cardsFor: "levelTwoDepartment",cardsSource: levelTwoDepartment, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + levelTwoDepartment: state._levelTwoDepartment, +}))(Form.create()(LevelTwoDepartmentPermission)) + diff --git a/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.permission.less b/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.preference.js b/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.preference.js index bf6bc65f9..be553c662 100644 --- a/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.preference.js +++ b/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.preference.js @@ -307,8 +307,12 @@ class LevelTwoDepartmentPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, levelThreeDepartmentCount } = this.props.levelTwoDepartment - const cardsData = {cardsName:"二级部门",cardsFor: "levelTwoDepartment",cardsSource: this.props.levelTwoDepartment, + const levelTwoDepartment = this.props.levelTwoDepartment; + const { id,displayName, levelThreeDepartmentCount } = levelTwoDepartment + + + + const cardsData = {cardsName:"二级部门",cardsFor: "levelTwoDepartment",cardsSource: levelTwoDepartment, subItems: [ ], diff --git a/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.profile.js b/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.profile.js new file mode 100644 index 000000000..65050b19e --- /dev/null +++ b/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.profile.js @@ -0,0 +1,93 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './LevelTwoDepartment.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (levelTwoDepartment,targetComponent) =>{ + const userContext = null + return ( + +{levelTwoDepartment.id} +{levelTwoDepartment.name} +{levelTwoDepartment.description} +{ moment(levelTwoDepartment.founded).format('YYYY-MM-DD')} + + + ) +} + + + +class LevelTwoDepartmentProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const levelTwoDepartment = this.props.levelTwoDepartment; + const { id,displayName, levelThreeDepartmentCount } = levelTwoDepartment + + const cardsData = {cardsName:"二级部门",cardsFor: "levelTwoDepartment",cardsSource: levelTwoDepartment, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + levelTwoDepartment: state._levelTwoDepartment, +}))(Form.create()(LevelTwoDepartmentProfile)) + diff --git a/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.profile.less b/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.search.js b/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.search.js index 92bfba138..f63d32a8d 100644 --- a/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.search.js +++ b/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.searchform.js b/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.searchform.js index 7ca8a855f..6fdb2f598 100644 --- a/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.searchform.js +++ b/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`levelTwoDepartmentList.searchField`] = fieldName - value[`levelTwoDepartmentList.searchVerb`] = searchVerb - value[`levelTwoDepartmentList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,12 +127,13 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'belongsTo')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'description')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'belongsTo')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'description')) console.log("the final parameter", paramList) @@ -148,11 +149,12 @@ componentDidMount() { } - params['levelTwoDepartmentList'] = 1 - params['levelTwoDepartmentList.orderBy.0'] = "id" - params['levelTwoDepartmentList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -214,8 +216,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -293,8 +295,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.table.js b/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.table.js index f4fe2090a..e8b296541 100644 --- a/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.table.js +++ b/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.table.js @@ -40,24 +40,53 @@ class LevelTwoDepartmentTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = LevelTwoDepartmentBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class LevelTwoDepartmentTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class LevelTwoDepartmentTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.updateform.js b/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.updateform.js index d69c6a69d..b4dc57502 100644 --- a/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.updateform.js +++ b/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.updateform.js @@ -262,7 +262,7 @@ class LevelTwoDepartmentUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class LevelTwoDepartmentUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class LevelTwoDepartmentUpdateForm extends Component { initialValue: selectedRow.description, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -298,7 +298,7 @@ class LevelTwoDepartmentUpdateForm extends Component { initialValue: selectedRow.founded, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/listaccess/ListAccess.app.js b/bizui/src/bizcomponents/listaccess/ListAccess.app.js index cfa46b62b..2f4470d00 100644 --- a/bizui/src/bizcomponents/listaccess/ListAccess.app.js +++ b/bizui/src/bizcomponents/listaccess/ListAccess.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class ListAccessBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -157,12 +166,14 @@ class ListAccessBizApp extends React.PureComponent { buildRouters = () =>{ const {ListAccessDashboard} = GlobalComponents - const {ListAccessPreference} = GlobalComponents + const {ListAccessPermission} = GlobalComponents + const {ListAccessProfile} = GlobalComponents const routers=[ {path:"/listAccess/:id/dashboard", component: ListAccessDashboard}, - {path:"/listAccess/:id/preference", component: ListAccessPreference}, + {path:"/listAccess/:id/profile", component: ListAccessProfile}, + {path:"/listAccess/:id/permission", component: ListAccessPermission}, diff --git a/bizui/src/bizcomponents/listaccess/ListAccess.associateform.js b/bizui/src/bizcomponents/listaccess/ListAccess.associateform.js index c26770782..4a4a7421d 100644 --- a/bizui/src/bizcomponents/listaccess/ListAccess.associateform.js +++ b/bizui/src/bizcomponents/listaccess/ListAccess.associateform.js @@ -139,7 +139,7 @@ class ListAccessAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -149,7 +149,7 @@ class ListAccessAssociateForm extends Component { {getFieldDecorator('internalName', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/listaccess/ListAccess.associateform.less b/bizui/src/bizcomponents/listaccess/ListAccess.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/listaccess/ListAccess.associateform.less +++ b/bizui/src/bizcomponents/listaccess/ListAccess.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/listaccess/ListAccess.base.js b/bizui/src/bizcomponents/listaccess/ListAccess.base.js index ad1425b00..970c50f94 100644 --- a/bizui/src/bizcomponents/listaccess/ListAccess.base.js +++ b/bizui/src/bizcomponents/listaccess/ListAccess.base.js @@ -1,10 +1,33 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"访问列表", menuFor: "listAccess", subItems: [ @@ -12,83 +35,6 @@ const menuData = {menuName:"访问列表", menuFor: "listAccess", ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) - -} - -const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record) }, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '6',render: (text, record)=>renderTextCell(text,record) }, - { title: '内部名称', debugtype: 'string', dataIndex: 'internalName', width: '24',render: (text, record)=>renderTextCell(text,record) }, - { title: '读权限', dataIndex: 'readPermission', render: (text, record) =>renderBooleanCell(text, record) }, - { title: '创建权限', dataIndex: 'createPermission', render: (text, record) =>renderBooleanCell(text, record) }, - { title: '删除权限', dataIndex: 'deletePermission', render: (text, record) =>renderBooleanCell(text, record) }, - { title: '更新许可', dataIndex: 'updatePermission', render: (text, record) =>renderBooleanCell(text, record) }, - { title: '执行权限', dataIndex: 'executionPermission', render: (text, record) =>renderBooleanCell(text, record) }, - { title: '应用程序', dataIndex: 'app', render: (text, record) => renderReferenceCell(text, record)}, - -] - const fieldLabels = { id: '序号', name: '名称', @@ -102,8 +48,47 @@ const fieldLabels = { } +const displayColumns = [ + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '6',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.internalName, debugtype: 'string', dataIndex: 'internalName', width: '24',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.readPermission, dataIndex: 'readPermission', render: (text, record) =>renderBooleanCell(text, record), sorter:true }, + { title: fieldLabels.createPermission, dataIndex: 'createPermission', render: (text, record) =>renderBooleanCell(text, record), sorter:true }, + { title: fieldLabels.deletePermission, dataIndex: 'deletePermission', render: (text, record) =>renderBooleanCell(text, record), sorter:true }, + { title: fieldLabels.updatePermission, dataIndex: 'updatePermission', render: (text, record) =>renderBooleanCell(text, record), sorter:true }, + { title: fieldLabels.executionPermission, dataIndex: 'executionPermission', render: (text, record) =>renderBooleanCell(text, record), sorter:true }, + { title: fieldLabels.app, dataIndex: 'app', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + +] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({listAccess,targetComponent})=>{ + + + + const {ListAccessService} = GlobalComponents + // const userContext = null + return ( + +{listAccess.id} +{listAccess.name} +{listAccess.internalName} +{listAccess.app==null?appLocaleName(userContext,"NotAssigned"):`${listAccess.app.displayName}(${listAccess.app.id})`} + + showTransferModel(targetComponent,"应用程序","userApp",ListAccessService.requestCandidateApp, + ListAccessService.transferToAnotherApp,"anotherAppId",listAccess.app?listAccess.app.id:"")} + style={{fontSize: 20,color:"red"}} /> + + + {buildTransferModal(listAccess,targetComponent)} + + ) + +} + + + -const ListAccessBase={menuData,displayColumns,fieldLabels} +const ListAccessBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default ListAccessBase diff --git a/bizui/src/bizcomponents/listaccess/ListAccess.createform.js b/bizui/src/bizcomponents/listaccess/ListAccess.createform.js index 95d27c277..b95a0296e 100644 --- a/bizui/src/bizcomponents/listaccess/ListAccess.createform.js +++ b/bizui/src/bizcomponents/listaccess/ListAccess.createform.js @@ -208,7 +208,7 @@ class ListAccessCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -218,7 +218,7 @@ class ListAccessCreateForm extends Component { {getFieldDecorator('internalName', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/listaccess/ListAccess.dashboard.js b/bizui/src/bizcomponents/listaccess/ListAccess.dashboard.js index 2cbb97e4e..58abbbf4d 100644 --- a/bizui/src/bizcomponents/listaccess/ListAccess.dashboard.js +++ b/bizui/src/bizcomponents/listaccess/ListAccess.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -147,6 +147,7 @@ class ListAccessDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -155,13 +156,17 @@ class ListAccessDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/listaccess/ListAccess.model.js b/bizui/src/bizcomponents/listaccess/ListAccess.model.js index 09f2fd854..295111a41 100644 --- a/bizui/src/bizcomponents/listaccess/ListAccess.model.js +++ b/bizui/src/bizcomponents/listaccess/ListAccess.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' diff --git a/bizui/src/bizcomponents/listaccess/ListAccess.permission.js b/bizui/src/bizcomponents/listaccess/ListAccess.permission.js new file mode 100644 index 000000000..82eaf99d5 --- /dev/null +++ b/bizui/src/bizcomponents/listaccess/ListAccess.permission.js @@ -0,0 +1,85 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './ListAccess.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (listAccess,targetComponent) =>{ + const userContext = null + return ( + +{listAccess.id} +{listAccess.name} +{listAccess.internalName} + + + ) +} + + +const renderPermissionSetting = listAccess => { + const {ListAccessBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class ListAccessPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const listAccess = this.props.listAccess; + const { id,displayName, } = listAccess + const cardsData = {cardsName:"访问列表",cardsFor: "listAccess",cardsSource: listAccess, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + listAccess: state._listAccess, +}))(Form.create()(ListAccessPermission)) + diff --git a/bizui/src/bizcomponents/listaccess/ListAccess.permission.less b/bizui/src/bizcomponents/listaccess/ListAccess.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/listaccess/ListAccess.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/listaccess/ListAccess.preference.js b/bizui/src/bizcomponents/listaccess/ListAccess.preference.js index 52e1ed1e1..78bb37134 100644 --- a/bizui/src/bizcomponents/listaccess/ListAccess.preference.js +++ b/bizui/src/bizcomponents/listaccess/ListAccess.preference.js @@ -311,8 +311,12 @@ class ListAccessPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, } = this.props.listAccess - const cardsData = {cardsName:"访问列表",cardsFor: "listAccess",cardsSource: this.props.listAccess, + const listAccess = this.props.listAccess; + const { id,displayName, } = listAccess + + + + const cardsData = {cardsName:"访问列表",cardsFor: "listAccess",cardsSource: listAccess, subItems: [ ], diff --git a/bizui/src/bizcomponents/listaccess/ListAccess.profile.js b/bizui/src/bizcomponents/listaccess/ListAccess.profile.js new file mode 100644 index 000000000..cd97c715b --- /dev/null +++ b/bizui/src/bizcomponents/listaccess/ListAccess.profile.js @@ -0,0 +1,92 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './ListAccess.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (listAccess,targetComponent) =>{ + const userContext = null + return ( + +{listAccess.id} +{listAccess.name} +{listAccess.internalName} + + + ) +} + + + +class ListAccessProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const listAccess = this.props.listAccess; + const { id,displayName, } = listAccess + + const cardsData = {cardsName:"访问列表",cardsFor: "listAccess",cardsSource: listAccess, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + listAccess: state._listAccess, +}))(Form.create()(ListAccessProfile)) + diff --git a/bizui/src/bizcomponents/listaccess/ListAccess.profile.less b/bizui/src/bizcomponents/listaccess/ListAccess.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/listaccess/ListAccess.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/listaccess/ListAccess.search.js b/bizui/src/bizcomponents/listaccess/ListAccess.search.js index a21e34ffe..568a0cb2c 100644 --- a/bizui/src/bizcomponents/listaccess/ListAccess.search.js +++ b/bizui/src/bizcomponents/listaccess/ListAccess.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/listaccess/ListAccess.searchform.js b/bizui/src/bizcomponents/listaccess/ListAccess.searchform.js index ef4afebeb..bb7079d35 100644 --- a/bizui/src/bizcomponents/listaccess/ListAccess.searchform.js +++ b/bizui/src/bizcomponents/listaccess/ListAccess.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`listAccessList.searchField`] = fieldName - value[`listAccessList.searchVerb`] = searchVerb - value[`listAccessList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,12 +127,13 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'internalName')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'app')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'internalName')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'app')) console.log("the final parameter", paramList) @@ -148,11 +149,12 @@ componentDidMount() { } - params['listAccessList'] = 1 - params['listAccessList.orderBy.0'] = "id" - params['listAccessList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -207,8 +209,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -286,8 +288,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/listaccess/ListAccess.table.js b/bizui/src/bizcomponents/listaccess/ListAccess.table.js index 561b3fc36..8a7378518 100644 --- a/bizui/src/bizcomponents/listaccess/ListAccess.table.js +++ b/bizui/src/bizcomponents/listaccess/ListAccess.table.js @@ -40,24 +40,53 @@ class ListAccessTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = ListAccessBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class ListAccessTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class ListAccessTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/listaccess/ListAccess.updateform.js b/bizui/src/bizcomponents/listaccess/ListAccess.updateform.js index 3ae20aa1b..5e510f8fd 100644 --- a/bizui/src/bizcomponents/listaccess/ListAccess.updateform.js +++ b/bizui/src/bizcomponents/listaccess/ListAccess.updateform.js @@ -261,7 +261,7 @@ class ListAccessUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class ListAccessUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -285,7 +285,7 @@ class ListAccessUpdateForm extends Component { initialValue: selectedRow.internalName, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/loginhistory/LoginHistory.app.js b/bizui/src/bizcomponents/loginhistory/LoginHistory.app.js index 3c8c71a5c..d8ca7e13e 100644 --- a/bizui/src/bizcomponents/loginhistory/LoginHistory.app.js +++ b/bizui/src/bizcomponents/loginhistory/LoginHistory.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class LoginHistoryBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -157,12 +166,14 @@ class LoginHistoryBizApp extends React.PureComponent { buildRouters = () =>{ const {LoginHistoryDashboard} = GlobalComponents - const {LoginHistoryPreference} = GlobalComponents + const {LoginHistoryPermission} = GlobalComponents + const {LoginHistoryProfile} = GlobalComponents const routers=[ {path:"/loginHistory/:id/dashboard", component: LoginHistoryDashboard}, - {path:"/loginHistory/:id/preference", component: LoginHistoryPreference}, + {path:"/loginHistory/:id/profile", component: LoginHistoryProfile}, + {path:"/loginHistory/:id/permission", component: LoginHistoryPermission}, diff --git a/bizui/src/bizcomponents/loginhistory/LoginHistory.associateform.js b/bizui/src/bizcomponents/loginhistory/LoginHistory.associateform.js index 2cade01b1..ecd1bc946 100644 --- a/bizui/src/bizcomponents/loginhistory/LoginHistory.associateform.js +++ b/bizui/src/bizcomponents/loginhistory/LoginHistory.associateform.js @@ -139,7 +139,7 @@ class LoginHistoryAssociateForm extends Component { {getFieldDecorator('fromIp', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -149,7 +149,7 @@ class LoginHistoryAssociateForm extends Component { {getFieldDecorator('description', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/loginhistory/LoginHistory.associateform.less b/bizui/src/bizcomponents/loginhistory/LoginHistory.associateform.less index da20f25fe..c4583153a 100644 --- a/bizui/src/bizcomponents/loginhistory/LoginHistory.associateform.less +++ b/bizui/src/bizcomponents/loginhistory/LoginHistory.associateform.less @@ -4,92 +4,6 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/loginhistory/LoginHistory.base.js b/bizui/src/bizcomponents/loginhistory/LoginHistory.base.js index cdb26f5d2..b7cf681a9 100644 --- a/bizui/src/bizcomponents/loginhistory/LoginHistory.base.js +++ b/bizui/src/bizcomponents/loginhistory/LoginHistory.base.js @@ -1,10 +1,33 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"登录历史", menuFor: "loginHistory", subItems: [ @@ -12,90 +35,53 @@ const menuData = {menuName:"登录历史", menuFor: "loginHistory", ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + loginTime: '登录时间', + fromIp: '从IP', + description: '描述', + secUser: 'SEC的用户', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record) }, - { title: '登录时间', dataIndex: 'loginTime', render: (text, record) =>renderDateTimeCell(text,record) }, - { title: '从IP', debugtype: 'string', dataIndex: 'fromIp', width: '15',render: (text, record)=>renderTextCell(text,record) }, - { title: '描述', debugtype: 'string', dataIndex: 'description', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: 'SEC的用户', dataIndex: 'secUser', render: (text, record) => renderReferenceCell(text, record)}, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.loginTime, dataIndex: 'loginTime', render: (text, record) =>renderDateTimeCell(text,record), sorter: true}, + { title: fieldLabels.fromIp, debugtype: 'string', dataIndex: 'fromIp', width: '15',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.description, debugtype: 'string', dataIndex: 'description', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.secUser, dataIndex: 'secUser', render: (text, record) => renderReferenceCell(text, record), sorter:true}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({loginHistory,targetComponent})=>{ -const fieldLabels = { - id: '序号', - loginTime: '登录时间', - fromIp: '从IP', - description: '描述', - secUser: 'SEC的用户', + + + const {LoginHistoryService} = GlobalComponents + // const userContext = null + return ( + +{loginHistory.id} +{ moment(loginHistory.loginTime).format('YYYY-MM-DD')} +{loginHistory.fromIp} +{loginHistory.description} +{loginHistory.secUser==null?appLocaleName(userContext,"NotAssigned"):`${loginHistory.secUser.displayName}(${loginHistory.secUser.id})`} + + showTransferModel(targetComponent,"SEC的用户","secUser",LoginHistoryService.requestCandidateSecUser, + LoginHistoryService.transferToAnotherSecUser,"anotherSecUserId",loginHistory.secUser?loginHistory.secUser.id:"")} + style={{fontSize: 20,color:"red"}} /> + + + {buildTransferModal(loginHistory,targetComponent)} + + ) } + + -const LoginHistoryBase={menuData,displayColumns,fieldLabels} +const LoginHistoryBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default LoginHistoryBase diff --git a/bizui/src/bizcomponents/loginhistory/LoginHistory.createform.js b/bizui/src/bizcomponents/loginhistory/LoginHistory.createform.js index b734df17c..4bc48b23e 100644 --- a/bizui/src/bizcomponents/loginhistory/LoginHistory.createform.js +++ b/bizui/src/bizcomponents/loginhistory/LoginHistory.createform.js @@ -208,7 +208,7 @@ class LoginHistoryCreateForm extends Component { {getFieldDecorator('fromIp', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -218,7 +218,7 @@ class LoginHistoryCreateForm extends Component { {getFieldDecorator('description', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/loginhistory/LoginHistory.dashboard.js b/bizui/src/bizcomponents/loginhistory/LoginHistory.dashboard.js index 17a542db8..6647c135c 100644 --- a/bizui/src/bizcomponents/loginhistory/LoginHistory.dashboard.js +++ b/bizui/src/bizcomponents/loginhistory/LoginHistory.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -143,6 +143,7 @@ class LoginHistoryDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -151,13 +152,17 @@ class LoginHistoryDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/loginhistory/LoginHistory.model.js b/bizui/src/bizcomponents/loginhistory/LoginHistory.model.js index 5e28ed6bb..625c3dbbe 100644 --- a/bizui/src/bizcomponents/loginhistory/LoginHistory.model.js +++ b/bizui/src/bizcomponents/loginhistory/LoginHistory.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' diff --git a/bizui/src/bizcomponents/loginhistory/LoginHistory.permission.js b/bizui/src/bizcomponents/loginhistory/LoginHistory.permission.js new file mode 100644 index 000000000..ea4c48fc7 --- /dev/null +++ b/bizui/src/bizcomponents/loginhistory/LoginHistory.permission.js @@ -0,0 +1,86 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './LoginHistory.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (loginHistory,targetComponent) =>{ + const userContext = null + return ( + +{loginHistory.id} +{ moment(loginHistory.loginTime).format('YYYY-MM-DD')} +{loginHistory.fromIp} +{loginHistory.description} + + + ) +} + + +const renderPermissionSetting = loginHistory => { + const {LoginHistoryBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class LoginHistoryPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const loginHistory = this.props.loginHistory; + const { id,displayName, } = loginHistory + const cardsData = {cardsName:"登录历史",cardsFor: "loginHistory",cardsSource: loginHistory, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + loginHistory: state._loginHistory, +}))(Form.create()(LoginHistoryPermission)) + diff --git a/bizui/src/bizcomponents/loginhistory/LoginHistory.permission.less b/bizui/src/bizcomponents/loginhistory/LoginHistory.permission.less new file mode 100644 index 000000000..5a407d161 --- /dev/null +++ b/bizui/src/bizcomponents/loginhistory/LoginHistory.permission.less @@ -0,0 +1,10 @@ +@import "../../common/Preference.tool.less"; + + + + + + + + + diff --git a/bizui/src/bizcomponents/loginhistory/LoginHistory.preference.js b/bizui/src/bizcomponents/loginhistory/LoginHistory.preference.js index 8d3a4455d..da5e5a43e 100644 --- a/bizui/src/bizcomponents/loginhistory/LoginHistory.preference.js +++ b/bizui/src/bizcomponents/loginhistory/LoginHistory.preference.js @@ -307,8 +307,12 @@ class LoginHistoryPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, } = this.props.loginHistory - const cardsData = {cardsName:"登录历史",cardsFor: "loginHistory",cardsSource: this.props.loginHistory, + const loginHistory = this.props.loginHistory; + const { id,displayName, } = loginHistory + + + + const cardsData = {cardsName:"登录历史",cardsFor: "loginHistory",cardsSource: loginHistory, subItems: [ ], diff --git a/bizui/src/bizcomponents/loginhistory/LoginHistory.profile.js b/bizui/src/bizcomponents/loginhistory/LoginHistory.profile.js new file mode 100644 index 000000000..c187469dc --- /dev/null +++ b/bizui/src/bizcomponents/loginhistory/LoginHistory.profile.js @@ -0,0 +1,93 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './LoginHistory.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (loginHistory,targetComponent) =>{ + const userContext = null + return ( + +{loginHistory.id} +{ moment(loginHistory.loginTime).format('YYYY-MM-DD')} +{loginHistory.fromIp} +{loginHistory.description} + + + ) +} + + + +class LoginHistoryProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const loginHistory = this.props.loginHistory; + const { id,displayName, } = loginHistory + + const cardsData = {cardsName:"登录历史",cardsFor: "loginHistory",cardsSource: loginHistory, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + loginHistory: state._loginHistory, +}))(Form.create()(LoginHistoryProfile)) + diff --git a/bizui/src/bizcomponents/loginhistory/LoginHistory.profile.less b/bizui/src/bizcomponents/loginhistory/LoginHistory.profile.less new file mode 100644 index 000000000..5a407d161 --- /dev/null +++ b/bizui/src/bizcomponents/loginhistory/LoginHistory.profile.less @@ -0,0 +1,10 @@ +@import "../../common/Preference.tool.less"; + + + + + + + + + diff --git a/bizui/src/bizcomponents/loginhistory/LoginHistory.search.js b/bizui/src/bizcomponents/loginhistory/LoginHistory.search.js index e1c7a5386..42239031f 100644 --- a/bizui/src/bizcomponents/loginhistory/LoginHistory.search.js +++ b/bizui/src/bizcomponents/loginhistory/LoginHistory.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/loginhistory/LoginHistory.searchform.js b/bizui/src/bizcomponents/loginhistory/LoginHistory.searchform.js index 83b6e29db..a1c4577be 100644 --- a/bizui/src/bizcomponents/loginhistory/LoginHistory.searchform.js +++ b/bizui/src/bizcomponents/loginhistory/LoginHistory.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`loginHistoryList.searchField`] = fieldName - value[`loginHistoryList.searchVerb`] = searchVerb - value[`loginHistoryList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,12 +127,13 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'fromIp')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'description')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'secUser')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'fromIp')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'description')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'secUser')) console.log("the final parameter", paramList) @@ -148,11 +149,12 @@ componentDidMount() { } - params['loginHistoryList'] = 1 - params['loginHistoryList.orderBy.0'] = "id" - params['loginHistoryList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -207,8 +209,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -286,8 +288,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/loginhistory/LoginHistory.table.js b/bizui/src/bizcomponents/loginhistory/LoginHistory.table.js index 47e2577a6..378f45b75 100644 --- a/bizui/src/bizcomponents/loginhistory/LoginHistory.table.js +++ b/bizui/src/bizcomponents/loginhistory/LoginHistory.table.js @@ -40,24 +40,53 @@ class LoginHistoryTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = LoginHistoryBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class LoginHistoryTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class LoginHistoryTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/loginhistory/LoginHistory.updateform.js b/bizui/src/bizcomponents/loginhistory/LoginHistory.updateform.js index 43058c1f2..ade2fe00b 100644 --- a/bizui/src/bizcomponents/loginhistory/LoginHistory.updateform.js +++ b/bizui/src/bizcomponents/loginhistory/LoginHistory.updateform.js @@ -262,7 +262,7 @@ class LoginHistoryUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class LoginHistoryUpdateForm extends Component { initialValue: selectedRow.fromIp, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class LoginHistoryUpdateForm extends Component { initialValue: selectedRow.description, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.app.js b/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.app.js index 78545aaf2..736d28a8a 100644 --- a/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.app.js +++ b/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class MemberRewardPointBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -157,12 +166,14 @@ class MemberRewardPointBizApp extends React.PureComponent { buildRouters = () =>{ const {MemberRewardPointDashboard} = GlobalComponents - const {MemberRewardPointPreference} = GlobalComponents + const {MemberRewardPointPermission} = GlobalComponents + const {MemberRewardPointProfile} = GlobalComponents const routers=[ {path:"/memberRewardPoint/:id/dashboard", component: MemberRewardPointDashboard}, - {path:"/memberRewardPoint/:id/preference", component: MemberRewardPointPreference}, + {path:"/memberRewardPoint/:id/profile", component: MemberRewardPointProfile}, + {path:"/memberRewardPoint/:id/permission", component: MemberRewardPointPermission}, diff --git a/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.associateform.js b/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.associateform.js index 2e98bd27d..a47cc6b27 100644 --- a/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.associateform.js +++ b/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { name: '购买积分', - point: '20', + point: '16', ownerId: 'RSM000001', } */ @@ -139,7 +139,7 @@ class MemberRewardPointAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -149,7 +149,7 @@ class MemberRewardPointAssociateForm extends Component { {getFieldDecorator('point', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.associateform.less b/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.associateform.less +++ b/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.base.js b/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.base.js index 510b7f690..965a76d44 100644 --- a/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.base.js +++ b/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.base.js @@ -1,10 +1,33 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"会员奖励点", menuFor: "memberRewardPoint", subItems: [ @@ -12,88 +35,50 @@ const menuData = {menuName:"会员奖励点", menuFor: "memberRewardPoint", ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + name: '名称', + point: '点', + owner: '业主', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record) }, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '10',render: (text, record)=>renderTextCell(text,record) }, - { title: '点', debugtype: 'int', dataIndex: 'point', width: '6',render: (text, record)=>renderTextCell(text,record) }, - { title: '业主', dataIndex: 'owner', render: (text, record) => renderReferenceCell(text, record)}, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '10',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.point, debugtype: 'int', dataIndex: 'point', width: '6',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.owner, dataIndex: 'owner', render: (text, record) => renderReferenceCell(text, record), sorter:true}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({memberRewardPoint,targetComponent})=>{ -const fieldLabels = { - id: '序号', - name: '名称', - point: '点', - owner: '业主', + + + const {MemberRewardPointService} = GlobalComponents + // const userContext = null + return ( + +{memberRewardPoint.id} +{memberRewardPoint.name} +{memberRewardPoint.point} +{memberRewardPoint.owner==null?appLocaleName(userContext,"NotAssigned"):`${memberRewardPoint.owner.displayName}(${memberRewardPoint.owner.id})`} + + showTransferModel(targetComponent,"业主","retailStoreMember",MemberRewardPointService.requestCandidateOwner, + MemberRewardPointService.transferToAnotherOwner,"anotherOwnerId",memberRewardPoint.owner?memberRewardPoint.owner.id:"")} + style={{fontSize: 20,color:"red"}} /> + + + {buildTransferModal(memberRewardPoint,targetComponent)} + + ) } + + -const MemberRewardPointBase={menuData,displayColumns,fieldLabels} +const MemberRewardPointBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default MemberRewardPointBase diff --git a/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.createform.js b/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.createform.js index ac63dcc70..fa2a645da 100644 --- a/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.createform.js +++ b/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { name: '购买积分', - point: '19', + point: '18', ownerId: 'RSM000001', } */ @@ -208,7 +208,7 @@ class MemberRewardPointCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -218,7 +218,7 @@ class MemberRewardPointCreateForm extends Component { {getFieldDecorator('point', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.dashboard.js b/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.dashboard.js index 28e29090a..8d020edec 100644 --- a/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.dashboard.js +++ b/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -142,6 +142,7 @@ class MemberRewardPointDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -150,13 +151,17 @@ class MemberRewardPointDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.model.js b/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.model.js index 8b36c502c..27f064401 100644 --- a/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.model.js +++ b/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' diff --git a/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.permission.js b/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.permission.js new file mode 100644 index 000000000..4f6834ecd --- /dev/null +++ b/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.permission.js @@ -0,0 +1,85 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './MemberRewardPoint.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (memberRewardPoint,targetComponent) =>{ + const userContext = null + return ( + +{memberRewardPoint.id} +{memberRewardPoint.name} +{memberRewardPoint.point} + + + ) +} + + +const renderPermissionSetting = memberRewardPoint => { + const {MemberRewardPointBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class MemberRewardPointPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const memberRewardPoint = this.props.memberRewardPoint; + const { id,displayName, } = memberRewardPoint + const cardsData = {cardsName:"会员奖励点",cardsFor: "memberRewardPoint",cardsSource: memberRewardPoint, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + memberRewardPoint: state._memberRewardPoint, +}))(Form.create()(MemberRewardPointPermission)) + diff --git a/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.permission.less b/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.preference.js b/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.preference.js index f682bf102..763466eaf 100644 --- a/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.preference.js +++ b/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.preference.js @@ -306,8 +306,12 @@ class MemberRewardPointPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, } = this.props.memberRewardPoint - const cardsData = {cardsName:"会员奖励点",cardsFor: "memberRewardPoint",cardsSource: this.props.memberRewardPoint, + const memberRewardPoint = this.props.memberRewardPoint; + const { id,displayName, } = memberRewardPoint + + + + const cardsData = {cardsName:"会员奖励点",cardsFor: "memberRewardPoint",cardsSource: memberRewardPoint, subItems: [ ], diff --git a/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.profile.js b/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.profile.js new file mode 100644 index 000000000..8b8426b99 --- /dev/null +++ b/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.profile.js @@ -0,0 +1,92 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './MemberRewardPoint.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (memberRewardPoint,targetComponent) =>{ + const userContext = null + return ( + +{memberRewardPoint.id} +{memberRewardPoint.name} +{memberRewardPoint.point} + + + ) +} + + + +class MemberRewardPointProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const memberRewardPoint = this.props.memberRewardPoint; + const { id,displayName, } = memberRewardPoint + + const cardsData = {cardsName:"会员奖励点",cardsFor: "memberRewardPoint",cardsSource: memberRewardPoint, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + memberRewardPoint: state._memberRewardPoint, +}))(Form.create()(MemberRewardPointProfile)) + diff --git a/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.profile.less b/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.search.js b/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.search.js index e008ea94c..755a36623 100644 --- a/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.search.js +++ b/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.searchform.js b/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.searchform.js index 20c7503a3..5aafb1101 100644 --- a/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.searchform.js +++ b/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`memberRewardPointList.searchField`] = fieldName - value[`memberRewardPointList.searchVerb`] = searchVerb - value[`memberRewardPointList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,11 +127,12 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'owner')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'owner')) console.log("the final parameter", paramList) @@ -147,11 +148,12 @@ componentDidMount() { } - params['memberRewardPointList'] = 1 - params['memberRewardPointList.orderBy.0'] = "id" - params['memberRewardPointList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -206,8 +208,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -277,8 +279,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.table.js b/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.table.js index 8182c794a..54f3a31d8 100644 --- a/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.table.js +++ b/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.table.js @@ -40,24 +40,53 @@ class MemberRewardPointTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = MemberRewardPointBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class MemberRewardPointTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class MemberRewardPointTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.updateform.js b/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.updateform.js index 2fcd025eb..118a911f3 100644 --- a/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.updateform.js +++ b/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.updateform.js @@ -261,7 +261,7 @@ class MemberRewardPointUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class MemberRewardPointUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -285,7 +285,7 @@ class MemberRewardPointUpdateForm extends Component { initialValue: selectedRow.point, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.app.js b/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.app.js index d9f627fce..a24ff0760 100644 --- a/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.app.js +++ b/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class MemberRewardPointRedemptionBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -157,12 +166,14 @@ class MemberRewardPointRedemptionBizApp extends React.PureComponent { buildRouters = () =>{ const {MemberRewardPointRedemptionDashboard} = GlobalComponents - const {MemberRewardPointRedemptionPreference} = GlobalComponents + const {MemberRewardPointRedemptionPermission} = GlobalComponents + const {MemberRewardPointRedemptionProfile} = GlobalComponents const routers=[ {path:"/memberRewardPointRedemption/:id/dashboard", component: MemberRewardPointRedemptionDashboard}, - {path:"/memberRewardPointRedemption/:id/preference", component: MemberRewardPointRedemptionPreference}, + {path:"/memberRewardPointRedemption/:id/profile", component: MemberRewardPointRedemptionProfile}, + {path:"/memberRewardPointRedemption/:id/permission", component: MemberRewardPointRedemptionPermission}, diff --git a/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.associateform.js b/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.associateform.js index 80245637d..154392132 100644 --- a/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.associateform.js +++ b/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { name: '积分换锅', - point: '18', + point: '17', ownerId: 'RSM000001', } */ @@ -139,7 +139,7 @@ class MemberRewardPointRedemptionAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -149,7 +149,7 @@ class MemberRewardPointRedemptionAssociateForm extends Component { {getFieldDecorator('point', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.associateform.less b/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.associateform.less +++ b/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.base.js b/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.base.js index b7de10914..e15ddb74f 100644 --- a/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.base.js +++ b/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.base.js @@ -1,10 +1,33 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"会员奖励点赎回", menuFor: "memberRewardPointRedemption", subItems: [ @@ -12,88 +35,50 @@ const menuData = {menuName:"会员奖励点赎回", menuFor: "memberRewardPointR ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + name: '名称', + point: '点', + owner: '业主', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record) }, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: '点', debugtype: 'int', dataIndex: 'point', width: '6',render: (text, record)=>renderTextCell(text,record) }, - { title: '业主', dataIndex: 'owner', render: (text, record) => renderReferenceCell(text, record)}, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.point, debugtype: 'int', dataIndex: 'point', width: '6',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.owner, dataIndex: 'owner', render: (text, record) => renderReferenceCell(text, record), sorter:true}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({memberRewardPointRedemption,targetComponent})=>{ -const fieldLabels = { - id: '序号', - name: '名称', - point: '点', - owner: '业主', + + + const {MemberRewardPointRedemptionService} = GlobalComponents + // const userContext = null + return ( + +{memberRewardPointRedemption.id} +{memberRewardPointRedemption.name} +{memberRewardPointRedemption.point} +{memberRewardPointRedemption.owner==null?appLocaleName(userContext,"NotAssigned"):`${memberRewardPointRedemption.owner.displayName}(${memberRewardPointRedemption.owner.id})`} + + showTransferModel(targetComponent,"业主","retailStoreMember",MemberRewardPointRedemptionService.requestCandidateOwner, + MemberRewardPointRedemptionService.transferToAnotherOwner,"anotherOwnerId",memberRewardPointRedemption.owner?memberRewardPointRedemption.owner.id:"")} + style={{fontSize: 20,color:"red"}} /> + + + {buildTransferModal(memberRewardPointRedemption,targetComponent)} + + ) } + + -const MemberRewardPointRedemptionBase={menuData,displayColumns,fieldLabels} +const MemberRewardPointRedemptionBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default MemberRewardPointRedemptionBase diff --git a/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.createform.js b/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.createform.js index a85a09db4..fcebec277 100644 --- a/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.createform.js +++ b/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { name: '积分换锅', - point: '19', + point: '16', ownerId: 'RSM000001', } */ @@ -208,7 +208,7 @@ class MemberRewardPointRedemptionCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -218,7 +218,7 @@ class MemberRewardPointRedemptionCreateForm extends Component { {getFieldDecorator('point', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.dashboard.js b/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.dashboard.js index 49e6a5115..c613012e5 100644 --- a/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.dashboard.js +++ b/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -142,6 +142,7 @@ class MemberRewardPointRedemptionDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -150,13 +151,17 @@ class MemberRewardPointRedemptionDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.model.js b/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.model.js index 4b668fc35..c781dd6b0 100644 --- a/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.model.js +++ b/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' diff --git a/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.permission.js b/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.permission.js new file mode 100644 index 000000000..f8610a49f --- /dev/null +++ b/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.permission.js @@ -0,0 +1,85 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './MemberRewardPointRedemption.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (memberRewardPointRedemption,targetComponent) =>{ + const userContext = null + return ( + +{memberRewardPointRedemption.id} +{memberRewardPointRedemption.name} +{memberRewardPointRedemption.point} + + + ) +} + + +const renderPermissionSetting = memberRewardPointRedemption => { + const {MemberRewardPointRedemptionBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class MemberRewardPointRedemptionPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const memberRewardPointRedemption = this.props.memberRewardPointRedemption; + const { id,displayName, } = memberRewardPointRedemption + const cardsData = {cardsName:"会员奖励点赎回",cardsFor: "memberRewardPointRedemption",cardsSource: memberRewardPointRedemption, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + memberRewardPointRedemption: state._memberRewardPointRedemption, +}))(Form.create()(MemberRewardPointRedemptionPermission)) + diff --git a/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.permission.less b/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.preference.js b/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.preference.js index 000b63654..f53712760 100644 --- a/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.preference.js +++ b/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.preference.js @@ -306,8 +306,12 @@ class MemberRewardPointRedemptionPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, } = this.props.memberRewardPointRedemption - const cardsData = {cardsName:"会员奖励点赎回",cardsFor: "memberRewardPointRedemption",cardsSource: this.props.memberRewardPointRedemption, + const memberRewardPointRedemption = this.props.memberRewardPointRedemption; + const { id,displayName, } = memberRewardPointRedemption + + + + const cardsData = {cardsName:"会员奖励点赎回",cardsFor: "memberRewardPointRedemption",cardsSource: memberRewardPointRedemption, subItems: [ ], diff --git a/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.profile.js b/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.profile.js new file mode 100644 index 000000000..9739c0ec2 --- /dev/null +++ b/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.profile.js @@ -0,0 +1,92 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './MemberRewardPointRedemption.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (memberRewardPointRedemption,targetComponent) =>{ + const userContext = null + return ( + +{memberRewardPointRedemption.id} +{memberRewardPointRedemption.name} +{memberRewardPointRedemption.point} + + + ) +} + + + +class MemberRewardPointRedemptionProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const memberRewardPointRedemption = this.props.memberRewardPointRedemption; + const { id,displayName, } = memberRewardPointRedemption + + const cardsData = {cardsName:"会员奖励点赎回",cardsFor: "memberRewardPointRedemption",cardsSource: memberRewardPointRedemption, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + memberRewardPointRedemption: state._memberRewardPointRedemption, +}))(Form.create()(MemberRewardPointRedemptionProfile)) + diff --git a/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.profile.less b/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.search.js b/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.search.js index 01ab56815..39acd2683 100644 --- a/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.search.js +++ b/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.searchform.js b/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.searchform.js index 989f4075d..46e01f2fc 100644 --- a/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.searchform.js +++ b/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`memberRewardPointRedemptionList.searchField`] = fieldName - value[`memberRewardPointRedemptionList.searchVerb`] = searchVerb - value[`memberRewardPointRedemptionList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,11 +127,12 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'owner')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'owner')) console.log("the final parameter", paramList) @@ -147,11 +148,12 @@ componentDidMount() { } - params['memberRewardPointRedemptionList'] = 1 - params['memberRewardPointRedemptionList.orderBy.0'] = "id" - params['memberRewardPointRedemptionList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -206,8 +208,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -277,8 +279,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.table.js b/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.table.js index 146e8fc13..75d04e6ea 100644 --- a/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.table.js +++ b/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.table.js @@ -40,24 +40,53 @@ class MemberRewardPointRedemptionTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = MemberRewardPointRedemptionBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class MemberRewardPointRedemptionTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class MemberRewardPointRedemptionTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.updateform.js b/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.updateform.js index 42f517e2a..b26638224 100644 --- a/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.updateform.js +++ b/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.updateform.js @@ -261,7 +261,7 @@ class MemberRewardPointRedemptionUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class MemberRewardPointRedemptionUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -285,7 +285,7 @@ class MemberRewardPointRedemptionUpdateForm extends Component { initialValue: selectedRow.point, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/memberwishlist/MemberWishlist.app.js b/bizui/src/bizcomponents/memberwishlist/MemberWishlist.app.js index a67743afa..15e42aa7a 100644 --- a/bizui/src/bizcomponents/memberwishlist/MemberWishlist.app.js +++ b/bizui/src/bizcomponents/memberwishlist/MemberWishlist.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class MemberWishlistBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class MemberWishlistBizApp extends React.PureComponent { buildRouters = () =>{ const {MemberWishlistDashboard} = GlobalComponents - const {MemberWishlistPreference} = GlobalComponents + const {MemberWishlistPermission} = GlobalComponents + const {MemberWishlistProfile} = GlobalComponents const routers=[ {path:"/memberWishlist/:id/dashboard", component: MemberWishlistDashboard}, - {path:"/memberWishlist/:id/preference", component: MemberWishlistPreference}, + {path:"/memberWishlist/:id/profile", component: MemberWishlistProfile}, + {path:"/memberWishlist/:id/permission", component: MemberWishlistPermission}, diff --git a/bizui/src/bizcomponents/memberwishlist/MemberWishlist.associateform.js b/bizui/src/bizcomponents/memberwishlist/MemberWishlist.associateform.js index ecfabbbc9..9cb13769c 100644 --- a/bizui/src/bizcomponents/memberwishlist/MemberWishlist.associateform.js +++ b/bizui/src/bizcomponents/memberwishlist/MemberWishlist.associateform.js @@ -139,7 +139,7 @@ class MemberWishlistAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/memberwishlist/MemberWishlist.associateform.less b/bizui/src/bizcomponents/memberwishlist/MemberWishlist.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/memberwishlist/MemberWishlist.associateform.less +++ b/bizui/src/bizcomponents/memberwishlist/MemberWishlist.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/memberwishlist/MemberWishlist.base.js b/bizui/src/bizcomponents/memberwishlist/MemberWishlist.base.js index 2756e7e8a..9a314176f 100644 --- a/bizui/src/bizcomponents/memberwishlist/MemberWishlist.base.js +++ b/bizui/src/bizcomponents/memberwishlist/MemberWishlist.base.js @@ -1,98 +1,82 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"会员收藏", menuFor: "memberWishlist", subItems: [ - {name: 'memberWishlistProductList', displayName:'会员收藏产品', icon:'ember',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'memberWishlistProductList', displayName:'会员收藏产品', icon:'ember',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + name: '名称', + owner: '业主', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'memberWishlist') }, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '10',render: (text, record)=>renderTextCell(text,record) }, - { title: '业主', dataIndex: 'owner', render: (text, record) => renderReferenceCell(text, record)}, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'memberWishlist') , sorter: true }, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '10',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.owner, dataIndex: 'owner', render: (text, record) => renderReferenceCell(text, record), sorter:true}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({memberWishlist,targetComponent})=>{ -const fieldLabels = { - id: '序号', - name: '名称', - owner: '业主', + + + const {MemberWishlistService} = GlobalComponents + // const userContext = null + return ( + +{memberWishlist.id} +{memberWishlist.name} +{memberWishlist.owner==null?appLocaleName(userContext,"NotAssigned"):`${memberWishlist.owner.displayName}(${memberWishlist.owner.id})`} + + showTransferModel(targetComponent,"业主","retailStoreMember",MemberWishlistService.requestCandidateOwner, + MemberWishlistService.transferToAnotherOwner,"anotherOwnerId",memberWishlist.owner?memberWishlist.owner.id:"")} + style={{fontSize: 20,color:"red"}} /> + + + {buildTransferModal(memberWishlist,targetComponent)} + + ) } + + -const MemberWishlistBase={menuData,displayColumns,fieldLabels} +const MemberWishlistBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default MemberWishlistBase diff --git a/bizui/src/bizcomponents/memberwishlist/MemberWishlist.createform.js b/bizui/src/bizcomponents/memberwishlist/MemberWishlist.createform.js index 2af739976..974750c1a 100644 --- a/bizui/src/bizcomponents/memberwishlist/MemberWishlist.createform.js +++ b/bizui/src/bizcomponents/memberwishlist/MemberWishlist.createform.js @@ -207,7 +207,7 @@ class MemberWishlistCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/memberwishlist/MemberWishlist.dashboard.js b/bizui/src/bizcomponents/memberwishlist/MemberWishlist.dashboard.js index 9c6b17f88..3322bf588 100644 --- a/bizui/src/bizcomponents/memberwishlist/MemberWishlist.dashboard.js +++ b/bizui/src/bizcomponents/memberwishlist/MemberWishlist.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -142,6 +142,7 @@ class MemberWishlistDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -150,13 +151,17 @@ class MemberWishlistDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/memberwishlist/MemberWishlist.model.js b/bizui/src/bizcomponents/memberwishlist/MemberWishlist.model.js index d922d2a6e..e5a1a6474 100644 --- a/bizui/src/bizcomponents/memberwishlist/MemberWishlist.model.js +++ b/bizui/src/bizcomponents/memberwishlist/MemberWishlist.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/memberWishlist/${id}/list/\MemberWishlistProductList/会员收藏产品+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/memberWishlist/${id}/list/MemberWishlistProductList/会员收藏产品+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateMemberWishlistProduct({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/memberWishlist/${id}/list/\MemberWishlistProductList/会员收藏产品列表`, state: newPlayload } + const location = { pathname: `/memberWishlist/${id}/list/MemberWishlistProductList/会员收藏产品列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextMemberWishlistProductUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/memberwishlist/MemberWishlist.permission.js b/bizui/src/bizcomponents/memberwishlist/MemberWishlist.permission.js new file mode 100644 index 000000000..bd1586dfe --- /dev/null +++ b/bizui/src/bizcomponents/memberwishlist/MemberWishlist.permission.js @@ -0,0 +1,84 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './MemberWishlist.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (memberWishlist,targetComponent) =>{ + const userContext = null + return ( + +{memberWishlist.id} +{memberWishlist.name} + + + ) +} + + +const renderPermissionSetting = memberWishlist => { + const {MemberWishlistBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class MemberWishlistPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const memberWishlist = this.props.memberWishlist; + const { id,displayName, memberWishlistProductCount } = memberWishlist + const cardsData = {cardsName:"会员收藏",cardsFor: "memberWishlist",cardsSource: memberWishlist, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + memberWishlist: state._memberWishlist, +}))(Form.create()(MemberWishlistPermission)) + diff --git a/bizui/src/bizcomponents/memberwishlist/MemberWishlist.permission.less b/bizui/src/bizcomponents/memberwishlist/MemberWishlist.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/memberwishlist/MemberWishlist.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/memberwishlist/MemberWishlist.preference.js b/bizui/src/bizcomponents/memberwishlist/MemberWishlist.preference.js index 795256840..361c60fb5 100644 --- a/bizui/src/bizcomponents/memberwishlist/MemberWishlist.preference.js +++ b/bizui/src/bizcomponents/memberwishlist/MemberWishlist.preference.js @@ -305,8 +305,12 @@ class MemberWishlistPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, memberWishlistProductCount } = this.props.memberWishlist - const cardsData = {cardsName:"会员收藏",cardsFor: "memberWishlist",cardsSource: this.props.memberWishlist, + const memberWishlist = this.props.memberWishlist; + const { id,displayName, memberWishlistProductCount } = memberWishlist + + + + const cardsData = {cardsName:"会员收藏",cardsFor: "memberWishlist",cardsSource: memberWishlist, subItems: [ ], diff --git a/bizui/src/bizcomponents/memberwishlist/MemberWishlist.profile.js b/bizui/src/bizcomponents/memberwishlist/MemberWishlist.profile.js new file mode 100644 index 000000000..c8a512709 --- /dev/null +++ b/bizui/src/bizcomponents/memberwishlist/MemberWishlist.profile.js @@ -0,0 +1,91 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './MemberWishlist.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (memberWishlist,targetComponent) =>{ + const userContext = null + return ( + +{memberWishlist.id} +{memberWishlist.name} + + + ) +} + + + +class MemberWishlistProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const memberWishlist = this.props.memberWishlist; + const { id,displayName, memberWishlistProductCount } = memberWishlist + + const cardsData = {cardsName:"会员收藏",cardsFor: "memberWishlist",cardsSource: memberWishlist, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + memberWishlist: state._memberWishlist, +}))(Form.create()(MemberWishlistProfile)) + diff --git a/bizui/src/bizcomponents/memberwishlist/MemberWishlist.profile.less b/bizui/src/bizcomponents/memberwishlist/MemberWishlist.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/memberwishlist/MemberWishlist.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/memberwishlist/MemberWishlist.search.js b/bizui/src/bizcomponents/memberwishlist/MemberWishlist.search.js index c9b6b4a5d..4c63d0060 100644 --- a/bizui/src/bizcomponents/memberwishlist/MemberWishlist.search.js +++ b/bizui/src/bizcomponents/memberwishlist/MemberWishlist.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/memberwishlist/MemberWishlist.searchform.js b/bizui/src/bizcomponents/memberwishlist/MemberWishlist.searchform.js index b5e9fecf0..0fdf407ba 100644 --- a/bizui/src/bizcomponents/memberwishlist/MemberWishlist.searchform.js +++ b/bizui/src/bizcomponents/memberwishlist/MemberWishlist.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`memberWishlistList.searchField`] = fieldName - value[`memberWishlistList.searchVerb`] = searchVerb - value[`memberWishlistList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,11 +127,12 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'owner')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'owner')) console.log("the final parameter", paramList) @@ -147,11 +148,12 @@ componentDidMount() { } - params['memberWishlistList'] = 1 - params['memberWishlistList.orderBy.0'] = "id" - params['memberWishlistList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -206,8 +208,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -277,8 +279,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/memberwishlist/MemberWishlist.table.js b/bizui/src/bizcomponents/memberwishlist/MemberWishlist.table.js index 241de67d4..92d74ef02 100644 --- a/bizui/src/bizcomponents/memberwishlist/MemberWishlist.table.js +++ b/bizui/src/bizcomponents/memberwishlist/MemberWishlist.table.js @@ -40,24 +40,53 @@ class MemberWishlistTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = MemberWishlistBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class MemberWishlistTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class MemberWishlistTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/memberwishlist/MemberWishlist.updateform.js b/bizui/src/bizcomponents/memberwishlist/MemberWishlist.updateform.js index 2a65e7f31..8d412ad8f 100644 --- a/bizui/src/bizcomponents/memberwishlist/MemberWishlist.updateform.js +++ b/bizui/src/bizcomponents/memberwishlist/MemberWishlist.updateform.js @@ -261,7 +261,7 @@ class MemberWishlistUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class MemberWishlistUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.app.js b/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.app.js index 42a6917b3..cd9f34aae 100644 --- a/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.app.js +++ b/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class MemberWishlistProductBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -157,12 +166,14 @@ class MemberWishlistProductBizApp extends React.PureComponent { buildRouters = () =>{ const {MemberWishlistProductDashboard} = GlobalComponents - const {MemberWishlistProductPreference} = GlobalComponents + const {MemberWishlistProductPermission} = GlobalComponents + const {MemberWishlistProductProfile} = GlobalComponents const routers=[ {path:"/memberWishlistProduct/:id/dashboard", component: MemberWishlistProductDashboard}, - {path:"/memberWishlistProduct/:id/preference", component: MemberWishlistProductPreference}, + {path:"/memberWishlistProduct/:id/profile", component: MemberWishlistProductProfile}, + {path:"/memberWishlistProduct/:id/permission", component: MemberWishlistProductPermission}, diff --git a/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.associateform.js b/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.associateform.js index ee3946f85..c34534336 100644 --- a/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.associateform.js +++ b/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.associateform.js @@ -138,7 +138,7 @@ class MemberWishlistProductAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.associateform.less b/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.associateform.less +++ b/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.base.js b/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.base.js index 46b13927a..548adddfe 100644 --- a/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.base.js +++ b/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.base.js @@ -1,10 +1,33 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"会员收藏产品", menuFor: "memberWishlistProduct", subItems: [ @@ -12,86 +35,47 @@ const menuData = {menuName:"会员收藏产品", menuFor: "memberWishlistProduct ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + name: '名称', + owner: '业主', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record) }, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '9',render: (text, record)=>renderTextCell(text,record) }, - { title: '业主', dataIndex: 'owner', render: (text, record) => renderReferenceCell(text, record)}, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '9',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.owner, dataIndex: 'owner', render: (text, record) => renderReferenceCell(text, record), sorter:true}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({memberWishlistProduct,targetComponent})=>{ -const fieldLabels = { - id: '序号', - name: '名称', - owner: '业主', + + + const {MemberWishlistProductService} = GlobalComponents + // const userContext = null + return ( + +{memberWishlistProduct.id} +{memberWishlistProduct.name} +{memberWishlistProduct.owner==null?appLocaleName(userContext,"NotAssigned"):`${memberWishlistProduct.owner.displayName}(${memberWishlistProduct.owner.id})`} + + showTransferModel(targetComponent,"业主","memberWishlist",MemberWishlistProductService.requestCandidateOwner, + MemberWishlistProductService.transferToAnotherOwner,"anotherOwnerId",memberWishlistProduct.owner?memberWishlistProduct.owner.id:"")} + style={{fontSize: 20,color:"red"}} /> + + + {buildTransferModal(memberWishlistProduct,targetComponent)} + + ) } + + -const MemberWishlistProductBase={menuData,displayColumns,fieldLabels} +const MemberWishlistProductBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default MemberWishlistProductBase diff --git a/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.createform.js b/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.createform.js index eff2d1b35..1196e1595 100644 --- a/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.createform.js +++ b/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.createform.js @@ -207,7 +207,7 @@ class MemberWishlistProductCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.dashboard.js b/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.dashboard.js index afd279109..1c3f62bc0 100644 --- a/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.dashboard.js +++ b/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -141,6 +141,7 @@ class MemberWishlistProductDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -149,13 +150,17 @@ class MemberWishlistProductDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.model.js b/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.model.js index 841904efa..f479ebf83 100644 --- a/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.model.js +++ b/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' diff --git a/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.permission.js b/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.permission.js new file mode 100644 index 000000000..f1a369c14 --- /dev/null +++ b/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.permission.js @@ -0,0 +1,84 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './MemberWishlistProduct.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (memberWishlistProduct,targetComponent) =>{ + const userContext = null + return ( + +{memberWishlistProduct.id} +{memberWishlistProduct.name} + + + ) +} + + +const renderPermissionSetting = memberWishlistProduct => { + const {MemberWishlistProductBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class MemberWishlistProductPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const memberWishlistProduct = this.props.memberWishlistProduct; + const { id,displayName, } = memberWishlistProduct + const cardsData = {cardsName:"会员收藏产品",cardsFor: "memberWishlistProduct",cardsSource: memberWishlistProduct, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + memberWishlistProduct: state._memberWishlistProduct, +}))(Form.create()(MemberWishlistProductPermission)) + diff --git a/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.permission.less b/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.preference.js b/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.preference.js index a820bfe5e..4c9bcb05f 100644 --- a/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.preference.js +++ b/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.preference.js @@ -305,8 +305,12 @@ class MemberWishlistProductPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, } = this.props.memberWishlistProduct - const cardsData = {cardsName:"会员收藏产品",cardsFor: "memberWishlistProduct",cardsSource: this.props.memberWishlistProduct, + const memberWishlistProduct = this.props.memberWishlistProduct; + const { id,displayName, } = memberWishlistProduct + + + + const cardsData = {cardsName:"会员收藏产品",cardsFor: "memberWishlistProduct",cardsSource: memberWishlistProduct, subItems: [ ], diff --git a/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.profile.js b/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.profile.js new file mode 100644 index 000000000..1c23b9bcf --- /dev/null +++ b/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.profile.js @@ -0,0 +1,91 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './MemberWishlistProduct.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (memberWishlistProduct,targetComponent) =>{ + const userContext = null + return ( + +{memberWishlistProduct.id} +{memberWishlistProduct.name} + + + ) +} + + + +class MemberWishlistProductProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const memberWishlistProduct = this.props.memberWishlistProduct; + const { id,displayName, } = memberWishlistProduct + + const cardsData = {cardsName:"会员收藏产品",cardsFor: "memberWishlistProduct",cardsSource: memberWishlistProduct, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + memberWishlistProduct: state._memberWishlistProduct, +}))(Form.create()(MemberWishlistProductProfile)) + diff --git a/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.profile.less b/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.search.js b/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.search.js index 32dd6a405..0a09b07e2 100644 --- a/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.search.js +++ b/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.searchform.js b/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.searchform.js index beca3d083..7131bd985 100644 --- a/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.searchform.js +++ b/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`memberWishlistProductList.searchField`] = fieldName - value[`memberWishlistProductList.searchVerb`] = searchVerb - value[`memberWishlistProductList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,11 +127,12 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'owner')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'owner')) console.log("the final parameter", paramList) @@ -147,11 +148,12 @@ componentDidMount() { } - params['memberWishlistProductList'] = 1 - params['memberWishlistProductList.orderBy.0'] = "id" - params['memberWishlistProductList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -206,8 +208,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -277,8 +279,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.table.js b/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.table.js index 0e494d851..f1fc481cf 100644 --- a/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.table.js +++ b/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.table.js @@ -40,24 +40,53 @@ class MemberWishlistProductTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = MemberWishlistProductBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class MemberWishlistProductTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class MemberWishlistProductTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.updateform.js b/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.updateform.js index 5527f60a7..b0329688b 100644 --- a/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.updateform.js +++ b/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.updateform.js @@ -261,7 +261,7 @@ class MemberWishlistProductUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class MemberWishlistProductUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/objectaccess/ObjectAccess.app.js b/bizui/src/bizcomponents/objectaccess/ObjectAccess.app.js index ce76e631d..c5ca03714 100644 --- a/bizui/src/bizcomponents/objectaccess/ObjectAccess.app.js +++ b/bizui/src/bizcomponents/objectaccess/ObjectAccess.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class ObjectAccessBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -157,12 +166,14 @@ class ObjectAccessBizApp extends React.PureComponent { buildRouters = () =>{ const {ObjectAccessDashboard} = GlobalComponents - const {ObjectAccessPreference} = GlobalComponents + const {ObjectAccessPermission} = GlobalComponents + const {ObjectAccessProfile} = GlobalComponents const routers=[ {path:"/objectAccess/:id/dashboard", component: ObjectAccessDashboard}, - {path:"/objectAccess/:id/preference", component: ObjectAccessPreference}, + {path:"/objectAccess/:id/profile", component: ObjectAccessProfile}, + {path:"/objectAccess/:id/permission", component: ObjectAccessPermission}, diff --git a/bizui/src/bizcomponents/objectaccess/ObjectAccess.associateform.js b/bizui/src/bizcomponents/objectaccess/ObjectAccess.associateform.js index 991d478a1..df03b3414 100644 --- a/bizui/src/bizcomponents/objectaccess/ObjectAccess.associateform.js +++ b/bizui/src/bizcomponents/objectaccess/ObjectAccess.associateform.js @@ -148,7 +148,7 @@ class ObjectAccessAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -158,7 +158,7 @@ class ObjectAccessAssociateForm extends Component { {getFieldDecorator('objectType', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -168,7 +168,7 @@ class ObjectAccessAssociateForm extends Component { {getFieldDecorator('list1', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -178,7 +178,7 @@ class ObjectAccessAssociateForm extends Component { {getFieldDecorator('list2', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -188,7 +188,7 @@ class ObjectAccessAssociateForm extends Component { {getFieldDecorator('list3', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -198,7 +198,7 @@ class ObjectAccessAssociateForm extends Component { {getFieldDecorator('list4', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -208,7 +208,7 @@ class ObjectAccessAssociateForm extends Component { {getFieldDecorator('list5', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -218,7 +218,7 @@ class ObjectAccessAssociateForm extends Component { {getFieldDecorator('list6', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -228,7 +228,7 @@ class ObjectAccessAssociateForm extends Component { {getFieldDecorator('list7', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -238,7 +238,7 @@ class ObjectAccessAssociateForm extends Component { {getFieldDecorator('list8', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -248,7 +248,7 @@ class ObjectAccessAssociateForm extends Component { {getFieldDecorator('list9', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/objectaccess/ObjectAccess.associateform.less b/bizui/src/bizcomponents/objectaccess/ObjectAccess.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/objectaccess/ObjectAccess.associateform.less +++ b/bizui/src/bizcomponents/objectaccess/ObjectAccess.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/objectaccess/ObjectAccess.base.js b/bizui/src/bizcomponents/objectaccess/ObjectAccess.base.js index cc2e9f44c..53f1b42c3 100644 --- a/bizui/src/bizcomponents/objectaccess/ObjectAccess.base.js +++ b/bizui/src/bizcomponents/objectaccess/ObjectAccess.base.js @@ -1,10 +1,33 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"对象访问", menuFor: "objectAccess", subItems: [ @@ -12,87 +35,6 @@ const menuData = {menuName:"对象访问", menuFor: "objectAccess", ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) - -} - -const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record) }, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '11',render: (text, record)=>renderTextCell(text,record) }, - { title: '对象类型', debugtype: 'string', dataIndex: 'objectType', width: '32',render: (text, record)=>renderTextCell(text,record) }, - { title: '表', debugtype: 'string', dataIndex: 'list1', width: '24',render: (text, record)=>renderTextCell(text,record) }, - { title: '清单', debugtype: 'string', dataIndex: 'list2', width: '24',render: (text, record)=>renderTextCell(text,record) }, - { title: '目录3', debugtype: 'string', dataIndex: 'list3', width: '24',render: (text, record)=>renderTextCell(text,record) }, - { title: '清单', debugtype: 'string', dataIndex: 'list4', width: '24',render: (text, record)=>renderTextCell(text,record) }, - { title: '列表6', debugtype: 'string', dataIndex: 'list5', width: '24',render: (text, record)=>renderTextCell(text,record) }, - { title: 'list6', debugtype: 'string', dataIndex: 'list6', width: '24',render: (text, record)=>renderTextCell(text,record) }, - { title: 'list7', debugtype: 'string', dataIndex: 'list7', width: '24',render: (text, record)=>renderTextCell(text,record) }, - { title: 'list8', debugtype: 'string', dataIndex: 'list8', width: '24',render: (text, record)=>renderTextCell(text,record) }, - { title: 'list9', debugtype: 'string', dataIndex: 'list9', width: '24',render: (text, record)=>renderTextCell(text,record) }, - { title: '应用程序', dataIndex: 'app', render: (text, record) => renderReferenceCell(text, record)}, - -] - const fieldLabels = { id: '序号', name: '名称', @@ -110,8 +52,60 @@ const fieldLabels = { } +const displayColumns = [ + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '11',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.objectType, debugtype: 'string', dataIndex: 'objectType', width: '32',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.list1, debugtype: 'string', dataIndex: 'list1', width: '24',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.list2, debugtype: 'string', dataIndex: 'list2', width: '24',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.list3, debugtype: 'string', dataIndex: 'list3', width: '24',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.list4, debugtype: 'string', dataIndex: 'list4', width: '24',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.list5, debugtype: 'string', dataIndex: 'list5', width: '24',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.list6, debugtype: 'string', dataIndex: 'list6', width: '24',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.list7, debugtype: 'string', dataIndex: 'list7', width: '24',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.list8, debugtype: 'string', dataIndex: 'list8', width: '24',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.list9, debugtype: 'string', dataIndex: 'list9', width: '24',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.app, dataIndex: 'app', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + +] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({objectAccess,targetComponent})=>{ + + + + const {ObjectAccessService} = GlobalComponents + // const userContext = null + return ( + +{objectAccess.id} +{objectAccess.name} +{objectAccess.objectType} +{objectAccess.list1} +{objectAccess.list2} +{objectAccess.list3} +{objectAccess.list4} +{objectAccess.list5} +{objectAccess.list6} +{objectAccess.list7} +{objectAccess.list8} +{objectAccess.list9} +{objectAccess.app==null?appLocaleName(userContext,"NotAssigned"):`${objectAccess.app.displayName}(${objectAccess.app.id})`} + + showTransferModel(targetComponent,"应用程序","userApp",ObjectAccessService.requestCandidateApp, + ObjectAccessService.transferToAnotherApp,"anotherAppId",objectAccess.app?objectAccess.app.id:"")} + style={{fontSize: 20,color:"red"}} /> + + + {buildTransferModal(objectAccess,targetComponent)} + + ) + +} + + + -const ObjectAccessBase={menuData,displayColumns,fieldLabels} +const ObjectAccessBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default ObjectAccessBase diff --git a/bizui/src/bizcomponents/objectaccess/ObjectAccess.createform.js b/bizui/src/bizcomponents/objectaccess/ObjectAccess.createform.js index a5d8d63a4..da0396e29 100644 --- a/bizui/src/bizcomponents/objectaccess/ObjectAccess.createform.js +++ b/bizui/src/bizcomponents/objectaccess/ObjectAccess.createform.js @@ -217,7 +217,7 @@ class ObjectAccessCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -227,7 +227,7 @@ class ObjectAccessCreateForm extends Component { {getFieldDecorator('objectType', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -237,7 +237,7 @@ class ObjectAccessCreateForm extends Component { {getFieldDecorator('list1', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -247,7 +247,7 @@ class ObjectAccessCreateForm extends Component { {getFieldDecorator('list2', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -257,7 +257,7 @@ class ObjectAccessCreateForm extends Component { {getFieldDecorator('list3', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -267,7 +267,7 @@ class ObjectAccessCreateForm extends Component { {getFieldDecorator('list4', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -277,7 +277,7 @@ class ObjectAccessCreateForm extends Component { {getFieldDecorator('list5', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -287,7 +287,7 @@ class ObjectAccessCreateForm extends Component { {getFieldDecorator('list6', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -297,7 +297,7 @@ class ObjectAccessCreateForm extends Component { {getFieldDecorator('list7', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -307,7 +307,7 @@ class ObjectAccessCreateForm extends Component { {getFieldDecorator('list8', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -317,7 +317,7 @@ class ObjectAccessCreateForm extends Component { {getFieldDecorator('list9', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/objectaccess/ObjectAccess.dashboard.js b/bizui/src/bizcomponents/objectaccess/ObjectAccess.dashboard.js index 01daa2399..68c0ad0f2 100644 --- a/bizui/src/bizcomponents/objectaccess/ObjectAccess.dashboard.js +++ b/bizui/src/bizcomponents/objectaccess/ObjectAccess.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -151,6 +151,7 @@ class ObjectAccessDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -159,13 +160,17 @@ class ObjectAccessDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/objectaccess/ObjectAccess.model.js b/bizui/src/bizcomponents/objectaccess/ObjectAccess.model.js index 7432e3c9a..9d6d050dc 100644 --- a/bizui/src/bizcomponents/objectaccess/ObjectAccess.model.js +++ b/bizui/src/bizcomponents/objectaccess/ObjectAccess.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' diff --git a/bizui/src/bizcomponents/objectaccess/ObjectAccess.permission.js b/bizui/src/bizcomponents/objectaccess/ObjectAccess.permission.js new file mode 100644 index 000000000..0c220fa4b --- /dev/null +++ b/bizui/src/bizcomponents/objectaccess/ObjectAccess.permission.js @@ -0,0 +1,94 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './ObjectAccess.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (objectAccess,targetComponent) =>{ + const userContext = null + return ( + +{objectAccess.id} +{objectAccess.name} +{objectAccess.objectType} +{objectAccess.list1} +{objectAccess.list2} +{objectAccess.list3} +{objectAccess.list4} +{objectAccess.list5} +{objectAccess.list6} +{objectAccess.list7} +{objectAccess.list8} +{objectAccess.list9} + + + ) +} + + +const renderPermissionSetting = objectAccess => { + const {ObjectAccessBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class ObjectAccessPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const objectAccess = this.props.objectAccess; + const { id,displayName, } = objectAccess + const cardsData = {cardsName:"对象访问",cardsFor: "objectAccess",cardsSource: objectAccess, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + objectAccess: state._objectAccess, +}))(Form.create()(ObjectAccessPermission)) + diff --git a/bizui/src/bizcomponents/objectaccess/ObjectAccess.permission.less b/bizui/src/bizcomponents/objectaccess/ObjectAccess.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/objectaccess/ObjectAccess.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/objectaccess/ObjectAccess.preference.js b/bizui/src/bizcomponents/objectaccess/ObjectAccess.preference.js index e3e90b900..b39bf9881 100644 --- a/bizui/src/bizcomponents/objectaccess/ObjectAccess.preference.js +++ b/bizui/src/bizcomponents/objectaccess/ObjectAccess.preference.js @@ -315,8 +315,12 @@ class ObjectAccessPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, } = this.props.objectAccess - const cardsData = {cardsName:"对象访问",cardsFor: "objectAccess",cardsSource: this.props.objectAccess, + const objectAccess = this.props.objectAccess; + const { id,displayName, } = objectAccess + + + + const cardsData = {cardsName:"对象访问",cardsFor: "objectAccess",cardsSource: objectAccess, subItems: [ ], diff --git a/bizui/src/bizcomponents/objectaccess/ObjectAccess.profile.js b/bizui/src/bizcomponents/objectaccess/ObjectAccess.profile.js new file mode 100644 index 000000000..8da2343e1 --- /dev/null +++ b/bizui/src/bizcomponents/objectaccess/ObjectAccess.profile.js @@ -0,0 +1,101 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './ObjectAccess.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (objectAccess,targetComponent) =>{ + const userContext = null + return ( + +{objectAccess.id} +{objectAccess.name} +{objectAccess.objectType} +{objectAccess.list1} +{objectAccess.list2} +{objectAccess.list3} +{objectAccess.list4} +{objectAccess.list5} +{objectAccess.list6} +{objectAccess.list7} +{objectAccess.list8} +{objectAccess.list9} + + + ) +} + + + +class ObjectAccessProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const objectAccess = this.props.objectAccess; + const { id,displayName, } = objectAccess + + const cardsData = {cardsName:"对象访问",cardsFor: "objectAccess",cardsSource: objectAccess, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + objectAccess: state._objectAccess, +}))(Form.create()(ObjectAccessProfile)) + diff --git a/bizui/src/bizcomponents/objectaccess/ObjectAccess.profile.less b/bizui/src/bizcomponents/objectaccess/ObjectAccess.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/objectaccess/ObjectAccess.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/objectaccess/ObjectAccess.search.js b/bizui/src/bizcomponents/objectaccess/ObjectAccess.search.js index da58e2f74..c406c40e4 100644 --- a/bizui/src/bizcomponents/objectaccess/ObjectAccess.search.js +++ b/bizui/src/bizcomponents/objectaccess/ObjectAccess.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/objectaccess/ObjectAccess.searchform.js b/bizui/src/bizcomponents/objectaccess/ObjectAccess.searchform.js index a537aed0a..4f7e48897 100644 --- a/bizui/src/bizcomponents/objectaccess/ObjectAccess.searchform.js +++ b/bizui/src/bizcomponents/objectaccess/ObjectAccess.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`objectAccessList.searchField`] = fieldName - value[`objectAccessList.searchVerb`] = searchVerb - value[`objectAccessList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,21 +127,22 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'objectType')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'list1')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'list2')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'list3')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'list4')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'list5')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'list6')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'list7')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'list8')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'list9')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'app')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'objectType')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'list1')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'list2')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'list3')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'list4')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'list5')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'list6')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'list7')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'list8')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'list9')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'app')) console.log("the final parameter", paramList) @@ -157,11 +158,12 @@ componentDidMount() { } - params['objectAccessList'] = 1 - params['objectAccessList.orderBy.0'] = "id" - params['objectAccessList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -216,8 +218,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -367,8 +369,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/objectaccess/ObjectAccess.table.js b/bizui/src/bizcomponents/objectaccess/ObjectAccess.table.js index 5fc8569db..8ab97283a 100644 --- a/bizui/src/bizcomponents/objectaccess/ObjectAccess.table.js +++ b/bizui/src/bizcomponents/objectaccess/ObjectAccess.table.js @@ -40,24 +40,53 @@ class ObjectAccessTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = ObjectAccessBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class ObjectAccessTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class ObjectAccessTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/objectaccess/ObjectAccess.updateform.js b/bizui/src/bizcomponents/objectaccess/ObjectAccess.updateform.js index 759feb04e..5d66ff774 100644 --- a/bizui/src/bizcomponents/objectaccess/ObjectAccess.updateform.js +++ b/bizui/src/bizcomponents/objectaccess/ObjectAccess.updateform.js @@ -261,7 +261,7 @@ class ObjectAccessUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class ObjectAccessUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -285,7 +285,7 @@ class ObjectAccessUpdateForm extends Component { initialValue: selectedRow.objectType, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -297,7 +297,7 @@ class ObjectAccessUpdateForm extends Component { initialValue: selectedRow.list1, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -309,7 +309,7 @@ class ObjectAccessUpdateForm extends Component { initialValue: selectedRow.list2, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -321,7 +321,7 @@ class ObjectAccessUpdateForm extends Component { initialValue: selectedRow.list3, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -333,7 +333,7 @@ class ObjectAccessUpdateForm extends Component { initialValue: selectedRow.list4, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -345,7 +345,7 @@ class ObjectAccessUpdateForm extends Component { initialValue: selectedRow.list5, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -357,7 +357,7 @@ class ObjectAccessUpdateForm extends Component { initialValue: selectedRow.list6, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -369,7 +369,7 @@ class ObjectAccessUpdateForm extends Component { initialValue: selectedRow.list7, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -381,7 +381,7 @@ class ObjectAccessUpdateForm extends Component { initialValue: selectedRow.list8, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -393,7 +393,7 @@ class ObjectAccessUpdateForm extends Component { initialValue: selectedRow.list9, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/occupationtype/OccupationType.app.js b/bizui/src/bizcomponents/occupationtype/OccupationType.app.js index fc85a4d24..8abb20a7d 100644 --- a/bizui/src/bizcomponents/occupationtype/OccupationType.app.js +++ b/bizui/src/bizcomponents/occupationtype/OccupationType.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class OccupationTypeBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class OccupationTypeBizApp extends React.PureComponent { buildRouters = () =>{ const {OccupationTypeDashboard} = GlobalComponents - const {OccupationTypePreference} = GlobalComponents + const {OccupationTypePermission} = GlobalComponents + const {OccupationTypeProfile} = GlobalComponents const routers=[ {path:"/occupationType/:id/dashboard", component: OccupationTypeDashboard}, - {path:"/occupationType/:id/preference", component: OccupationTypePreference}, + {path:"/occupationType/:id/profile", component: OccupationTypeProfile}, + {path:"/occupationType/:id/permission", component: OccupationTypePermission}, diff --git a/bizui/src/bizcomponents/occupationtype/OccupationType.associateform.js b/bizui/src/bizcomponents/occupationtype/OccupationType.associateform.js index b74dde8ac..aa1e0c69e 100644 --- a/bizui/src/bizcomponents/occupationtype/OccupationType.associateform.js +++ b/bizui/src/bizcomponents/occupationtype/OccupationType.associateform.js @@ -141,7 +141,7 @@ class OccupationTypeAssociateForm extends Component { {getFieldDecorator('code', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -151,7 +151,7 @@ class OccupationTypeAssociateForm extends Component { {getFieldDecorator('description', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -161,7 +161,7 @@ class OccupationTypeAssociateForm extends Component { {getFieldDecorator('detailDescription', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/occupationtype/OccupationType.associateform.less b/bizui/src/bizcomponents/occupationtype/OccupationType.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/occupationtype/OccupationType.associateform.less +++ b/bizui/src/bizcomponents/occupationtype/OccupationType.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/occupationtype/OccupationType.base.js b/bizui/src/bizcomponents/occupationtype/OccupationType.base.js index d59578e94..b993114fb 100644 --- a/bizui/src/bizcomponents/occupationtype/OccupationType.base.js +++ b/bizui/src/bizcomponents/occupationtype/OccupationType.base.js @@ -1,102 +1,82 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"职位类型", menuFor: "occupationType", subItems: [ - {name: 'employeeList', displayName:'员工', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'employeeList', displayName:'员工', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + code: '代码', + company: '公司', + description: '描述', + detailDescription: '详细描述', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'occupationType') }, - { title: '代码', debugtype: 'string', dataIndex: 'code', width: '10',render: (text, record)=>renderTextCell(text,record) }, - { title: '公司', dataIndex: 'company', render: (text, record) => renderReferenceCell(text, record)}, - { title: '描述', debugtype: 'string', dataIndex: 'description', width: '11',render: (text, record)=>renderTextCell(text,record) }, - { title: '详细描述', debugtype: 'string', dataIndex: 'detailDescription', width: '65',render: (text, record)=>renderTextCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'occupationType') , sorter: true }, + { title: fieldLabels.code, debugtype: 'string', dataIndex: 'code', width: '10',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.company, dataIndex: 'company', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.description, debugtype: 'string', dataIndex: 'description', width: '11',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.detailDescription, debugtype: 'string', dataIndex: 'detailDescription', width: '65',render: (text, record)=>renderTextCell(text,record)}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({occupationType,targetComponent})=>{ -const fieldLabels = { - id: '序号', - code: '代码', - company: '公司', - description: '描述', - detailDescription: '详细描述', + + + const {OccupationTypeService} = GlobalComponents + // const userContext = null + return ( + +{occupationType.id} +{occupationType.code} +{occupationType.description} +{occupationType.detailDescription} + + {buildTransferModal(occupationType,targetComponent)} + + ) } + + -const OccupationTypeBase={menuData,displayColumns,fieldLabels} +const OccupationTypeBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default OccupationTypeBase diff --git a/bizui/src/bizcomponents/occupationtype/OccupationType.createform.js b/bizui/src/bizcomponents/occupationtype/OccupationType.createform.js index 7d2ec855e..d2894f514 100644 --- a/bizui/src/bizcomponents/occupationtype/OccupationType.createform.js +++ b/bizui/src/bizcomponents/occupationtype/OccupationType.createform.js @@ -209,7 +209,7 @@ class OccupationTypeCreateForm extends Component { {getFieldDecorator('code', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -219,7 +219,7 @@ class OccupationTypeCreateForm extends Component { {getFieldDecorator('description', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -229,7 +229,7 @@ class OccupationTypeCreateForm extends Component { {getFieldDecorator('detailDescription', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/occupationtype/OccupationType.dashboard.js b/bizui/src/bizcomponents/occupationtype/OccupationType.dashboard.js index 643a9f374..c070d70af 100644 --- a/bizui/src/bizcomponents/occupationtype/OccupationType.dashboard.js +++ b/bizui/src/bizcomponents/occupationtype/OccupationType.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -138,6 +138,7 @@ class OccupationTypeDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -146,13 +147,17 @@ class OccupationTypeDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/occupationtype/OccupationType.model.js b/bizui/src/bizcomponents/occupationtype/OccupationType.model.js index 5c1222714..bbaae3818 100644 --- a/bizui/src/bizcomponents/occupationtype/OccupationType.model.js +++ b/bizui/src/bizcomponents/occupationtype/OccupationType.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/occupationType/${id}/list/\EmployeeList/员工+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/occupationType/${id}/list/EmployeeList/员工+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateEmployee({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/occupationType/${id}/list/\EmployeeList/员工列表`, state: newPlayload } + const location = { pathname: `/occupationType/${id}/list/EmployeeList/员工列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextEmployeeUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/occupationtype/OccupationType.permission.js b/bizui/src/bizcomponents/occupationtype/OccupationType.permission.js new file mode 100644 index 000000000..bded7feab --- /dev/null +++ b/bizui/src/bizcomponents/occupationtype/OccupationType.permission.js @@ -0,0 +1,86 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './OccupationType.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (occupationType,targetComponent) =>{ + const userContext = null + return ( + +{occupationType.id} +{occupationType.code} +{occupationType.description} +{occupationType.detailDescription} + + + ) +} + + +const renderPermissionSetting = occupationType => { + const {OccupationTypeBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class OccupationTypePermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const occupationType = this.props.occupationType; + const { id,displayName, employeeCount } = occupationType + const cardsData = {cardsName:"职位类型",cardsFor: "occupationType",cardsSource: occupationType, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + occupationType: state._occupationType, +}))(Form.create()(OccupationTypePermission)) + diff --git a/bizui/src/bizcomponents/occupationtype/OccupationType.permission.less b/bizui/src/bizcomponents/occupationtype/OccupationType.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/occupationtype/OccupationType.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/occupationtype/OccupationType.preference.js b/bizui/src/bizcomponents/occupationtype/OccupationType.preference.js index 2b915a542..a711876e8 100644 --- a/bizui/src/bizcomponents/occupationtype/OccupationType.preference.js +++ b/bizui/src/bizcomponents/occupationtype/OccupationType.preference.js @@ -301,8 +301,12 @@ class OccupationTypePreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, employeeCount } = this.props.occupationType - const cardsData = {cardsName:"职位类型",cardsFor: "occupationType",cardsSource: this.props.occupationType, + const occupationType = this.props.occupationType; + const { id,displayName, employeeCount } = occupationType + + + + const cardsData = {cardsName:"职位类型",cardsFor: "occupationType",cardsSource: occupationType, subItems: [ ], diff --git a/bizui/src/bizcomponents/occupationtype/OccupationType.profile.js b/bizui/src/bizcomponents/occupationtype/OccupationType.profile.js new file mode 100644 index 000000000..de5f8b905 --- /dev/null +++ b/bizui/src/bizcomponents/occupationtype/OccupationType.profile.js @@ -0,0 +1,93 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './OccupationType.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (occupationType,targetComponent) =>{ + const userContext = null + return ( + +{occupationType.id} +{occupationType.code} +{occupationType.description} +{occupationType.detailDescription} + + + ) +} + + + +class OccupationTypeProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const occupationType = this.props.occupationType; + const { id,displayName, employeeCount } = occupationType + + const cardsData = {cardsName:"职位类型",cardsFor: "occupationType",cardsSource: occupationType, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + occupationType: state._occupationType, +}))(Form.create()(OccupationTypeProfile)) + diff --git a/bizui/src/bizcomponents/occupationtype/OccupationType.profile.less b/bizui/src/bizcomponents/occupationtype/OccupationType.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/occupationtype/OccupationType.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/occupationtype/OccupationType.search.js b/bizui/src/bizcomponents/occupationtype/OccupationType.search.js index 01eab6ed2..b63271903 100644 --- a/bizui/src/bizcomponents/occupationtype/OccupationType.search.js +++ b/bizui/src/bizcomponents/occupationtype/OccupationType.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/occupationtype/OccupationType.searchform.js b/bizui/src/bizcomponents/occupationtype/OccupationType.searchform.js index 0bda5c73c..58b6a55a8 100644 --- a/bizui/src/bizcomponents/occupationtype/OccupationType.searchform.js +++ b/bizui/src/bizcomponents/occupationtype/OccupationType.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`occupationTypeList.searchField`] = fieldName - value[`occupationTypeList.searchVerb`] = searchVerb - value[`occupationTypeList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,13 +127,14 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'code')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'company')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'description')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'detailDescription')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'code')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'company')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'description')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'detailDescription')) console.log("the final parameter", paramList) @@ -149,11 +150,12 @@ componentDidMount() { } - params['occupationTypeList'] = 1 - params['occupationTypeList.orderBy.0'] = "id" - params['occupationTypeList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -208,8 +210,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -295,8 +297,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/occupationtype/OccupationType.table.js b/bizui/src/bizcomponents/occupationtype/OccupationType.table.js index ab3ed84ac..03e75b038 100644 --- a/bizui/src/bizcomponents/occupationtype/OccupationType.table.js +++ b/bizui/src/bizcomponents/occupationtype/OccupationType.table.js @@ -40,24 +40,53 @@ class OccupationTypeTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = OccupationTypeBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class OccupationTypeTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class OccupationTypeTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/occupationtype/OccupationType.updateform.js b/bizui/src/bizcomponents/occupationtype/OccupationType.updateform.js index 22cbe4fc5..7e8aa5019 100644 --- a/bizui/src/bizcomponents/occupationtype/OccupationType.updateform.js +++ b/bizui/src/bizcomponents/occupationtype/OccupationType.updateform.js @@ -261,7 +261,7 @@ class OccupationTypeUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class OccupationTypeUpdateForm extends Component { initialValue: selectedRow.code, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -285,7 +285,7 @@ class OccupationTypeUpdateForm extends Component { initialValue: selectedRow.description, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -297,7 +297,7 @@ class OccupationTypeUpdateForm extends Component { initialValue: selectedRow.detailDescription, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.app.js b/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.app.js index 8d1f06d43..9d8e1741c 100644 --- a/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.app.js +++ b/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class OfferAcceptanceBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class OfferAcceptanceBizApp extends React.PureComponent { buildRouters = () =>{ const {OfferAcceptanceDashboard} = GlobalComponents - const {OfferAcceptancePreference} = GlobalComponents + const {OfferAcceptancePermission} = GlobalComponents + const {OfferAcceptanceProfile} = GlobalComponents const routers=[ {path:"/offerAcceptance/:id/dashboard", component: OfferAcceptanceDashboard}, - {path:"/offerAcceptance/:id/preference", component: OfferAcceptancePreference}, + {path:"/offerAcceptance/:id/profile", component: OfferAcceptanceProfile}, + {path:"/offerAcceptance/:id/permission", component: OfferAcceptancePermission}, diff --git a/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.associateform.js b/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.associateform.js index f4a2088f5..74eab04bd 100644 --- a/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.associateform.js +++ b/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { who: '申请者', - acceptTime: '2017-10-09', + acceptTime: '2017-12-04', comments: '谢谢,我一个月内上班', } */ @@ -140,7 +140,7 @@ class OfferAcceptanceAssociateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -150,7 +150,7 @@ class OfferAcceptanceAssociateForm extends Component { {getFieldDecorator('acceptTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -160,7 +160,7 @@ class OfferAcceptanceAssociateForm extends Component { {getFieldDecorator('comments', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.associateform.less b/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.associateform.less +++ b/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.base.js b/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.base.js index 9e9170d9b..159dd32d3 100644 --- a/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.base.js +++ b/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.base.js @@ -1,100 +1,80 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"接受工作要约", menuFor: "offerAcceptance", subItems: [ - {name: 'employeeList', displayName:'员工', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'employeeList', displayName:'员工', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + who: '谁', + acceptTime: '接受时间', + comments: '评论', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'offerAcceptance') }, - { title: '谁', debugtype: 'string', dataIndex: 'who', width: '7',render: (text, record)=>renderTextCell(text,record) }, - { title: '接受时间', dataIndex: 'acceptTime', render: (text, record) =>renderDateCell(text,record) }, - { title: '评论', debugtype: 'string', dataIndex: 'comments', width: '14',render: (text, record)=>renderTextCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'offerAcceptance') , sorter: true }, + { title: fieldLabels.who, debugtype: 'string', dataIndex: 'who', width: '7',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.acceptTime, dataIndex: 'acceptTime', render: (text, record) =>renderDateCell(text,record), sorter: true }, + { title: fieldLabels.comments, debugtype: 'string', dataIndex: 'comments', width: '14',render: (text, record)=>renderTextCell(text,record)}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({offerAcceptance,targetComponent})=>{ -const fieldLabels = { - id: '序号', - who: '谁', - acceptTime: '接受时间', - comments: '评论', + + + const {OfferAcceptanceService} = GlobalComponents + // const userContext = null + return ( + +{offerAcceptance.id} +{offerAcceptance.who} +{ moment(offerAcceptance.acceptTime).format('YYYY-MM-DD')} +{offerAcceptance.comments} + + {buildTransferModal(offerAcceptance,targetComponent)} + + ) } + + -const OfferAcceptanceBase={menuData,displayColumns,fieldLabels} +const OfferAcceptanceBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default OfferAcceptanceBase diff --git a/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.createform.js b/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.createform.js index fa499dfc0..97769b6f9 100644 --- a/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.createform.js +++ b/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { who: '申请者', - acceptTime: '2016-05-24', + acceptTime: '2017-12-18', comments: '谢谢,我一个月内上班', } */ @@ -208,7 +208,7 @@ class OfferAcceptanceCreateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -218,7 +218,7 @@ class OfferAcceptanceCreateForm extends Component { {getFieldDecorator('acceptTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -228,7 +228,7 @@ class OfferAcceptanceCreateForm extends Component { {getFieldDecorator('comments', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.dashboard.js b/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.dashboard.js index aee622e5d..a505e74a1 100644 --- a/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.dashboard.js +++ b/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -138,6 +138,7 @@ class OfferAcceptanceDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -146,13 +147,17 @@ class OfferAcceptanceDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.model.js b/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.model.js index 18b8102e0..005bf7d75 100644 --- a/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.model.js +++ b/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/offerAcceptance/${id}/list/\EmployeeList/员工+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/offerAcceptance/${id}/list/EmployeeList/员工+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateEmployee({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/offerAcceptance/${id}/list/\EmployeeList/员工列表`, state: newPlayload } + const location = { pathname: `/offerAcceptance/${id}/list/EmployeeList/员工列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextEmployeeUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.permission.js b/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.permission.js new file mode 100644 index 000000000..285d0e864 --- /dev/null +++ b/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.permission.js @@ -0,0 +1,86 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './OfferAcceptance.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (offerAcceptance,targetComponent) =>{ + const userContext = null + return ( + +{offerAcceptance.id} +{offerAcceptance.who} +{ moment(offerAcceptance.acceptTime).format('YYYY-MM-DD')} +{offerAcceptance.comments} + + + ) +} + + +const renderPermissionSetting = offerAcceptance => { + const {OfferAcceptanceBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class OfferAcceptancePermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const offerAcceptance = this.props.offerAcceptance; + const { id,displayName, employeeCount } = offerAcceptance + const cardsData = {cardsName:"接受工作要约",cardsFor: "offerAcceptance",cardsSource: offerAcceptance, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + offerAcceptance: state._offerAcceptance, +}))(Form.create()(OfferAcceptancePermission)) + diff --git a/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.permission.less b/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.preference.js b/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.preference.js index 1fd398ae7..9931df27a 100644 --- a/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.preference.js +++ b/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.preference.js @@ -301,8 +301,12 @@ class OfferAcceptancePreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, employeeCount } = this.props.offerAcceptance - const cardsData = {cardsName:"接受工作要约",cardsFor: "offerAcceptance",cardsSource: this.props.offerAcceptance, + const offerAcceptance = this.props.offerAcceptance; + const { id,displayName, employeeCount } = offerAcceptance + + + + const cardsData = {cardsName:"接受工作要约",cardsFor: "offerAcceptance",cardsSource: offerAcceptance, subItems: [ ], diff --git a/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.profile.js b/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.profile.js new file mode 100644 index 000000000..5e175c004 --- /dev/null +++ b/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.profile.js @@ -0,0 +1,93 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './OfferAcceptance.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (offerAcceptance,targetComponent) =>{ + const userContext = null + return ( + +{offerAcceptance.id} +{offerAcceptance.who} +{ moment(offerAcceptance.acceptTime).format('YYYY-MM-DD')} +{offerAcceptance.comments} + + + ) +} + + + +class OfferAcceptanceProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const offerAcceptance = this.props.offerAcceptance; + const { id,displayName, employeeCount } = offerAcceptance + + const cardsData = {cardsName:"接受工作要约",cardsFor: "offerAcceptance",cardsSource: offerAcceptance, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + offerAcceptance: state._offerAcceptance, +}))(Form.create()(OfferAcceptanceProfile)) + diff --git a/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.profile.less b/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.search.js b/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.search.js index 13b85af78..bebc59e1a 100644 --- a/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.search.js +++ b/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.searchform.js b/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.searchform.js index 2574f7518..d32351b19 100644 --- a/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.searchform.js +++ b/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`offerAcceptanceList.searchField`] = fieldName - value[`offerAcceptanceList.searchVerb`] = searchVerb - value[`offerAcceptanceList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,11 +127,12 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'who')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'comments')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'who')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'comments')) console.log("the final parameter", paramList) @@ -147,11 +148,12 @@ componentDidMount() { } - params['offerAcceptanceList'] = 1 - params['offerAcceptanceList.orderBy.0'] = "id" - params['offerAcceptanceList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -206,8 +208,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -270,8 +272,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.table.js b/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.table.js index 2d03e2a9e..e6c701401 100644 --- a/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.table.js +++ b/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.table.js @@ -40,24 +40,53 @@ class OfferAcceptanceTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = OfferAcceptanceBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class OfferAcceptanceTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class OfferAcceptanceTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.updateform.js b/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.updateform.js index 6e73a27a8..1d0f5bbe8 100644 --- a/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.updateform.js +++ b/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.updateform.js @@ -262,7 +262,7 @@ class OfferAcceptanceUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class OfferAcceptanceUpdateForm extends Component { initialValue: selectedRow.who, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class OfferAcceptanceUpdateForm extends Component { initialValue: selectedRow.acceptTime, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -298,7 +298,7 @@ class OfferAcceptanceUpdateForm extends Component { initialValue: selectedRow.comments, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/offerapproval/OfferApproval.app.js b/bizui/src/bizcomponents/offerapproval/OfferApproval.app.js index 8b301719f..8674a9d8c 100644 --- a/bizui/src/bizcomponents/offerapproval/OfferApproval.app.js +++ b/bizui/src/bizcomponents/offerapproval/OfferApproval.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class OfferApprovalBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class OfferApprovalBizApp extends React.PureComponent { buildRouters = () =>{ const {OfferApprovalDashboard} = GlobalComponents - const {OfferApprovalPreference} = GlobalComponents + const {OfferApprovalPermission} = GlobalComponents + const {OfferApprovalProfile} = GlobalComponents const routers=[ {path:"/offerApproval/:id/dashboard", component: OfferApprovalDashboard}, - {path:"/offerApproval/:id/preference", component: OfferApprovalPreference}, + {path:"/offerApproval/:id/profile", component: OfferApprovalProfile}, + {path:"/offerApproval/:id/permission", component: OfferApprovalPermission}, diff --git a/bizui/src/bizcomponents/offerapproval/OfferApproval.associateform.js b/bizui/src/bizcomponents/offerapproval/OfferApproval.associateform.js index 0510ebac0..c6c1414ad 100644 --- a/bizui/src/bizcomponents/offerapproval/OfferApproval.associateform.js +++ b/bizui/src/bizcomponents/offerapproval/OfferApproval.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { who: '总经理', - approveTime: '2018-02-15', + approveTime: '2016-08-04', comments: '该员工发展潜力不错,', } */ @@ -140,7 +140,7 @@ class OfferApprovalAssociateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -150,7 +150,7 @@ class OfferApprovalAssociateForm extends Component { {getFieldDecorator('approveTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -160,7 +160,7 @@ class OfferApprovalAssociateForm extends Component { {getFieldDecorator('comments', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/offerapproval/OfferApproval.associateform.less b/bizui/src/bizcomponents/offerapproval/OfferApproval.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/offerapproval/OfferApproval.associateform.less +++ b/bizui/src/bizcomponents/offerapproval/OfferApproval.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/offerapproval/OfferApproval.base.js b/bizui/src/bizcomponents/offerapproval/OfferApproval.base.js index be64d23ea..27352f381 100644 --- a/bizui/src/bizcomponents/offerapproval/OfferApproval.base.js +++ b/bizui/src/bizcomponents/offerapproval/OfferApproval.base.js @@ -1,100 +1,80 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"审批工作要约", menuFor: "offerApproval", subItems: [ - {name: 'employeeList', displayName:'员工', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'employeeList', displayName:'员工', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + who: '谁', + approveTime: '批准时间', + comments: '评论', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'offerApproval') }, - { title: '谁', debugtype: 'string', dataIndex: 'who', width: '7',render: (text, record)=>renderTextCell(text,record) }, - { title: '批准时间', dataIndex: 'approveTime', render: (text, record) =>renderDateCell(text,record) }, - { title: '评论', debugtype: 'string', dataIndex: 'comments', width: '14',render: (text, record)=>renderTextCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'offerApproval') , sorter: true }, + { title: fieldLabels.who, debugtype: 'string', dataIndex: 'who', width: '7',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.approveTime, dataIndex: 'approveTime', render: (text, record) =>renderDateCell(text,record), sorter: true }, + { title: fieldLabels.comments, debugtype: 'string', dataIndex: 'comments', width: '14',render: (text, record)=>renderTextCell(text,record)}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({offerApproval,targetComponent})=>{ -const fieldLabels = { - id: '序号', - who: '谁', - approveTime: '批准时间', - comments: '评论', + + + const {OfferApprovalService} = GlobalComponents + // const userContext = null + return ( + +{offerApproval.id} +{offerApproval.who} +{ moment(offerApproval.approveTime).format('YYYY-MM-DD')} +{offerApproval.comments} + + {buildTransferModal(offerApproval,targetComponent)} + + ) } + + -const OfferApprovalBase={menuData,displayColumns,fieldLabels} +const OfferApprovalBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default OfferApprovalBase diff --git a/bizui/src/bizcomponents/offerapproval/OfferApproval.createform.js b/bizui/src/bizcomponents/offerapproval/OfferApproval.createform.js index fe2788501..ce64aca39 100644 --- a/bizui/src/bizcomponents/offerapproval/OfferApproval.createform.js +++ b/bizui/src/bizcomponents/offerapproval/OfferApproval.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { who: '总经理', - approveTime: '2018-01-06', + approveTime: '2016-08-23', comments: '该员工发展潜力不错,', } */ @@ -208,7 +208,7 @@ class OfferApprovalCreateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -218,7 +218,7 @@ class OfferApprovalCreateForm extends Component { {getFieldDecorator('approveTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -228,7 +228,7 @@ class OfferApprovalCreateForm extends Component { {getFieldDecorator('comments', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/offerapproval/OfferApproval.dashboard.js b/bizui/src/bizcomponents/offerapproval/OfferApproval.dashboard.js index 6f541c13e..0f867b748 100644 --- a/bizui/src/bizcomponents/offerapproval/OfferApproval.dashboard.js +++ b/bizui/src/bizcomponents/offerapproval/OfferApproval.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -138,6 +138,7 @@ class OfferApprovalDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -146,13 +147,17 @@ class OfferApprovalDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/offerapproval/OfferApproval.model.js b/bizui/src/bizcomponents/offerapproval/OfferApproval.model.js index 5db34ec33..e1b8e6e61 100644 --- a/bizui/src/bizcomponents/offerapproval/OfferApproval.model.js +++ b/bizui/src/bizcomponents/offerapproval/OfferApproval.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/offerApproval/${id}/list/\EmployeeList/员工+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/offerApproval/${id}/list/EmployeeList/员工+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateEmployee({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/offerApproval/${id}/list/\EmployeeList/员工列表`, state: newPlayload } + const location = { pathname: `/offerApproval/${id}/list/EmployeeList/员工列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextEmployeeUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/offerapproval/OfferApproval.permission.js b/bizui/src/bizcomponents/offerapproval/OfferApproval.permission.js new file mode 100644 index 000000000..1cf99eab1 --- /dev/null +++ b/bizui/src/bizcomponents/offerapproval/OfferApproval.permission.js @@ -0,0 +1,86 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './OfferApproval.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (offerApproval,targetComponent) =>{ + const userContext = null + return ( + +{offerApproval.id} +{offerApproval.who} +{ moment(offerApproval.approveTime).format('YYYY-MM-DD')} +{offerApproval.comments} + + + ) +} + + +const renderPermissionSetting = offerApproval => { + const {OfferApprovalBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class OfferApprovalPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const offerApproval = this.props.offerApproval; + const { id,displayName, employeeCount } = offerApproval + const cardsData = {cardsName:"审批工作要约",cardsFor: "offerApproval",cardsSource: offerApproval, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + offerApproval: state._offerApproval, +}))(Form.create()(OfferApprovalPermission)) + diff --git a/bizui/src/bizcomponents/offerapproval/OfferApproval.permission.less b/bizui/src/bizcomponents/offerapproval/OfferApproval.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/offerapproval/OfferApproval.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/offerapproval/OfferApproval.preference.js b/bizui/src/bizcomponents/offerapproval/OfferApproval.preference.js index cf622b29c..2ec0ada36 100644 --- a/bizui/src/bizcomponents/offerapproval/OfferApproval.preference.js +++ b/bizui/src/bizcomponents/offerapproval/OfferApproval.preference.js @@ -301,8 +301,12 @@ class OfferApprovalPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, employeeCount } = this.props.offerApproval - const cardsData = {cardsName:"审批工作要约",cardsFor: "offerApproval",cardsSource: this.props.offerApproval, + const offerApproval = this.props.offerApproval; + const { id,displayName, employeeCount } = offerApproval + + + + const cardsData = {cardsName:"审批工作要约",cardsFor: "offerApproval",cardsSource: offerApproval, subItems: [ ], diff --git a/bizui/src/bizcomponents/offerapproval/OfferApproval.profile.js b/bizui/src/bizcomponents/offerapproval/OfferApproval.profile.js new file mode 100644 index 000000000..2705ba776 --- /dev/null +++ b/bizui/src/bizcomponents/offerapproval/OfferApproval.profile.js @@ -0,0 +1,93 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './OfferApproval.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (offerApproval,targetComponent) =>{ + const userContext = null + return ( + +{offerApproval.id} +{offerApproval.who} +{ moment(offerApproval.approveTime).format('YYYY-MM-DD')} +{offerApproval.comments} + + + ) +} + + + +class OfferApprovalProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const offerApproval = this.props.offerApproval; + const { id,displayName, employeeCount } = offerApproval + + const cardsData = {cardsName:"审批工作要约",cardsFor: "offerApproval",cardsSource: offerApproval, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + offerApproval: state._offerApproval, +}))(Form.create()(OfferApprovalProfile)) + diff --git a/bizui/src/bizcomponents/offerapproval/OfferApproval.profile.less b/bizui/src/bizcomponents/offerapproval/OfferApproval.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/offerapproval/OfferApproval.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/offerapproval/OfferApproval.search.js b/bizui/src/bizcomponents/offerapproval/OfferApproval.search.js index ef6be7573..651bad113 100644 --- a/bizui/src/bizcomponents/offerapproval/OfferApproval.search.js +++ b/bizui/src/bizcomponents/offerapproval/OfferApproval.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/offerapproval/OfferApproval.searchform.js b/bizui/src/bizcomponents/offerapproval/OfferApproval.searchform.js index e004a2a52..028d826bc 100644 --- a/bizui/src/bizcomponents/offerapproval/OfferApproval.searchform.js +++ b/bizui/src/bizcomponents/offerapproval/OfferApproval.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`offerApprovalList.searchField`] = fieldName - value[`offerApprovalList.searchVerb`] = searchVerb - value[`offerApprovalList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,11 +127,12 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'who')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'comments')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'who')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'comments')) console.log("the final parameter", paramList) @@ -147,11 +148,12 @@ componentDidMount() { } - params['offerApprovalList'] = 1 - params['offerApprovalList.orderBy.0'] = "id" - params['offerApprovalList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -206,8 +208,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -270,8 +272,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/offerapproval/OfferApproval.table.js b/bizui/src/bizcomponents/offerapproval/OfferApproval.table.js index 1cb3b35ab..49cc12daf 100644 --- a/bizui/src/bizcomponents/offerapproval/OfferApproval.table.js +++ b/bizui/src/bizcomponents/offerapproval/OfferApproval.table.js @@ -40,24 +40,53 @@ class OfferApprovalTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = OfferApprovalBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class OfferApprovalTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class OfferApprovalTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/offerapproval/OfferApproval.updateform.js b/bizui/src/bizcomponents/offerapproval/OfferApproval.updateform.js index 28d5d93bf..5754de065 100644 --- a/bizui/src/bizcomponents/offerapproval/OfferApproval.updateform.js +++ b/bizui/src/bizcomponents/offerapproval/OfferApproval.updateform.js @@ -262,7 +262,7 @@ class OfferApprovalUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class OfferApprovalUpdateForm extends Component { initialValue: selectedRow.who, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class OfferApprovalUpdateForm extends Component { initialValue: selectedRow.approveTime, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -298,7 +298,7 @@ class OfferApprovalUpdateForm extends Component { initialValue: selectedRow.comments, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.app.js b/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.app.js index 45601158c..9a51b476f 100644 --- a/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.app.js +++ b/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class OriginalVoucherBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -157,12 +166,14 @@ class OriginalVoucherBizApp extends React.PureComponent { buildRouters = () =>{ const {OriginalVoucherDashboard} = GlobalComponents - const {OriginalVoucherPreference} = GlobalComponents + const {OriginalVoucherPermission} = GlobalComponents + const {OriginalVoucherProfile} = GlobalComponents const routers=[ {path:"/originalVoucher/:id/dashboard", component: OriginalVoucherDashboard}, - {path:"/originalVoucher/:id/preference", component: OriginalVoucherPreference}, + {path:"/originalVoucher/:id/profile", component: OriginalVoucherProfile}, + {path:"/originalVoucher/:id/permission", component: OriginalVoucherPermission}, diff --git a/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.associateform.js b/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.associateform.js index b75b7ca2e..e99a8b10e 100644 --- a/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.associateform.js +++ b/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.associateform.js @@ -142,7 +142,7 @@ class OriginalVoucherAssociateForm extends Component { {getFieldDecorator('title', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -152,7 +152,7 @@ class OriginalVoucherAssociateForm extends Component { {getFieldDecorator('madeBy', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -162,7 +162,7 @@ class OriginalVoucherAssociateForm extends Component { {getFieldDecorator('receivedBy', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -172,7 +172,7 @@ class OriginalVoucherAssociateForm extends Component { {getFieldDecorator('voucherType', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.associateform.less b/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.associateform.less +++ b/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.base.js b/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.base.js index 052dd5598..9adcca730 100644 --- a/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.base.js +++ b/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.base.js @@ -1,10 +1,33 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"原始凭证", menuFor: "originalVoucher", subItems: [ @@ -12,85 +35,6 @@ const menuData = {menuName:"原始凭证", menuFor: "originalVoucher", ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) - -} - -const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record) }, - { title: '头衔', debugtype: 'string', dataIndex: 'title', width: '11',render: (text, record)=>renderTextCell(text,record) }, - { title: '由', debugtype: 'string', dataIndex: 'madeBy', width: '7',render: (text, record)=>renderTextCell(text,record) }, - { title: '受', debugtype: 'string', dataIndex: 'receivedBy', width: '7',render: (text, record)=>renderTextCell(text,record) }, - { title: '凭证类型', debugtype: 'string', dataIndex: 'voucherType', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: '凭证图像', dataIndex: 'voucherImage', render: (text, record) => renderImageCell(text,record,'凭证图像') }, - { title: '属于', dataIndex: 'belongsTo', render: (text, record) => renderReferenceCell(text, record)}, - { title: '创建', dataIndex: 'creation', render: (text, record) => renderReferenceCell(text, record)}, - { title: '确认', dataIndex: 'confirmation', render: (text, record) => renderReferenceCell(text, record)}, - { title: '审计', dataIndex: 'auditing', render: (text, record) => renderReferenceCell(text, record)}, - { title: '当前状态', debugtype: 'string', dataIndex: 'currentStatus', width: '13',render: (text, record)=>renderTextCell(text,record) }, - -] - const fieldLabels = { id: '序号', title: '头衔', @@ -106,8 +50,52 @@ const fieldLabels = { } +const displayColumns = [ + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.title, debugtype: 'string', dataIndex: 'title', width: '11',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.madeBy, debugtype: 'string', dataIndex: 'madeBy', width: '7',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.receivedBy, debugtype: 'string', dataIndex: 'receivedBy', width: '7',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.voucherType, debugtype: 'string', dataIndex: 'voucherType', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.voucherImage, dataIndex: 'voucherImage', render: (text, record) => renderImageCell(text,record,'凭证图像') }, + { title: fieldLabels.belongsTo, dataIndex: 'belongsTo', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.creation, dataIndex: 'creation', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.confirmation, dataIndex: 'confirmation', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.auditing, dataIndex: 'auditing', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.currentStatus, debugtype: 'string', dataIndex: 'currentStatus', width: '13',render: (text, record)=>renderTextCell(text,record)}, + +] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({originalVoucher,targetComponent})=>{ + + + + const {OriginalVoucherService} = GlobalComponents + // const userContext = null + return ( + +{originalVoucher.id} +{originalVoucher.title} +{originalVoucher.madeBy} +{originalVoucher.receivedBy} +{originalVoucher.voucherType} +{originalVoucher.belongsTo==null?appLocaleName(userContext,"NotAssigned"):`${originalVoucher.belongsTo.displayName}(${originalVoucher.belongsTo.id})`} + + showTransferModel(targetComponent,"属于","accountingDocument",OriginalVoucherService.requestCandidateBelongsTo, + OriginalVoucherService.transferToAnotherBelongsTo,"anotherBelongsToId",originalVoucher.belongsTo?originalVoucher.belongsTo.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{originalVoucher.currentStatus} + + {buildTransferModal(originalVoucher,targetComponent)} + + ) + +} + + + -const OriginalVoucherBase={menuData,displayColumns,fieldLabels} +const OriginalVoucherBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default OriginalVoucherBase diff --git a/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.createform.js b/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.createform.js index ef4ba4ab1..53e71db78 100644 --- a/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.createform.js +++ b/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.createform.js @@ -211,7 +211,7 @@ class OriginalVoucherCreateForm extends Component { {getFieldDecorator('title', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -221,7 +221,7 @@ class OriginalVoucherCreateForm extends Component { {getFieldDecorator('madeBy', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -231,7 +231,7 @@ class OriginalVoucherCreateForm extends Component { {getFieldDecorator('receivedBy', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -241,7 +241,7 @@ class OriginalVoucherCreateForm extends Component { {getFieldDecorator('voucherType', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.dashboard.js b/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.dashboard.js index 0f1f03833..7f8b31301 100644 --- a/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.dashboard.js +++ b/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -146,6 +146,7 @@ class OriginalVoucherDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -154,13 +155,17 @@ class OriginalVoucherDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.model.js b/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.model.js index acc4728f9..51cd4daaf 100644 --- a/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.model.js +++ b/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' diff --git a/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.permission.js b/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.permission.js new file mode 100644 index 000000000..cc736acff --- /dev/null +++ b/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.permission.js @@ -0,0 +1,88 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './OriginalVoucher.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (originalVoucher,targetComponent) =>{ + const userContext = null + return ( + +{originalVoucher.id} +{originalVoucher.title} +{originalVoucher.madeBy} +{originalVoucher.receivedBy} +{originalVoucher.voucherType} +{originalVoucher.currentStatus} + + + ) +} + + +const renderPermissionSetting = originalVoucher => { + const {OriginalVoucherBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class OriginalVoucherPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const originalVoucher = this.props.originalVoucher; + const { id,displayName, } = originalVoucher + const cardsData = {cardsName:"原始凭证",cardsFor: "originalVoucher",cardsSource: originalVoucher, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + originalVoucher: state._originalVoucher, +}))(Form.create()(OriginalVoucherPermission)) + diff --git a/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.permission.less b/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.preference.js b/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.preference.js index 18cde6a5c..be2f5c9b8 100644 --- a/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.preference.js +++ b/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.preference.js @@ -310,8 +310,12 @@ class OriginalVoucherPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, } = this.props.originalVoucher - const cardsData = {cardsName:"原始凭证",cardsFor: "originalVoucher",cardsSource: this.props.originalVoucher, + const originalVoucher = this.props.originalVoucher; + const { id,displayName, } = originalVoucher + + + + const cardsData = {cardsName:"原始凭证",cardsFor: "originalVoucher",cardsSource: originalVoucher, subItems: [ ], diff --git a/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.profile.js b/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.profile.js new file mode 100644 index 000000000..07c196a33 --- /dev/null +++ b/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.profile.js @@ -0,0 +1,95 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './OriginalVoucher.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (originalVoucher,targetComponent) =>{ + const userContext = null + return ( + +{originalVoucher.id} +{originalVoucher.title} +{originalVoucher.madeBy} +{originalVoucher.receivedBy} +{originalVoucher.voucherType} +{originalVoucher.currentStatus} + + + ) +} + + + +class OriginalVoucherProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const originalVoucher = this.props.originalVoucher; + const { id,displayName, } = originalVoucher + + const cardsData = {cardsName:"原始凭证",cardsFor: "originalVoucher",cardsSource: originalVoucher, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + originalVoucher: state._originalVoucher, +}))(Form.create()(OriginalVoucherProfile)) + diff --git a/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.profile.less b/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.search.js b/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.search.js index 5b5c5ada8..d4a479207 100644 --- a/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.search.js +++ b/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.searchform.js b/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.searchform.js index 85870c328..a20788b7e 100644 --- a/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.searchform.js +++ b/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`originalVoucherList.searchField`] = fieldName - value[`originalVoucherList.searchVerb`] = searchVerb - value[`originalVoucherList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,15 +127,16 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'title')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'madeBy')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'receivedBy')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'voucherType')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'belongsTo')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'currentStatus')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'title')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'madeBy')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'receivedBy')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'voucherType')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'belongsTo')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'currentStatus')) console.log("the final parameter", paramList) @@ -151,11 +152,12 @@ componentDidMount() { } - params['originalVoucherList'] = 1 - params['originalVoucherList.orderBy.0'] = "id" - params['originalVoucherList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -210,8 +212,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -313,8 +315,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.table.js b/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.table.js index e452ce720..b6f64798d 100644 --- a/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.table.js +++ b/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.table.js @@ -40,24 +40,53 @@ class OriginalVoucherTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = OriginalVoucherBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class OriginalVoucherTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class OriginalVoucherTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.updateform.js b/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.updateform.js index 4cc7e77e2..624d89a52 100644 --- a/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.updateform.js +++ b/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.updateform.js @@ -262,7 +262,7 @@ class OriginalVoucherUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class OriginalVoucherUpdateForm extends Component { initialValue: selectedRow.title, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class OriginalVoucherUpdateForm extends Component { initialValue: selectedRow.madeBy, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -298,7 +298,7 @@ class OriginalVoucherUpdateForm extends Component { initialValue: selectedRow.receivedBy, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -310,7 +310,7 @@ class OriginalVoucherUpdateForm extends Component { initialValue: selectedRow.voucherType, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.app.js b/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.app.js index 59e5127de..a8c5983ad 100644 --- a/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.app.js +++ b/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class OriginalVoucherAuditingBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class OriginalVoucherAuditingBizApp extends React.PureComponent { buildRouters = () =>{ const {OriginalVoucherAuditingDashboard} = GlobalComponents - const {OriginalVoucherAuditingPreference} = GlobalComponents + const {OriginalVoucherAuditingPermission} = GlobalComponents + const {OriginalVoucherAuditingProfile} = GlobalComponents const routers=[ {path:"/originalVoucherAuditing/:id/dashboard", component: OriginalVoucherAuditingDashboard}, - {path:"/originalVoucherAuditing/:id/preference", component: OriginalVoucherAuditingPreference}, + {path:"/originalVoucherAuditing/:id/profile", component: OriginalVoucherAuditingProfile}, + {path:"/originalVoucherAuditing/:id/permission", component: OriginalVoucherAuditingPermission}, diff --git a/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.associateform.js b/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.associateform.js index 649e4ed33..fa30140a8 100644 --- a/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.associateform.js +++ b/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.associateform.js @@ -20,7 +20,7 @@ const testValues = {}; const testValues = { who: '财务会计', comments: '审核通过,要都审核过了才通过哦', - makeDate: '2018-03-12', + makeDate: '2019-02-14', } */ @@ -140,7 +140,7 @@ class OriginalVoucherAuditingAssociateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -150,7 +150,7 @@ class OriginalVoucherAuditingAssociateForm extends Component { {getFieldDecorator('comments', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -160,7 +160,7 @@ class OriginalVoucherAuditingAssociateForm extends Component { {getFieldDecorator('makeDate', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.associateform.less b/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.associateform.less +++ b/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.base.js b/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.base.js index 63034edad..1e97bcc07 100644 --- a/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.base.js +++ b/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.base.js @@ -1,100 +1,80 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"原始凭证的审核", menuFor: "originalVoucherAuditing", subItems: [ - {name: 'originalVoucherList', displayName:'原始凭证', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'originalVoucherList', displayName:'原始凭证', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + who: '谁', + comments: '评论', + makeDate: '制造日期', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'originalVoucherAuditing') }, - { title: '谁', debugtype: 'string', dataIndex: 'who', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: '评论', debugtype: 'string', dataIndex: 'comments', width: '19',render: (text, record)=>renderTextCell(text,record) }, - { title: '制造日期', dataIndex: 'makeDate', render: (text, record) =>renderDateCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'originalVoucherAuditing') , sorter: true }, + { title: fieldLabels.who, debugtype: 'string', dataIndex: 'who', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.comments, debugtype: 'string', dataIndex: 'comments', width: '19',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.makeDate, dataIndex: 'makeDate', render: (text, record) =>renderDateCell(text,record), sorter: true }, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({originalVoucherAuditing,targetComponent})=>{ -const fieldLabels = { - id: '序号', - who: '谁', - comments: '评论', - makeDate: '制造日期', + + + const {OriginalVoucherAuditingService} = GlobalComponents + // const userContext = null + return ( + +{originalVoucherAuditing.id} +{originalVoucherAuditing.who} +{originalVoucherAuditing.comments} +{ moment(originalVoucherAuditing.makeDate).format('YYYY-MM-DD')} + + {buildTransferModal(originalVoucherAuditing,targetComponent)} + + ) } + + -const OriginalVoucherAuditingBase={menuData,displayColumns,fieldLabels} +const OriginalVoucherAuditingBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default OriginalVoucherAuditingBase diff --git a/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.createform.js b/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.createform.js index 91dce9e9a..6bee0a152 100644 --- a/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.createform.js +++ b/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.createform.js @@ -19,7 +19,7 @@ const testValues = {}; const testValues = { who: '财务会计', comments: '审核通过,要都审核过了才通过哦', - makeDate: '2017-03-18', + makeDate: '2017-06-10', } */ @@ -208,7 +208,7 @@ class OriginalVoucherAuditingCreateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -218,7 +218,7 @@ class OriginalVoucherAuditingCreateForm extends Component { {getFieldDecorator('comments', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -228,7 +228,7 @@ class OriginalVoucherAuditingCreateForm extends Component { {getFieldDecorator('makeDate', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.dashboard.js b/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.dashboard.js index b2fe74552..be6109501 100644 --- a/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.dashboard.js +++ b/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -138,6 +138,7 @@ class OriginalVoucherAuditingDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -146,13 +147,17 @@ class OriginalVoucherAuditingDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.model.js b/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.model.js index cea59170d..8a4bb66da 100644 --- a/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.model.js +++ b/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/originalVoucherAuditing/${id}/list/\OriginalVoucherList/原始凭证+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/originalVoucherAuditing/${id}/list/OriginalVoucherList/原始凭证+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateOriginalVoucher({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/originalVoucherAuditing/${id}/list/\OriginalVoucherList/原始凭证列表`, state: newPlayload } + const location = { pathname: `/originalVoucherAuditing/${id}/list/OriginalVoucherList/原始凭证列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextOriginalVoucherUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.permission.js b/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.permission.js new file mode 100644 index 000000000..fb926935b --- /dev/null +++ b/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.permission.js @@ -0,0 +1,86 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './OriginalVoucherAuditing.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (originalVoucherAuditing,targetComponent) =>{ + const userContext = null + return ( + +{originalVoucherAuditing.id} +{originalVoucherAuditing.who} +{originalVoucherAuditing.comments} +{ moment(originalVoucherAuditing.makeDate).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = originalVoucherAuditing => { + const {OriginalVoucherAuditingBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class OriginalVoucherAuditingPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const originalVoucherAuditing = this.props.originalVoucherAuditing; + const { id,displayName, originalVoucherCount } = originalVoucherAuditing + const cardsData = {cardsName:"原始凭证的审核",cardsFor: "originalVoucherAuditing",cardsSource: originalVoucherAuditing, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + originalVoucherAuditing: state._originalVoucherAuditing, +}))(Form.create()(OriginalVoucherAuditingPermission)) + diff --git a/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.permission.less b/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.preference.js b/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.preference.js index d361cdcb4..40575bada 100644 --- a/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.preference.js +++ b/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.preference.js @@ -301,8 +301,12 @@ class OriginalVoucherAuditingPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, originalVoucherCount } = this.props.originalVoucherAuditing - const cardsData = {cardsName:"原始凭证的审核",cardsFor: "originalVoucherAuditing",cardsSource: this.props.originalVoucherAuditing, + const originalVoucherAuditing = this.props.originalVoucherAuditing; + const { id,displayName, originalVoucherCount } = originalVoucherAuditing + + + + const cardsData = {cardsName:"原始凭证的审核",cardsFor: "originalVoucherAuditing",cardsSource: originalVoucherAuditing, subItems: [ ], diff --git a/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.profile.js b/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.profile.js new file mode 100644 index 000000000..599aec566 --- /dev/null +++ b/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.profile.js @@ -0,0 +1,93 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './OriginalVoucherAuditing.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (originalVoucherAuditing,targetComponent) =>{ + const userContext = null + return ( + +{originalVoucherAuditing.id} +{originalVoucherAuditing.who} +{originalVoucherAuditing.comments} +{ moment(originalVoucherAuditing.makeDate).format('YYYY-MM-DD')} + + + ) +} + + + +class OriginalVoucherAuditingProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const originalVoucherAuditing = this.props.originalVoucherAuditing; + const { id,displayName, originalVoucherCount } = originalVoucherAuditing + + const cardsData = {cardsName:"原始凭证的审核",cardsFor: "originalVoucherAuditing",cardsSource: originalVoucherAuditing, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + originalVoucherAuditing: state._originalVoucherAuditing, +}))(Form.create()(OriginalVoucherAuditingProfile)) + diff --git a/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.profile.less b/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.search.js b/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.search.js index 3995aa498..5b1c35aea 100644 --- a/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.search.js +++ b/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.searchform.js b/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.searchform.js index 0ba59e0db..3e72826ab 100644 --- a/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.searchform.js +++ b/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`originalVoucherAuditingList.searchField`] = fieldName - value[`originalVoucherAuditingList.searchVerb`] = searchVerb - value[`originalVoucherAuditingList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,11 +127,12 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'who')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'comments')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'who')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'comments')) console.log("the final parameter", paramList) @@ -147,11 +148,12 @@ componentDidMount() { } - params['originalVoucherAuditingList'] = 1 - params['originalVoucherAuditingList.orderBy.0'] = "id" - params['originalVoucherAuditingList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -206,8 +208,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -270,8 +272,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.table.js b/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.table.js index 85645cd20..71d1b7bec 100644 --- a/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.table.js +++ b/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.table.js @@ -40,24 +40,53 @@ class OriginalVoucherAuditingTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = OriginalVoucherAuditingBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class OriginalVoucherAuditingTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class OriginalVoucherAuditingTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.updateform.js b/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.updateform.js index c0d383b04..495065c0c 100644 --- a/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.updateform.js +++ b/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.updateform.js @@ -262,7 +262,7 @@ class OriginalVoucherAuditingUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class OriginalVoucherAuditingUpdateForm extends Component { initialValue: selectedRow.who, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class OriginalVoucherAuditingUpdateForm extends Component { initialValue: selectedRow.comments, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -298,7 +298,7 @@ class OriginalVoucherAuditingUpdateForm extends Component { initialValue: selectedRow.makeDate, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.app.js b/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.app.js index a443f7474..3f8cac7e6 100644 --- a/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.app.js +++ b/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class OriginalVoucherConfirmationBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class OriginalVoucherConfirmationBizApp extends React.PureComponent { buildRouters = () =>{ const {OriginalVoucherConfirmationDashboard} = GlobalComponents - const {OriginalVoucherConfirmationPreference} = GlobalComponents + const {OriginalVoucherConfirmationPermission} = GlobalComponents + const {OriginalVoucherConfirmationProfile} = GlobalComponents const routers=[ {path:"/originalVoucherConfirmation/:id/dashboard", component: OriginalVoucherConfirmationDashboard}, - {path:"/originalVoucherConfirmation/:id/preference", component: OriginalVoucherConfirmationPreference}, + {path:"/originalVoucherConfirmation/:id/profile", component: OriginalVoucherConfirmationProfile}, + {path:"/originalVoucherConfirmation/:id/permission", component: OriginalVoucherConfirmationPermission}, diff --git a/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.associateform.js b/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.associateform.js index 2222d10ec..eb28cfcfd 100644 --- a/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.associateform.js +++ b/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.associateform.js @@ -20,7 +20,7 @@ const testValues = {}; const testValues = { who: '财务会计', comments: '确认通过', - makeDate: '2016-10-24', + makeDate: '2019-04-28', } */ @@ -140,7 +140,7 @@ class OriginalVoucherConfirmationAssociateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -150,7 +150,7 @@ class OriginalVoucherConfirmationAssociateForm extends Component { {getFieldDecorator('comments', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -160,7 +160,7 @@ class OriginalVoucherConfirmationAssociateForm extends Component { {getFieldDecorator('makeDate', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.associateform.less b/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.associateform.less +++ b/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.base.js b/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.base.js index 1b78c1592..e31dec9b1 100644 --- a/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.base.js +++ b/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.base.js @@ -1,100 +1,80 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"原始凭证的确认", menuFor: "originalVoucherConfirmation", subItems: [ - {name: 'originalVoucherList', displayName:'原始凭证', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'originalVoucherList', displayName:'原始凭证', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + who: '谁', + comments: '评论', + makeDate: '制造日期', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'originalVoucherConfirmation') }, - { title: '谁', debugtype: 'string', dataIndex: 'who', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: '评论', debugtype: 'string', dataIndex: 'comments', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: '制造日期', dataIndex: 'makeDate', render: (text, record) =>renderDateCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'originalVoucherConfirmation') , sorter: true }, + { title: fieldLabels.who, debugtype: 'string', dataIndex: 'who', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.comments, debugtype: 'string', dataIndex: 'comments', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.makeDate, dataIndex: 'makeDate', render: (text, record) =>renderDateCell(text,record), sorter: true }, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({originalVoucherConfirmation,targetComponent})=>{ -const fieldLabels = { - id: '序号', - who: '谁', - comments: '评论', - makeDate: '制造日期', + + + const {OriginalVoucherConfirmationService} = GlobalComponents + // const userContext = null + return ( + +{originalVoucherConfirmation.id} +{originalVoucherConfirmation.who} +{originalVoucherConfirmation.comments} +{ moment(originalVoucherConfirmation.makeDate).format('YYYY-MM-DD')} + + {buildTransferModal(originalVoucherConfirmation,targetComponent)} + + ) } + + -const OriginalVoucherConfirmationBase={menuData,displayColumns,fieldLabels} +const OriginalVoucherConfirmationBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default OriginalVoucherConfirmationBase diff --git a/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.createform.js b/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.createform.js index b0d8f549b..5b6b3fd16 100644 --- a/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.createform.js +++ b/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.createform.js @@ -19,7 +19,7 @@ const testValues = {}; const testValues = { who: '财务会计', comments: '确认通过', - makeDate: '2018-06-04', + makeDate: '2017-04-27', } */ @@ -208,7 +208,7 @@ class OriginalVoucherConfirmationCreateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -218,7 +218,7 @@ class OriginalVoucherConfirmationCreateForm extends Component { {getFieldDecorator('comments', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -228,7 +228,7 @@ class OriginalVoucherConfirmationCreateForm extends Component { {getFieldDecorator('makeDate', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.dashboard.js b/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.dashboard.js index 7f2fe17c7..bb7e4b494 100644 --- a/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.dashboard.js +++ b/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -138,6 +138,7 @@ class OriginalVoucherConfirmationDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -146,13 +147,17 @@ class OriginalVoucherConfirmationDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.model.js b/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.model.js index 41b572690..40b037168 100644 --- a/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.model.js +++ b/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/originalVoucherConfirmation/${id}/list/\OriginalVoucherList/原始凭证+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/originalVoucherConfirmation/${id}/list/OriginalVoucherList/原始凭证+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateOriginalVoucher({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/originalVoucherConfirmation/${id}/list/\OriginalVoucherList/原始凭证列表`, state: newPlayload } + const location = { pathname: `/originalVoucherConfirmation/${id}/list/OriginalVoucherList/原始凭证列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextOriginalVoucherUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.permission.js b/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.permission.js new file mode 100644 index 000000000..8016fe155 --- /dev/null +++ b/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.permission.js @@ -0,0 +1,86 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './OriginalVoucherConfirmation.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (originalVoucherConfirmation,targetComponent) =>{ + const userContext = null + return ( + +{originalVoucherConfirmation.id} +{originalVoucherConfirmation.who} +{originalVoucherConfirmation.comments} +{ moment(originalVoucherConfirmation.makeDate).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = originalVoucherConfirmation => { + const {OriginalVoucherConfirmationBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class OriginalVoucherConfirmationPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const originalVoucherConfirmation = this.props.originalVoucherConfirmation; + const { id,displayName, originalVoucherCount } = originalVoucherConfirmation + const cardsData = {cardsName:"原始凭证的确认",cardsFor: "originalVoucherConfirmation",cardsSource: originalVoucherConfirmation, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + originalVoucherConfirmation: state._originalVoucherConfirmation, +}))(Form.create()(OriginalVoucherConfirmationPermission)) + diff --git a/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.permission.less b/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.preference.js b/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.preference.js index c625c5415..39a39f92a 100644 --- a/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.preference.js +++ b/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.preference.js @@ -301,8 +301,12 @@ class OriginalVoucherConfirmationPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, originalVoucherCount } = this.props.originalVoucherConfirmation - const cardsData = {cardsName:"原始凭证的确认",cardsFor: "originalVoucherConfirmation",cardsSource: this.props.originalVoucherConfirmation, + const originalVoucherConfirmation = this.props.originalVoucherConfirmation; + const { id,displayName, originalVoucherCount } = originalVoucherConfirmation + + + + const cardsData = {cardsName:"原始凭证的确认",cardsFor: "originalVoucherConfirmation",cardsSource: originalVoucherConfirmation, subItems: [ ], diff --git a/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.profile.js b/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.profile.js new file mode 100644 index 000000000..855413d5a --- /dev/null +++ b/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.profile.js @@ -0,0 +1,93 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './OriginalVoucherConfirmation.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (originalVoucherConfirmation,targetComponent) =>{ + const userContext = null + return ( + +{originalVoucherConfirmation.id} +{originalVoucherConfirmation.who} +{originalVoucherConfirmation.comments} +{ moment(originalVoucherConfirmation.makeDate).format('YYYY-MM-DD')} + + + ) +} + + + +class OriginalVoucherConfirmationProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const originalVoucherConfirmation = this.props.originalVoucherConfirmation; + const { id,displayName, originalVoucherCount } = originalVoucherConfirmation + + const cardsData = {cardsName:"原始凭证的确认",cardsFor: "originalVoucherConfirmation",cardsSource: originalVoucherConfirmation, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + originalVoucherConfirmation: state._originalVoucherConfirmation, +}))(Form.create()(OriginalVoucherConfirmationProfile)) + diff --git a/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.profile.less b/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.search.js b/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.search.js index 958695e6c..9899524f3 100644 --- a/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.search.js +++ b/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.searchform.js b/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.searchform.js index ab7dbb255..a36e800d6 100644 --- a/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.searchform.js +++ b/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`originalVoucherConfirmationList.searchField`] = fieldName - value[`originalVoucherConfirmationList.searchVerb`] = searchVerb - value[`originalVoucherConfirmationList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,11 +127,12 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'who')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'comments')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'who')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'comments')) console.log("the final parameter", paramList) @@ -147,11 +148,12 @@ componentDidMount() { } - params['originalVoucherConfirmationList'] = 1 - params['originalVoucherConfirmationList.orderBy.0'] = "id" - params['originalVoucherConfirmationList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -206,8 +208,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -270,8 +272,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.table.js b/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.table.js index 420bbc0f1..9e580ef0f 100644 --- a/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.table.js +++ b/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.table.js @@ -40,24 +40,53 @@ class OriginalVoucherConfirmationTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = OriginalVoucherConfirmationBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class OriginalVoucherConfirmationTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class OriginalVoucherConfirmationTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.updateform.js b/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.updateform.js index 0119bdc9f..0c242cab4 100644 --- a/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.updateform.js +++ b/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.updateform.js @@ -262,7 +262,7 @@ class OriginalVoucherConfirmationUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class OriginalVoucherConfirmationUpdateForm extends Component { initialValue: selectedRow.who, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class OriginalVoucherConfirmationUpdateForm extends Component { initialValue: selectedRow.comments, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -298,7 +298,7 @@ class OriginalVoucherConfirmationUpdateForm extends Component { initialValue: selectedRow.makeDate, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.app.js b/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.app.js index d6da83791..a90e53b6b 100644 --- a/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.app.js +++ b/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class OriginalVoucherCreationBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class OriginalVoucherCreationBizApp extends React.PureComponent { buildRouters = () =>{ const {OriginalVoucherCreationDashboard} = GlobalComponents - const {OriginalVoucherCreationPreference} = GlobalComponents + const {OriginalVoucherCreationPermission} = GlobalComponents + const {OriginalVoucherCreationProfile} = GlobalComponents const routers=[ {path:"/originalVoucherCreation/:id/dashboard", component: OriginalVoucherCreationDashboard}, - {path:"/originalVoucherCreation/:id/preference", component: OriginalVoucherCreationPreference}, + {path:"/originalVoucherCreation/:id/profile", component: OriginalVoucherCreationProfile}, + {path:"/originalVoucherCreation/:id/permission", component: OriginalVoucherCreationPermission}, diff --git a/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.associateform.js b/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.associateform.js index 73d344ef5..d5a4370b1 100644 --- a/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.associateform.js +++ b/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.associateform.js @@ -20,7 +20,7 @@ const testValues = {}; const testValues = { who: '财务会计', comments: '确认提交', - makeDate: '2018-10-11', + makeDate: '2016-10-21', } */ @@ -140,7 +140,7 @@ class OriginalVoucherCreationAssociateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -150,7 +150,7 @@ class OriginalVoucherCreationAssociateForm extends Component { {getFieldDecorator('comments', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -160,7 +160,7 @@ class OriginalVoucherCreationAssociateForm extends Component { {getFieldDecorator('makeDate', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.associateform.less b/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.associateform.less +++ b/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.base.js b/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.base.js index cf79aa9be..7254b6199 100644 --- a/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.base.js +++ b/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.base.js @@ -1,100 +1,80 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"原始凭证制作", menuFor: "originalVoucherCreation", subItems: [ - {name: 'originalVoucherList', displayName:'原始凭证', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'originalVoucherList', displayName:'原始凭证', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + who: '谁', + comments: '评论', + makeDate: '制造日期', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'originalVoucherCreation') }, - { title: '谁', debugtype: 'string', dataIndex: 'who', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: '评论', debugtype: 'string', dataIndex: 'comments', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: '制造日期', dataIndex: 'makeDate', render: (text, record) =>renderDateCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'originalVoucherCreation') , sorter: true }, + { title: fieldLabels.who, debugtype: 'string', dataIndex: 'who', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.comments, debugtype: 'string', dataIndex: 'comments', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.makeDate, dataIndex: 'makeDate', render: (text, record) =>renderDateCell(text,record), sorter: true }, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({originalVoucherCreation,targetComponent})=>{ -const fieldLabels = { - id: '序号', - who: '谁', - comments: '评论', - makeDate: '制造日期', + + + const {OriginalVoucherCreationService} = GlobalComponents + // const userContext = null + return ( + +{originalVoucherCreation.id} +{originalVoucherCreation.who} +{originalVoucherCreation.comments} +{ moment(originalVoucherCreation.makeDate).format('YYYY-MM-DD')} + + {buildTransferModal(originalVoucherCreation,targetComponent)} + + ) } + + -const OriginalVoucherCreationBase={menuData,displayColumns,fieldLabels} +const OriginalVoucherCreationBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default OriginalVoucherCreationBase diff --git a/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.createform.js b/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.createform.js index 86c566cbb..632ce94ba 100644 --- a/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.createform.js +++ b/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.createform.js @@ -19,7 +19,7 @@ const testValues = {}; const testValues = { who: '财务会计', comments: '确认提交', - makeDate: '2018-09-01', + makeDate: '2016-05-27', } */ @@ -208,7 +208,7 @@ class OriginalVoucherCreationCreateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -218,7 +218,7 @@ class OriginalVoucherCreationCreateForm extends Component { {getFieldDecorator('comments', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -228,7 +228,7 @@ class OriginalVoucherCreationCreateForm extends Component { {getFieldDecorator('makeDate', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.dashboard.js b/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.dashboard.js index cc55f4051..084070e09 100644 --- a/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.dashboard.js +++ b/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -138,6 +138,7 @@ class OriginalVoucherCreationDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -146,13 +147,17 @@ class OriginalVoucherCreationDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.model.js b/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.model.js index 469b68058..aeeb39d31 100644 --- a/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.model.js +++ b/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/originalVoucherCreation/${id}/list/\OriginalVoucherList/原始凭证+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/originalVoucherCreation/${id}/list/OriginalVoucherList/原始凭证+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateOriginalVoucher({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/originalVoucherCreation/${id}/list/\OriginalVoucherList/原始凭证列表`, state: newPlayload } + const location = { pathname: `/originalVoucherCreation/${id}/list/OriginalVoucherList/原始凭证列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextOriginalVoucherUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.permission.js b/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.permission.js new file mode 100644 index 000000000..a2d8e82a7 --- /dev/null +++ b/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.permission.js @@ -0,0 +1,86 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './OriginalVoucherCreation.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (originalVoucherCreation,targetComponent) =>{ + const userContext = null + return ( + +{originalVoucherCreation.id} +{originalVoucherCreation.who} +{originalVoucherCreation.comments} +{ moment(originalVoucherCreation.makeDate).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = originalVoucherCreation => { + const {OriginalVoucherCreationBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class OriginalVoucherCreationPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const originalVoucherCreation = this.props.originalVoucherCreation; + const { id,displayName, originalVoucherCount } = originalVoucherCreation + const cardsData = {cardsName:"原始凭证制作",cardsFor: "originalVoucherCreation",cardsSource: originalVoucherCreation, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + originalVoucherCreation: state._originalVoucherCreation, +}))(Form.create()(OriginalVoucherCreationPermission)) + diff --git a/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.permission.less b/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.preference.js b/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.preference.js index 306c58e3b..090300edd 100644 --- a/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.preference.js +++ b/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.preference.js @@ -301,8 +301,12 @@ class OriginalVoucherCreationPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, originalVoucherCount } = this.props.originalVoucherCreation - const cardsData = {cardsName:"原始凭证制作",cardsFor: "originalVoucherCreation",cardsSource: this.props.originalVoucherCreation, + const originalVoucherCreation = this.props.originalVoucherCreation; + const { id,displayName, originalVoucherCount } = originalVoucherCreation + + + + const cardsData = {cardsName:"原始凭证制作",cardsFor: "originalVoucherCreation",cardsSource: originalVoucherCreation, subItems: [ ], diff --git a/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.profile.js b/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.profile.js new file mode 100644 index 000000000..02ddc9641 --- /dev/null +++ b/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.profile.js @@ -0,0 +1,93 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './OriginalVoucherCreation.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (originalVoucherCreation,targetComponent) =>{ + const userContext = null + return ( + +{originalVoucherCreation.id} +{originalVoucherCreation.who} +{originalVoucherCreation.comments} +{ moment(originalVoucherCreation.makeDate).format('YYYY-MM-DD')} + + + ) +} + + + +class OriginalVoucherCreationProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const originalVoucherCreation = this.props.originalVoucherCreation; + const { id,displayName, originalVoucherCount } = originalVoucherCreation + + const cardsData = {cardsName:"原始凭证制作",cardsFor: "originalVoucherCreation",cardsSource: originalVoucherCreation, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + originalVoucherCreation: state._originalVoucherCreation, +}))(Form.create()(OriginalVoucherCreationProfile)) + diff --git a/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.profile.less b/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.search.js b/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.search.js index a2c5fbb2b..473ebbfb9 100644 --- a/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.search.js +++ b/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.searchform.js b/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.searchform.js index 36f9aa364..2abc87583 100644 --- a/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.searchform.js +++ b/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`originalVoucherCreationList.searchField`] = fieldName - value[`originalVoucherCreationList.searchVerb`] = searchVerb - value[`originalVoucherCreationList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,11 +127,12 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'who')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'comments')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'who')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'comments')) console.log("the final parameter", paramList) @@ -147,11 +148,12 @@ componentDidMount() { } - params['originalVoucherCreationList'] = 1 - params['originalVoucherCreationList.orderBy.0'] = "id" - params['originalVoucherCreationList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -206,8 +208,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -270,8 +272,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.table.js b/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.table.js index 13eb0ea50..1b2fd6ff6 100644 --- a/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.table.js +++ b/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.table.js @@ -40,24 +40,53 @@ class OriginalVoucherCreationTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = OriginalVoucherCreationBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class OriginalVoucherCreationTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class OriginalVoucherCreationTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.updateform.js b/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.updateform.js index 1a9933dd4..14c5b8f99 100644 --- a/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.updateform.js +++ b/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.updateform.js @@ -262,7 +262,7 @@ class OriginalVoucherCreationUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class OriginalVoucherCreationUpdateForm extends Component { initialValue: selectedRow.who, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class OriginalVoucherCreationUpdateForm extends Component { initialValue: selectedRow.comments, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -298,7 +298,7 @@ class OriginalVoucherCreationUpdateForm extends Component { initialValue: selectedRow.makeDate, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/payingoff/PayingOff.app.js b/bizui/src/bizcomponents/payingoff/PayingOff.app.js index 433433d6f..81f3d1d80 100644 --- a/bizui/src/bizcomponents/payingoff/PayingOff.app.js +++ b/bizui/src/bizcomponents/payingoff/PayingOff.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class PayingOffBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class PayingOffBizApp extends React.PureComponent { buildRouters = () =>{ const {PayingOffDashboard} = GlobalComponents - const {PayingOffPreference} = GlobalComponents + const {PayingOffPermission} = GlobalComponents + const {PayingOffProfile} = GlobalComponents const routers=[ {path:"/payingOff/:id/dashboard", component: PayingOffDashboard}, - {path:"/payingOff/:id/preference", component: PayingOffPreference}, + {path:"/payingOff/:id/profile", component: PayingOffProfile}, + {path:"/payingOff/:id/permission", component: PayingOffPermission}, diff --git a/bizui/src/bizcomponents/payingoff/PayingOff.associateform.js b/bizui/src/bizcomponents/payingoff/PayingOff.associateform.js index a27bb8fde..8902204a2 100644 --- a/bizui/src/bizcomponents/payingoff/PayingOff.associateform.js +++ b/bizui/src/bizcomponents/payingoff/PayingOff.associateform.js @@ -19,8 +19,8 @@ const testValues = {}; /* const testValues = { who: '出纳', - paidTime: '2019-03-16', - amount: '3967.83', + paidTime: '2017-10-22', + amount: '4468.90', paidForId: 'E000001', } */ @@ -141,7 +141,7 @@ class PayingOffAssociateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -151,7 +151,7 @@ class PayingOffAssociateForm extends Component { {getFieldDecorator('paidTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -161,7 +161,7 @@ class PayingOffAssociateForm extends Component { {getFieldDecorator('amount', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/payingoff/PayingOff.associateform.less b/bizui/src/bizcomponents/payingoff/PayingOff.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/payingoff/PayingOff.associateform.less +++ b/bizui/src/bizcomponents/payingoff/PayingOff.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/payingoff/PayingOff.base.js b/bizui/src/bizcomponents/payingoff/PayingOff.base.js index cde3ec687..8cd951d77 100644 --- a/bizui/src/bizcomponents/payingoff/PayingOff.base.js +++ b/bizui/src/bizcomponents/payingoff/PayingOff.base.js @@ -1,102 +1,88 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"工资支付", menuFor: "payingOff", subItems: [ - {name: 'employeeSalarySheetList', displayName:'工资单', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'employeeSalarySheetList', displayName:'工资单', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + who: '谁', + paidFor: '支付', + paidTime: '支付时间', + amount: '金额', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'payingOff') }, - { title: '谁', debugtype: 'string', dataIndex: 'who', width: '6',render: (text, record)=>renderTextCell(text,record) }, - { title: '支付', dataIndex: 'paidFor', render: (text, record) => renderReferenceCell(text, record)}, - { title: '支付时间', dataIndex: 'paidTime', render: (text, record) =>renderDateCell(text,record) }, - { title: '金额', dataIndex: 'amount', className:'money', render: (text, record) => renderMoneyCell(text, record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'payingOff') , sorter: true }, + { title: fieldLabels.who, debugtype: 'string', dataIndex: 'who', width: '6',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.paidFor, dataIndex: 'paidFor', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.paidTime, dataIndex: 'paidTime', render: (text, record) =>renderDateCell(text,record), sorter: true }, + { title: fieldLabels.amount, dataIndex: 'amount', className:'money', render: (text, record) => renderMoneyCell(text, record), sorter: true }, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({payingOff,targetComponent})=>{ -const fieldLabels = { - id: '序号', - who: '谁', - paidFor: '支付', - paidTime: '支付时间', - amount: '金额', + + + const {PayingOffService} = GlobalComponents + // const userContext = null + return ( + +{payingOff.id} +{payingOff.who} +{payingOff.paidFor==null?appLocaleName(userContext,"NotAssigned"):`${payingOff.paidFor.displayName}(${payingOff.paidFor.id})`} + + showTransferModel(targetComponent,"支付","employee",PayingOffService.requestCandidatePaidFor, + PayingOffService.transferToAnotherPaidFor,"anotherPaidForId",payingOff.paidFor?payingOff.paidFor.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{ moment(payingOff.paidTime).format('YYYY-MM-DD')} +{payingOff.amount} + + {buildTransferModal(payingOff,targetComponent)} + + ) } + + -const PayingOffBase={menuData,displayColumns,fieldLabels} +const PayingOffBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default PayingOffBase diff --git a/bizui/src/bizcomponents/payingoff/PayingOff.createform.js b/bizui/src/bizcomponents/payingoff/PayingOff.createform.js index 9ab4cf890..242cc1c69 100644 --- a/bizui/src/bizcomponents/payingoff/PayingOff.createform.js +++ b/bizui/src/bizcomponents/payingoff/PayingOff.createform.js @@ -18,8 +18,8 @@ const testValues = {}; /* const testValues = { who: '出纳', - paidTime: '2018-07-07', - amount: '3892.24', + paidTime: '2017-12-08', + amount: '4397.37', paidForId: 'E000001', } */ @@ -209,7 +209,7 @@ class PayingOffCreateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -219,7 +219,7 @@ class PayingOffCreateForm extends Component { {getFieldDecorator('paidTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -229,7 +229,7 @@ class PayingOffCreateForm extends Component { {getFieldDecorator('amount', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/payingoff/PayingOff.dashboard.js b/bizui/src/bizcomponents/payingoff/PayingOff.dashboard.js index bac88e0c0..fb0aaf84a 100644 --- a/bizui/src/bizcomponents/payingoff/PayingOff.dashboard.js +++ b/bizui/src/bizcomponents/payingoff/PayingOff.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -144,6 +144,7 @@ class PayingOffDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -152,13 +153,17 @@ class PayingOffDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/payingoff/PayingOff.model.js b/bizui/src/bizcomponents/payingoff/PayingOff.model.js index 2917f82c5..fca99d9da 100644 --- a/bizui/src/bizcomponents/payingoff/PayingOff.model.js +++ b/bizui/src/bizcomponents/payingoff/PayingOff.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/payingOff/${id}/list/\EmployeeSalarySheetList/工资单+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/payingOff/${id}/list/EmployeeSalarySheetList/工资单+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateEmployeeSalarySheet({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/payingOff/${id}/list/\EmployeeSalarySheetList/工资单列表`, state: newPlayload } + const location = { pathname: `/payingOff/${id}/list/EmployeeSalarySheetList/工资单列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextEmployeeSalarySheetUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/payingoff/PayingOff.permission.js b/bizui/src/bizcomponents/payingoff/PayingOff.permission.js new file mode 100644 index 000000000..3c7e51669 --- /dev/null +++ b/bizui/src/bizcomponents/payingoff/PayingOff.permission.js @@ -0,0 +1,86 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './PayingOff.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (payingOff,targetComponent) =>{ + const userContext = null + return ( + +{payingOff.id} +{payingOff.who} +{ moment(payingOff.paidTime).format('YYYY-MM-DD')} +{payingOff.amount} + + + ) +} + + +const renderPermissionSetting = payingOff => { + const {PayingOffBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class PayingOffPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const payingOff = this.props.payingOff; + const { id,displayName, employeeSalarySheetCount } = payingOff + const cardsData = {cardsName:"工资支付",cardsFor: "payingOff",cardsSource: payingOff, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + payingOff: state._payingOff, +}))(Form.create()(PayingOffPermission)) + diff --git a/bizui/src/bizcomponents/payingoff/PayingOff.permission.less b/bizui/src/bizcomponents/payingoff/PayingOff.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/payingoff/PayingOff.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/payingoff/PayingOff.preference.js b/bizui/src/bizcomponents/payingoff/PayingOff.preference.js index 2b743f6c6..260274676 100644 --- a/bizui/src/bizcomponents/payingoff/PayingOff.preference.js +++ b/bizui/src/bizcomponents/payingoff/PayingOff.preference.js @@ -307,8 +307,12 @@ class PayingOffPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, employeeSalarySheetCount } = this.props.payingOff - const cardsData = {cardsName:"工资支付",cardsFor: "payingOff",cardsSource: this.props.payingOff, + const payingOff = this.props.payingOff; + const { id,displayName, employeeSalarySheetCount } = payingOff + + + + const cardsData = {cardsName:"工资支付",cardsFor: "payingOff",cardsSource: payingOff, subItems: [ ], diff --git a/bizui/src/bizcomponents/payingoff/PayingOff.profile.js b/bizui/src/bizcomponents/payingoff/PayingOff.profile.js new file mode 100644 index 000000000..b38e2a609 --- /dev/null +++ b/bizui/src/bizcomponents/payingoff/PayingOff.profile.js @@ -0,0 +1,93 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './PayingOff.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (payingOff,targetComponent) =>{ + const userContext = null + return ( + +{payingOff.id} +{payingOff.who} +{ moment(payingOff.paidTime).format('YYYY-MM-DD')} +{payingOff.amount} + + + ) +} + + + +class PayingOffProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const payingOff = this.props.payingOff; + const { id,displayName, employeeSalarySheetCount } = payingOff + + const cardsData = {cardsName:"工资支付",cardsFor: "payingOff",cardsSource: payingOff, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + payingOff: state._payingOff, +}))(Form.create()(PayingOffProfile)) + diff --git a/bizui/src/bizcomponents/payingoff/PayingOff.profile.less b/bizui/src/bizcomponents/payingoff/PayingOff.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/payingoff/PayingOff.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/payingoff/PayingOff.search.js b/bizui/src/bizcomponents/payingoff/PayingOff.search.js index bca1c60da..8d1f1d9ae 100644 --- a/bizui/src/bizcomponents/payingoff/PayingOff.search.js +++ b/bizui/src/bizcomponents/payingoff/PayingOff.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/payingoff/PayingOff.searchform.js b/bizui/src/bizcomponents/payingoff/PayingOff.searchform.js index ab096d417..cdd55c456 100644 --- a/bizui/src/bizcomponents/payingoff/PayingOff.searchform.js +++ b/bizui/src/bizcomponents/payingoff/PayingOff.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`payingOffList.searchField`] = fieldName - value[`payingOffList.searchVerb`] = searchVerb - value[`payingOffList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,11 +127,12 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'who')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'paidFor')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'who')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'paidFor')) console.log("the final parameter", paramList) @@ -147,11 +148,12 @@ componentDidMount() { } - params['payingOffList'] = 1 - params['payingOffList.orderBy.0'] = "id" - params['payingOffList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -206,8 +208,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -277,8 +279,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/payingoff/PayingOff.table.js b/bizui/src/bizcomponents/payingoff/PayingOff.table.js index 93280a0a8..c121ef7ec 100644 --- a/bizui/src/bizcomponents/payingoff/PayingOff.table.js +++ b/bizui/src/bizcomponents/payingoff/PayingOff.table.js @@ -40,24 +40,53 @@ class PayingOffTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = PayingOffBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class PayingOffTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class PayingOffTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/payingoff/PayingOff.updateform.js b/bizui/src/bizcomponents/payingoff/PayingOff.updateform.js index b2ca6988d..81a4ddc49 100644 --- a/bizui/src/bizcomponents/payingoff/PayingOff.updateform.js +++ b/bizui/src/bizcomponents/payingoff/PayingOff.updateform.js @@ -262,7 +262,7 @@ class PayingOffUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class PayingOffUpdateForm extends Component { initialValue: selectedRow.who, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class PayingOffUpdateForm extends Component { initialValue: selectedRow.paidTime, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -298,7 +298,7 @@ class PayingOffUpdateForm extends Component { initialValue: selectedRow.amount, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.app.js b/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.app.js index 6f8343ded..327847e2e 100644 --- a/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.app.js +++ b/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class PotentialCustomerBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -304,12 +313,14 @@ class PotentialCustomerBizApp extends React.PureComponent { buildRouters = () =>{ const {PotentialCustomerDashboard} = GlobalComponents - const {PotentialCustomerPreference} = GlobalComponents + const {PotentialCustomerPermission} = GlobalComponents + const {PotentialCustomerProfile} = GlobalComponents const routers=[ {path:"/potentialCustomer/:id/dashboard", component: PotentialCustomerDashboard}, - {path:"/potentialCustomer/:id/preference", component: PotentialCustomerPreference}, + {path:"/potentialCustomer/:id/profile", component: PotentialCustomerProfile}, + {path:"/potentialCustomer/:id/permission", component: PotentialCustomerPermission}, diff --git a/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.associateform.js b/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.associateform.js index 3adf537cf..d5916a139 100644 --- a/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.associateform.js +++ b/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.associateform.js @@ -144,7 +144,7 @@ class PotentialCustomerAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -154,7 +154,7 @@ class PotentialCustomerAssociateForm extends Component { {getFieldDecorator('mobile', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -164,7 +164,7 @@ class PotentialCustomerAssociateForm extends Component { {getFieldDecorator('description', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.associateform.less b/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.associateform.less +++ b/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.base.js b/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.base.js index 5acc7b4eb..ed8f63ef1 100644 --- a/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.base.js +++ b/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.base.js @@ -1,95 +1,43 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"潜在的客户", menuFor: "potentialCustomer", subItems: [ - {name: 'potentialCustomerContactPersonList', displayName:'潜在客户联络人', icon:'om',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'potentialCustomerContactList', displayName:'潜在客户联系', icon:'om',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'eventAttendanceList', displayName:'活动的参与情况', icon:'at',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'potentialCustomerContactPersonList', displayName:'潜在客户联络人', icon:'om',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'potentialCustomerContactList', displayName:'潜在客户联系', icon:'om',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'eventAttendanceList', displayName:'活动的参与情况', icon:'at',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) - -} - -const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'potentialCustomer') }, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '7',render: (text, record)=>renderTextCell(text,record) }, - { title: '手机', debugtype: 'string_china_mobile_phone', dataIndex: 'mobile', width: '15',render: (text, record)=>renderTextCell(text,record) }, - { title: '城市服务中心', dataIndex: 'cityServiceCenter', render: (text, record) => renderReferenceCell(text, record)}, - { title: '城市合伙人', dataIndex: 'cityPartner', render: (text, record) => renderReferenceCell(text, record)}, - { title: '描述', debugtype: 'string', dataIndex: 'description', width: '20',render: (text, record)=>renderTextCell(text,record) }, - { title: '最后更新时间', dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record) }, - -] - const fieldLabels = { id: '序号', name: '名称', @@ -101,8 +49,53 @@ const fieldLabels = { } +const displayColumns = [ + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'potentialCustomer') , sorter: true }, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '7',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.mobile, debugtype: 'string_china_mobile_phone', dataIndex: 'mobile', width: '15',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.cityServiceCenter, dataIndex: 'cityServiceCenter', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.cityPartner, dataIndex: 'cityPartner', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.description, debugtype: 'string', dataIndex: 'description', width: '20',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.lastUpdateTime, dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record), sorter: true}, + +] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({potentialCustomer,targetComponent})=>{ + + + + const {PotentialCustomerService} = GlobalComponents + // const userContext = null + return ( + +{potentialCustomer.id} +{potentialCustomer.name} +{potentialCustomer.mobile} +{potentialCustomer.cityServiceCenter==null?appLocaleName(userContext,"NotAssigned"):`${potentialCustomer.cityServiceCenter.displayName}(${potentialCustomer.cityServiceCenter.id})`} + + showTransferModel(targetComponent,"城市服务中心","retailStoreCityServiceCenter",PotentialCustomerService.requestCandidateCityServiceCenter, + PotentialCustomerService.transferToAnotherCityServiceCenter,"anotherCityServiceCenterId",potentialCustomer.cityServiceCenter?potentialCustomer.cityServiceCenter.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{potentialCustomer.cityPartner==null?appLocaleName(userContext,"NotAssigned"):`${potentialCustomer.cityPartner.displayName}(${potentialCustomer.cityPartner.id})`} + + showTransferModel(targetComponent,"城市合伙人","cityPartner",PotentialCustomerService.requestCandidateCityPartner, + PotentialCustomerService.transferToAnotherCityPartner,"anotherCityPartnerId",potentialCustomer.cityPartner?potentialCustomer.cityPartner.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{potentialCustomer.description} +{ moment(potentialCustomer.lastUpdateTime).format('YYYY-MM-DD')} + + {buildTransferModal(potentialCustomer,targetComponent)} + + ) + +} + + + -const PotentialCustomerBase={menuData,displayColumns,fieldLabels} +const PotentialCustomerBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default PotentialCustomerBase diff --git a/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.createform.js b/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.createform.js index ee0d70598..ca09c651f 100644 --- a/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.createform.js +++ b/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.createform.js @@ -210,7 +210,7 @@ class PotentialCustomerCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -220,7 +220,7 @@ class PotentialCustomerCreateForm extends Component { {getFieldDecorator('mobile', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -230,7 +230,7 @@ class PotentialCustomerCreateForm extends Component { {getFieldDecorator('description', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.dashboard.js b/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.dashboard.js index bc1a5a630..f6474a039 100644 --- a/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.dashboard.js +++ b/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -153,6 +153,7 @@ class PotentialCustomerDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -161,13 +162,17 @@ class PotentialCustomerDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.model.js b/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.model.js index 0805742c3..96b5150e1 100644 --- a/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.model.js +++ b/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/potentialCustomer/${id}/list/\PotentialCustomerContactPersonList/潜在客户联络人+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/potentialCustomer/${id}/list/PotentialCustomerContactPersonList/潜在客户联络人+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updatePotentialCustomerContactPerson({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/potentialCustomer/${id}/list/\PotentialCustomerContactPersonList/潜在客户联络人列表`, state: newPlayload } + const location = { pathname: `/potentialCustomer/${id}/list/PotentialCustomerContactPersonList/潜在客户联络人列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextPotentialCustomerContactPersonUpdateRow({ payload }, { call, put }) { @@ -206,7 +206,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/potentialCustomer/${id}/list/\PotentialCustomerContactList/潜在客户联系+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/potentialCustomer/${id}/list/PotentialCustomerContactList/潜在客户联系+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updatePotentialCustomerContact({ payload }, { call, put }) { @@ -228,7 +228,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/potentialCustomer/${id}/list/\PotentialCustomerContactList/潜在客户联系列表`, state: newPlayload } + const location = { pathname: `/potentialCustomer/${id}/list/PotentialCustomerContactList/潜在客户联系列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextPotentialCustomerContactUpdateRow({ payload }, { call, put }) { @@ -275,7 +275,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/potentialCustomer/${id}/list/\EventAttendanceList/活动的参与情况+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/potentialCustomer/${id}/list/EventAttendanceList/活动的参与情况+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateEventAttendance({ payload }, { call, put }) { @@ -297,7 +297,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/potentialCustomer/${id}/list/\EventAttendanceList/活动的参与情况列表`, state: newPlayload } + const location = { pathname: `/potentialCustomer/${id}/list/EventAttendanceList/活动的参与情况列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextEventAttendanceUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.permission.js b/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.permission.js new file mode 100644 index 000000000..dab5df08b --- /dev/null +++ b/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.permission.js @@ -0,0 +1,87 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './PotentialCustomer.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (potentialCustomer,targetComponent) =>{ + const userContext = null + return ( + +{potentialCustomer.id} +{potentialCustomer.name} +{potentialCustomer.mobile} +{potentialCustomer.description} +{ moment(potentialCustomer.lastUpdateTime).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = potentialCustomer => { + const {PotentialCustomerBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class PotentialCustomerPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const potentialCustomer = this.props.potentialCustomer; + const { id,displayName, potentialCustomerContactPersonCount, potentialCustomerContactCount, eventAttendanceCount } = potentialCustomer + const cardsData = {cardsName:"潜在的客户",cardsFor: "potentialCustomer",cardsSource: potentialCustomer, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + potentialCustomer: state._potentialCustomer, +}))(Form.create()(PotentialCustomerPermission)) + diff --git a/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.permission.less b/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.preference.js b/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.preference.js index e581bf3d6..3b73bb7db 100644 --- a/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.preference.js +++ b/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.preference.js @@ -314,8 +314,12 @@ class PotentialCustomerPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, potentialCustomerContactPersonCount, potentialCustomerContactCount, eventAttendanceCount } = this.props.potentialCustomer - const cardsData = {cardsName:"潜在的客户",cardsFor: "potentialCustomer",cardsSource: this.props.potentialCustomer, + const potentialCustomer = this.props.potentialCustomer; + const { id,displayName, potentialCustomerContactPersonCount, potentialCustomerContactCount, eventAttendanceCount } = potentialCustomer + + + + const cardsData = {cardsName:"潜在的客户",cardsFor: "potentialCustomer",cardsSource: potentialCustomer, subItems: [ ], diff --git a/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.profile.js b/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.profile.js new file mode 100644 index 000000000..89bad4807 --- /dev/null +++ b/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.profile.js @@ -0,0 +1,94 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './PotentialCustomer.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (potentialCustomer,targetComponent) =>{ + const userContext = null + return ( + +{potentialCustomer.id} +{potentialCustomer.name} +{potentialCustomer.mobile} +{potentialCustomer.description} +{ moment(potentialCustomer.lastUpdateTime).format('YYYY-MM-DD')} + + + ) +} + + + +class PotentialCustomerProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const potentialCustomer = this.props.potentialCustomer; + const { id,displayName, potentialCustomerContactPersonCount, potentialCustomerContactCount, eventAttendanceCount } = potentialCustomer + + const cardsData = {cardsName:"潜在的客户",cardsFor: "potentialCustomer",cardsSource: potentialCustomer, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + potentialCustomer: state._potentialCustomer, +}))(Form.create()(PotentialCustomerProfile)) + diff --git a/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.profile.less b/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.search.js b/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.search.js index 01fe5f6ec..95b227a7c 100644 --- a/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.search.js +++ b/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.searchform.js b/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.searchform.js index 5161be755..15a7d96d7 100644 --- a/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.searchform.js +++ b/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`potentialCustomerList.searchField`] = fieldName - value[`potentialCustomerList.searchVerb`] = searchVerb - value[`potentialCustomerList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,14 +127,15 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'mobile')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'cityServiceCenter')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'cityPartner')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'description')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'mobile')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'cityServiceCenter')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'cityPartner')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'description')) console.log("the final parameter", paramList) @@ -150,11 +151,12 @@ componentDidMount() { } - params['potentialCustomerList'] = 1 - params['potentialCustomerList.orderBy.0'] = "id" - params['potentialCustomerList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -209,8 +211,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -311,8 +313,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.table.js b/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.table.js index 7930d2d1e..f4fd9ae6d 100644 --- a/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.table.js +++ b/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.table.js @@ -40,24 +40,53 @@ class PotentialCustomerTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = PotentialCustomerBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class PotentialCustomerTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class PotentialCustomerTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.updateform.js b/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.updateform.js index c6cd4044b..a6e8b7068 100644 --- a/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.updateform.js +++ b/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.updateform.js @@ -262,7 +262,7 @@ class PotentialCustomerUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class PotentialCustomerUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class PotentialCustomerUpdateForm extends Component { initialValue: selectedRow.mobile, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -298,7 +298,7 @@ class PotentialCustomerUpdateForm extends Component { initialValue: selectedRow.description, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.app.js b/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.app.js index fefea0dcd..c75c7b6f3 100644 --- a/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.app.js +++ b/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class PotentialCustomerContactBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -157,12 +166,14 @@ class PotentialCustomerContactBizApp extends React.PureComponent { buildRouters = () =>{ const {PotentialCustomerContactDashboard} = GlobalComponents - const {PotentialCustomerContactPreference} = GlobalComponents + const {PotentialCustomerContactPermission} = GlobalComponents + const {PotentialCustomerContactProfile} = GlobalComponents const routers=[ {path:"/potentialCustomerContact/:id/dashboard", component: PotentialCustomerContactDashboard}, - {path:"/potentialCustomerContact/:id/preference", component: PotentialCustomerContactPreference}, + {path:"/potentialCustomerContact/:id/profile", component: PotentialCustomerContactProfile}, + {path:"/potentialCustomerContact/:id/permission", component: PotentialCustomerContactPermission}, diff --git a/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.associateform.js b/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.associateform.js index 848ae3022..6b7e02a74 100644 --- a/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.associateform.js +++ b/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { name: '和连载客户的联系记录', - contactDate: '2018-07-30', + contactDate: '2018-08-26', contactMethod: '电话', description: '转化希望很大', potentialCustomerId: 'PC000001', @@ -143,7 +143,7 @@ class PotentialCustomerContactAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -153,7 +153,7 @@ class PotentialCustomerContactAssociateForm extends Component { {getFieldDecorator('contactDate', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -163,7 +163,7 @@ class PotentialCustomerContactAssociateForm extends Component { {getFieldDecorator('contactMethod', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -173,7 +173,7 @@ class PotentialCustomerContactAssociateForm extends Component { {getFieldDecorator('description', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.associateform.less b/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.associateform.less +++ b/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.base.js b/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.base.js index 650770f33..5abb45b3c 100644 --- a/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.base.js +++ b/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.base.js @@ -1,10 +1,33 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"潜在客户联系", menuFor: "potentialCustomerContact", subItems: [ @@ -12,83 +35,6 @@ const menuData = {menuName:"潜在客户联系", menuFor: "potentialCustomerCont ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) - -} - -const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record) }, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '14',render: (text, record)=>renderTextCell(text,record) }, - { title: '接触日期', dataIndex: 'contactDate', render: (text, record) =>renderDateCell(text,record) }, - { title: '接触法', debugtype: 'string', dataIndex: 'contactMethod', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: '潜在的客户', dataIndex: 'potentialCustomer', render: (text, record) => renderReferenceCell(text, record)}, - { title: '城市合伙人', dataIndex: 'cityPartner', render: (text, record) => renderReferenceCell(text, record)}, - { title: '接触', dataIndex: 'contactTo', render: (text, record) => renderReferenceCell(text, record)}, - { title: '描述', debugtype: 'string', dataIndex: 'description', width: '10',render: (text, record)=>renderTextCell(text,record) }, - { title: '最后更新时间', dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record) }, - -] - const fieldLabels = { id: '序号', name: '名称', @@ -102,8 +48,62 @@ const fieldLabels = { } +const displayColumns = [ + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '14',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.contactDate, dataIndex: 'contactDate', render: (text, record) =>renderDateCell(text,record), sorter: true }, + { title: fieldLabels.contactMethod, debugtype: 'string', dataIndex: 'contactMethod', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.potentialCustomer, dataIndex: 'potentialCustomer', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.cityPartner, dataIndex: 'cityPartner', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.contactTo, dataIndex: 'contactTo', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.description, debugtype: 'string', dataIndex: 'description', width: '10',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.lastUpdateTime, dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record), sorter: true}, + +] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({potentialCustomerContact,targetComponent})=>{ + + + + const {PotentialCustomerContactService} = GlobalComponents + // const userContext = null + return ( + +{potentialCustomerContact.id} +{potentialCustomerContact.name} +{ moment(potentialCustomerContact.contactDate).format('YYYY-MM-DD')} +{potentialCustomerContact.contactMethod} +{potentialCustomerContact.potentialCustomer==null?appLocaleName(userContext,"NotAssigned"):`${potentialCustomerContact.potentialCustomer.displayName}(${potentialCustomerContact.potentialCustomer.id})`} + + showTransferModel(targetComponent,"潜在的客户","potentialCustomer",PotentialCustomerContactService.requestCandidatePotentialCustomer, + PotentialCustomerContactService.transferToAnotherPotentialCustomer,"anotherPotentialCustomerId",potentialCustomerContact.potentialCustomer?potentialCustomerContact.potentialCustomer.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{potentialCustomerContact.cityPartner==null?appLocaleName(userContext,"NotAssigned"):`${potentialCustomerContact.cityPartner.displayName}(${potentialCustomerContact.cityPartner.id})`} + + showTransferModel(targetComponent,"城市合伙人","cityPartner",PotentialCustomerContactService.requestCandidateCityPartner, + PotentialCustomerContactService.transferToAnotherCityPartner,"anotherCityPartnerId",potentialCustomerContact.cityPartner?potentialCustomerContact.cityPartner.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{potentialCustomerContact.contactTo==null?appLocaleName(userContext,"NotAssigned"):`${potentialCustomerContact.contactTo.displayName}(${potentialCustomerContact.contactTo.id})`} + + showTransferModel(targetComponent,"接触","potentialCustomerContactPerson",PotentialCustomerContactService.requestCandidateContactTo, + PotentialCustomerContactService.transferToAnotherContactTo,"anotherContactToId",potentialCustomerContact.contactTo?potentialCustomerContact.contactTo.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{potentialCustomerContact.description} +{ moment(potentialCustomerContact.lastUpdateTime).format('YYYY-MM-DD')} + + {buildTransferModal(potentialCustomerContact,targetComponent)} + + ) + +} + + + -const PotentialCustomerContactBase={menuData,displayColumns,fieldLabels} +const PotentialCustomerContactBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default PotentialCustomerContactBase diff --git a/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.createform.js b/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.createform.js index bdcd9f4b4..edc9a3257 100644 --- a/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.createform.js +++ b/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { name: '和连载客户的联系记录', - contactDate: '2017-07-12', + contactDate: '2017-06-01', contactMethod: '电话', description: '转化希望很大', potentialCustomerId: 'PC000001', @@ -212,7 +212,7 @@ class PotentialCustomerContactCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -222,7 +222,7 @@ class PotentialCustomerContactCreateForm extends Component { {getFieldDecorator('contactDate', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -232,7 +232,7 @@ class PotentialCustomerContactCreateForm extends Component { {getFieldDecorator('contactMethod', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -242,7 +242,7 @@ class PotentialCustomerContactCreateForm extends Component { {getFieldDecorator('description', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.dashboard.js b/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.dashboard.js index cd638b4aa..06e510a27 100644 --- a/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.dashboard.js +++ b/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -157,6 +157,7 @@ class PotentialCustomerContactDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -165,13 +166,17 @@ class PotentialCustomerContactDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.model.js b/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.model.js index b7b8dae8d..d41e8ae0b 100644 --- a/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.model.js +++ b/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' diff --git a/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.permission.js b/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.permission.js new file mode 100644 index 000000000..99900aed6 --- /dev/null +++ b/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.permission.js @@ -0,0 +1,88 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './PotentialCustomerContact.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (potentialCustomerContact,targetComponent) =>{ + const userContext = null + return ( + +{potentialCustomerContact.id} +{potentialCustomerContact.name} +{ moment(potentialCustomerContact.contactDate).format('YYYY-MM-DD')} +{potentialCustomerContact.contactMethod} +{potentialCustomerContact.description} +{ moment(potentialCustomerContact.lastUpdateTime).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = potentialCustomerContact => { + const {PotentialCustomerContactBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class PotentialCustomerContactPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const potentialCustomerContact = this.props.potentialCustomerContact; + const { id,displayName, } = potentialCustomerContact + const cardsData = {cardsName:"潜在客户联系",cardsFor: "potentialCustomerContact",cardsSource: potentialCustomerContact, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + potentialCustomerContact: state._potentialCustomerContact, +}))(Form.create()(PotentialCustomerContactPermission)) + diff --git a/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.permission.less b/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.preference.js b/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.preference.js index d60206723..8138efc46 100644 --- a/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.preference.js +++ b/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.preference.js @@ -321,8 +321,12 @@ class PotentialCustomerContactPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, } = this.props.potentialCustomerContact - const cardsData = {cardsName:"潜在客户联系",cardsFor: "potentialCustomerContact",cardsSource: this.props.potentialCustomerContact, + const potentialCustomerContact = this.props.potentialCustomerContact; + const { id,displayName, } = potentialCustomerContact + + + + const cardsData = {cardsName:"潜在客户联系",cardsFor: "potentialCustomerContact",cardsSource: potentialCustomerContact, subItems: [ ], diff --git a/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.profile.js b/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.profile.js new file mode 100644 index 000000000..937d8e03d --- /dev/null +++ b/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.profile.js @@ -0,0 +1,95 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './PotentialCustomerContact.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (potentialCustomerContact,targetComponent) =>{ + const userContext = null + return ( + +{potentialCustomerContact.id} +{potentialCustomerContact.name} +{ moment(potentialCustomerContact.contactDate).format('YYYY-MM-DD')} +{potentialCustomerContact.contactMethod} +{potentialCustomerContact.description} +{ moment(potentialCustomerContact.lastUpdateTime).format('YYYY-MM-DD')} + + + ) +} + + + +class PotentialCustomerContactProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const potentialCustomerContact = this.props.potentialCustomerContact; + const { id,displayName, } = potentialCustomerContact + + const cardsData = {cardsName:"潜在客户联系",cardsFor: "potentialCustomerContact",cardsSource: potentialCustomerContact, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + potentialCustomerContact: state._potentialCustomerContact, +}))(Form.create()(PotentialCustomerContactProfile)) + diff --git a/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.profile.less b/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.search.js b/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.search.js index 4e217dba3..8050cab2f 100644 --- a/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.search.js +++ b/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.searchform.js b/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.searchform.js index d26e7710f..69b1867f4 100644 --- a/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.searchform.js +++ b/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`potentialCustomerContactList.searchField`] = fieldName - value[`potentialCustomerContactList.searchVerb`] = searchVerb - value[`potentialCustomerContactList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,15 +127,16 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'contactMethod')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'potentialCustomer')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'cityPartner')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'contactTo')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'description')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'contactMethod')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'potentialCustomer')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'cityPartner')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'contactTo')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'description')) console.log("the final parameter", paramList) @@ -151,11 +152,12 @@ componentDidMount() { } - params['potentialCustomerContactList'] = 1 - params['potentialCustomerContactList.orderBy.0'] = "id" - params['potentialCustomerContactList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -210,8 +212,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -327,8 +329,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.table.js b/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.table.js index d6876ec1c..c8af37da3 100644 --- a/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.table.js +++ b/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.table.js @@ -40,24 +40,53 @@ class PotentialCustomerContactTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = PotentialCustomerContactBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class PotentialCustomerContactTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class PotentialCustomerContactTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.updateform.js b/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.updateform.js index 2962b6d38..f4ac9cc4a 100644 --- a/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.updateform.js +++ b/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.updateform.js @@ -263,7 +263,7 @@ class PotentialCustomerContactUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -275,7 +275,7 @@ class PotentialCustomerContactUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -287,7 +287,7 @@ class PotentialCustomerContactUpdateForm extends Component { initialValue: selectedRow.contactDate, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -299,7 +299,7 @@ class PotentialCustomerContactUpdateForm extends Component { initialValue: selectedRow.contactMethod, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -311,7 +311,7 @@ class PotentialCustomerContactUpdateForm extends Component { initialValue: selectedRow.description, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.app.js b/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.app.js index 5532290ae..f92ecc3f9 100644 --- a/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.app.js +++ b/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class PotentialCustomerContactPersonBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class PotentialCustomerContactPersonBizApp extends React.PureComponent { buildRouters = () =>{ const {PotentialCustomerContactPersonDashboard} = GlobalComponents - const {PotentialCustomerContactPersonPreference} = GlobalComponents + const {PotentialCustomerContactPersonPermission} = GlobalComponents + const {PotentialCustomerContactPersonProfile} = GlobalComponents const routers=[ {path:"/potentialCustomerContactPerson/:id/dashboard", component: PotentialCustomerContactPersonDashboard}, - {path:"/potentialCustomerContactPerson/:id/preference", component: PotentialCustomerContactPersonPreference}, + {path:"/potentialCustomerContactPerson/:id/profile", component: PotentialCustomerContactPersonProfile}, + {path:"/potentialCustomerContactPerson/:id/permission", component: PotentialCustomerContactPersonPermission}, diff --git a/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.associateform.js b/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.associateform.js index ea0f22a86..2b7fe4b5c 100644 --- a/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.associateform.js +++ b/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.associateform.js @@ -141,7 +141,7 @@ class PotentialCustomerContactPersonAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -151,7 +151,7 @@ class PotentialCustomerContactPersonAssociateForm extends Component { {getFieldDecorator('mobile', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -161,7 +161,7 @@ class PotentialCustomerContactPersonAssociateForm extends Component { {getFieldDecorator('description', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.associateform.less b/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.associateform.less +++ b/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.base.js b/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.base.js index 919ea4c4f..cb72fe654 100644 --- a/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.base.js +++ b/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.base.js @@ -1,102 +1,88 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"潜在客户联络人", menuFor: "potentialCustomerContactPerson", subItems: [ - {name: 'potentialCustomerContactList', displayName:'潜在客户联系', icon:'om',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'potentialCustomerContactList', displayName:'潜在客户联系', icon:'om',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + name: '名称', + mobile: '手机', + potentialCustomer: '潜在的客户', + description: '描述', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'potentialCustomerContactPerson') }, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '7',render: (text, record)=>renderTextCell(text,record) }, - { title: '手机', debugtype: 'string_china_mobile_phone', dataIndex: 'mobile', width: '15',render: (text, record)=>renderTextCell(text,record) }, - { title: '潜在的客户', dataIndex: 'potentialCustomer', render: (text, record) => renderReferenceCell(text, record)}, - { title: '描述', debugtype: 'string', dataIndex: 'description', width: '28',render: (text, record)=>renderTextCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'potentialCustomerContactPerson') , sorter: true }, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '7',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.mobile, debugtype: 'string_china_mobile_phone', dataIndex: 'mobile', width: '15',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.potentialCustomer, dataIndex: 'potentialCustomer', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.description, debugtype: 'string', dataIndex: 'description', width: '28',render: (text, record)=>renderTextCell(text,record)}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({potentialCustomerContactPerson,targetComponent})=>{ -const fieldLabels = { - id: '序号', - name: '名称', - mobile: '手机', - potentialCustomer: '潜在的客户', - description: '描述', + + + const {PotentialCustomerContactPersonService} = GlobalComponents + // const userContext = null + return ( + +{potentialCustomerContactPerson.id} +{potentialCustomerContactPerson.name} +{potentialCustomerContactPerson.mobile} +{potentialCustomerContactPerson.potentialCustomer==null?appLocaleName(userContext,"NotAssigned"):`${potentialCustomerContactPerson.potentialCustomer.displayName}(${potentialCustomerContactPerson.potentialCustomer.id})`} + + showTransferModel(targetComponent,"潜在的客户","potentialCustomer",PotentialCustomerContactPersonService.requestCandidatePotentialCustomer, + PotentialCustomerContactPersonService.transferToAnotherPotentialCustomer,"anotherPotentialCustomerId",potentialCustomerContactPerson.potentialCustomer?potentialCustomerContactPerson.potentialCustomer.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{potentialCustomerContactPerson.description} + + {buildTransferModal(potentialCustomerContactPerson,targetComponent)} + + ) } + + -const PotentialCustomerContactPersonBase={menuData,displayColumns,fieldLabels} +const PotentialCustomerContactPersonBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default PotentialCustomerContactPersonBase diff --git a/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.createform.js b/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.createform.js index 3461629c6..d305439e5 100644 --- a/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.createform.js +++ b/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.createform.js @@ -209,7 +209,7 @@ class PotentialCustomerContactPersonCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -219,7 +219,7 @@ class PotentialCustomerContactPersonCreateForm extends Component { {getFieldDecorator('mobile', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -229,7 +229,7 @@ class PotentialCustomerContactPersonCreateForm extends Component { {getFieldDecorator('description', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.dashboard.js b/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.dashboard.js index 3eadf2521..d2b8d08ad 100644 --- a/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.dashboard.js +++ b/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -144,6 +144,7 @@ class PotentialCustomerContactPersonDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -152,13 +153,17 @@ class PotentialCustomerContactPersonDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.model.js b/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.model.js index 2fd1012d6..78860fa54 100644 --- a/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.model.js +++ b/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/potentialCustomerContactPerson/${id}/list/\PotentialCustomerContactList/潜在客户联系+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/potentialCustomerContactPerson/${id}/list/PotentialCustomerContactList/潜在客户联系+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updatePotentialCustomerContact({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/potentialCustomerContactPerson/${id}/list/\PotentialCustomerContactList/潜在客户联系列表`, state: newPlayload } + const location = { pathname: `/potentialCustomerContactPerson/${id}/list/PotentialCustomerContactList/潜在客户联系列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextPotentialCustomerContactUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.permission.js b/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.permission.js new file mode 100644 index 000000000..5d32c60a7 --- /dev/null +++ b/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.permission.js @@ -0,0 +1,86 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './PotentialCustomerContactPerson.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (potentialCustomerContactPerson,targetComponent) =>{ + const userContext = null + return ( + +{potentialCustomerContactPerson.id} +{potentialCustomerContactPerson.name} +{potentialCustomerContactPerson.mobile} +{potentialCustomerContactPerson.description} + + + ) +} + + +const renderPermissionSetting = potentialCustomerContactPerson => { + const {PotentialCustomerContactPersonBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class PotentialCustomerContactPersonPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const potentialCustomerContactPerson = this.props.potentialCustomerContactPerson; + const { id,displayName, potentialCustomerContactCount } = potentialCustomerContactPerson + const cardsData = {cardsName:"潜在客户联络人",cardsFor: "potentialCustomerContactPerson",cardsSource: potentialCustomerContactPerson, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + potentialCustomerContactPerson: state._potentialCustomerContactPerson, +}))(Form.create()(PotentialCustomerContactPersonPermission)) + diff --git a/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.permission.less b/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.preference.js b/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.preference.js index a7dbe87cf..60660bf73 100644 --- a/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.preference.js +++ b/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.preference.js @@ -307,8 +307,12 @@ class PotentialCustomerContactPersonPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, potentialCustomerContactCount } = this.props.potentialCustomerContactPerson - const cardsData = {cardsName:"潜在客户联络人",cardsFor: "potentialCustomerContactPerson",cardsSource: this.props.potentialCustomerContactPerson, + const potentialCustomerContactPerson = this.props.potentialCustomerContactPerson; + const { id,displayName, potentialCustomerContactCount } = potentialCustomerContactPerson + + + + const cardsData = {cardsName:"潜在客户联络人",cardsFor: "potentialCustomerContactPerson",cardsSource: potentialCustomerContactPerson, subItems: [ ], diff --git a/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.profile.js b/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.profile.js new file mode 100644 index 000000000..91d69e457 --- /dev/null +++ b/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.profile.js @@ -0,0 +1,93 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './PotentialCustomerContactPerson.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (potentialCustomerContactPerson,targetComponent) =>{ + const userContext = null + return ( + +{potentialCustomerContactPerson.id} +{potentialCustomerContactPerson.name} +{potentialCustomerContactPerson.mobile} +{potentialCustomerContactPerson.description} + + + ) +} + + + +class PotentialCustomerContactPersonProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const potentialCustomerContactPerson = this.props.potentialCustomerContactPerson; + const { id,displayName, potentialCustomerContactCount } = potentialCustomerContactPerson + + const cardsData = {cardsName:"潜在客户联络人",cardsFor: "potentialCustomerContactPerson",cardsSource: potentialCustomerContactPerson, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + potentialCustomerContactPerson: state._potentialCustomerContactPerson, +}))(Form.create()(PotentialCustomerContactPersonProfile)) + diff --git a/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.profile.less b/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.search.js b/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.search.js index df64ed5a2..797005354 100644 --- a/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.search.js +++ b/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.searchform.js b/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.searchform.js index 5f9f99035..538e43800 100644 --- a/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.searchform.js +++ b/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`potentialCustomerContactPersonList.searchField`] = fieldName - value[`potentialCustomerContactPersonList.searchVerb`] = searchVerb - value[`potentialCustomerContactPersonList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,13 +127,14 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'mobile')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'potentialCustomer')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'description')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'mobile')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'potentialCustomer')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'description')) console.log("the final parameter", paramList) @@ -149,11 +150,12 @@ componentDidMount() { } - params['potentialCustomerContactPersonList'] = 1 - params['potentialCustomerContactPersonList.orderBy.0'] = "id" - params['potentialCustomerContactPersonList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -208,8 +210,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -295,8 +297,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.table.js b/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.table.js index 2515808d6..271b50797 100644 --- a/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.table.js +++ b/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.table.js @@ -40,24 +40,53 @@ class PotentialCustomerContactPersonTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = PotentialCustomerContactPersonBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class PotentialCustomerContactPersonTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class PotentialCustomerContactPersonTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.updateform.js b/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.updateform.js index 2e1bbe979..0b2036723 100644 --- a/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.updateform.js +++ b/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.updateform.js @@ -261,7 +261,7 @@ class PotentialCustomerContactPersonUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class PotentialCustomerContactPersonUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -285,7 +285,7 @@ class PotentialCustomerContactPersonUpdateForm extends Component { initialValue: selectedRow.mobile, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -297,7 +297,7 @@ class PotentialCustomerContactPersonUpdateForm extends Component { initialValue: selectedRow.description, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/product/Product.app.js b/bizui/src/bizcomponents/product/Product.app.js index eea9ec8ae..b61482b50 100644 --- a/bizui/src/bizcomponents/product/Product.app.js +++ b/bizui/src/bizcomponents/product/Product.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class ProductBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class ProductBizApp extends React.PureComponent { buildRouters = () =>{ const {ProductDashboard} = GlobalComponents - const {ProductPreference} = GlobalComponents + const {ProductPermission} = GlobalComponents + const {ProductProfile} = GlobalComponents const routers=[ {path:"/product/:id/dashboard", component: ProductDashboard}, - {path:"/product/:id/preference", component: ProductPreference}, + {path:"/product/:id/profile", component: ProductProfile}, + {path:"/product/:id/permission", component: ProductPermission}, diff --git a/bizui/src/bizcomponents/product/Product.associateform.js b/bizui/src/bizcomponents/product/Product.associateform.js index 49a49c06f..3a818ddff 100644 --- a/bizui/src/bizcomponents/product/Product.associateform.js +++ b/bizui/src/bizcomponents/product/Product.associateform.js @@ -143,7 +143,7 @@ class ProductAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -153,7 +153,7 @@ class ProductAssociateForm extends Component { {getFieldDecorator('origin', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -163,7 +163,7 @@ class ProductAssociateForm extends Component { {getFieldDecorator('remark', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -173,7 +173,7 @@ class ProductAssociateForm extends Component { {getFieldDecorator('brand', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/product/Product.associateform.less b/bizui/src/bizcomponents/product/Product.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/product/Product.associateform.less +++ b/bizui/src/bizcomponents/product/Product.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/product/Product.base.js b/bizui/src/bizcomponents/product/Product.base.js index 0d775e3cb..7c45db27c 100644 --- a/bizui/src/bizcomponents/product/Product.base.js +++ b/bizui/src/bizcomponents/product/Product.base.js @@ -1,94 +1,41 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"产品", menuFor: "product", subItems: [ - {name: 'skuList', displayName:'SKU', icon:'skull',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'skuList', displayName:'SKU', icon:'skull',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) - -} - -const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'product') }, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '7',render: (text, record)=>renderTextCell(text,record) }, - { title: '父类', dataIndex: 'parentCategory', render: (text, record) => renderReferenceCell(text, record)}, - { title: '产地', debugtype: 'string', dataIndex: 'origin', width: '6',render: (text, record)=>renderTextCell(text,record) }, - { title: '备注', debugtype: 'string', dataIndex: 'remark', width: '26',render: (text, record)=>renderTextCell(text,record) }, - { title: '品牌', debugtype: 'string', dataIndex: 'brand', width: '27',render: (text, record)=>renderTextCell(text,record) }, - { title: '图片', dataIndex: 'picture', render: (text, record) => renderImageCell(text,record,'图片') }, - { title: '最后更新时间', dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record) }, - -] - const fieldLabels = { id: '序号', name: '名称', @@ -101,8 +48,49 @@ const fieldLabels = { } +const displayColumns = [ + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'product') , sorter: true }, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '7',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.parentCategory, dataIndex: 'parentCategory', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.origin, debugtype: 'string', dataIndex: 'origin', width: '6',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.remark, debugtype: 'string', dataIndex: 'remark', width: '26',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.brand, debugtype: 'string', dataIndex: 'brand', width: '27',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.picture, dataIndex: 'picture', render: (text, record) => renderImageCell(text,record,'图片') }, + { title: fieldLabels.lastUpdateTime, dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record), sorter: true}, + +] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({product,targetComponent})=>{ + + + + const {ProductService} = GlobalComponents + // const userContext = null + return ( + +{product.id} +{product.name} +{product.parentCategory==null?appLocaleName(userContext,"NotAssigned"):`${product.parentCategory.displayName}(${product.parentCategory.id})`} + + showTransferModel(targetComponent,"父类","levelThreeCategory",ProductService.requestCandidateParentCategory, + ProductService.transferToAnotherParentCategory,"anotherParentCategoryId",product.parentCategory?product.parentCategory.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{product.origin} +{product.remark} +{product.brand} +{ moment(product.lastUpdateTime).format('YYYY-MM-DD')} + + {buildTransferModal(product,targetComponent)} + + ) + +} + + + -const ProductBase={menuData,displayColumns,fieldLabels} +const ProductBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default ProductBase diff --git a/bizui/src/bizcomponents/product/Product.createform.js b/bizui/src/bizcomponents/product/Product.createform.js index 6305f73a0..3a06a791d 100644 --- a/bizui/src/bizcomponents/product/Product.createform.js +++ b/bizui/src/bizcomponents/product/Product.createform.js @@ -211,7 +211,7 @@ class ProductCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -221,7 +221,7 @@ class ProductCreateForm extends Component { {getFieldDecorator('origin', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -231,7 +231,7 @@ class ProductCreateForm extends Component { {getFieldDecorator('remark', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -241,7 +241,7 @@ class ProductCreateForm extends Component { {getFieldDecorator('brand', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/product/Product.dashboard.js b/bizui/src/bizcomponents/product/Product.dashboard.js index 4a587a883..2c0ab2b72 100644 --- a/bizui/src/bizcomponents/product/Product.dashboard.js +++ b/bizui/src/bizcomponents/product/Product.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -147,6 +147,7 @@ class ProductDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -155,13 +156,17 @@ class ProductDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/product/Product.model.js b/bizui/src/bizcomponents/product/Product.model.js index fb8c95447..4351fcd0e 100644 --- a/bizui/src/bizcomponents/product/Product.model.js +++ b/bizui/src/bizcomponents/product/Product.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/product/${id}/list/\SkuList/SKU+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/product/${id}/list/SkuList/SKU+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateSku({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/product/${id}/list/\SkuList/SKU列表`, state: newPlayload } + const location = { pathname: `/product/${id}/list/SkuList/SKU列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextSkuUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/product/Product.permission.js b/bizui/src/bizcomponents/product/Product.permission.js new file mode 100644 index 000000000..73be6433e --- /dev/null +++ b/bizui/src/bizcomponents/product/Product.permission.js @@ -0,0 +1,88 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './Product.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (product,targetComponent) =>{ + const userContext = null + return ( + +{product.id} +{product.name} +{product.origin} +{product.remark} +{product.brand} +{ moment(product.lastUpdateTime).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = product => { + const {ProductBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class ProductPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const product = this.props.product; + const { id,displayName, skuCount } = product + const cardsData = {cardsName:"产品",cardsFor: "product",cardsSource: product, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + product: state._product, +}))(Form.create()(ProductPermission)) + diff --git a/bizui/src/bizcomponents/product/Product.permission.less b/bizui/src/bizcomponents/product/Product.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/product/Product.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/product/Product.preference.js b/bizui/src/bizcomponents/product/Product.preference.js index f7dcfdfde..ff9550378 100644 --- a/bizui/src/bizcomponents/product/Product.preference.js +++ b/bizui/src/bizcomponents/product/Product.preference.js @@ -310,8 +310,12 @@ class ProductPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, skuCount } = this.props.product - const cardsData = {cardsName:"产品",cardsFor: "product",cardsSource: this.props.product, + const product = this.props.product; + const { id,displayName, skuCount } = product + + + + const cardsData = {cardsName:"产品",cardsFor: "product",cardsSource: product, subItems: [ ], diff --git a/bizui/src/bizcomponents/product/Product.profile.js b/bizui/src/bizcomponents/product/Product.profile.js new file mode 100644 index 000000000..9876d7b89 --- /dev/null +++ b/bizui/src/bizcomponents/product/Product.profile.js @@ -0,0 +1,95 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './Product.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (product,targetComponent) =>{ + const userContext = null + return ( + +{product.id} +{product.name} +{product.origin} +{product.remark} +{product.brand} +{ moment(product.lastUpdateTime).format('YYYY-MM-DD')} + + + ) +} + + + +class ProductProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const product = this.props.product; + const { id,displayName, skuCount } = product + + const cardsData = {cardsName:"产品",cardsFor: "product",cardsSource: product, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + product: state._product, +}))(Form.create()(ProductProfile)) + diff --git a/bizui/src/bizcomponents/product/Product.profile.less b/bizui/src/bizcomponents/product/Product.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/product/Product.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/product/Product.search.js b/bizui/src/bizcomponents/product/Product.search.js index 47b0c9cf6..e1ebabdea 100644 --- a/bizui/src/bizcomponents/product/Product.search.js +++ b/bizui/src/bizcomponents/product/Product.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/product/Product.searchform.js b/bizui/src/bizcomponents/product/Product.searchform.js index 750fb848b..11190daa3 100644 --- a/bizui/src/bizcomponents/product/Product.searchform.js +++ b/bizui/src/bizcomponents/product/Product.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`productList.searchField`] = fieldName - value[`productList.searchVerb`] = searchVerb - value[`productList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,14 +127,15 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'parentCategory')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'origin')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'remark')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'brand')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'parentCategory')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'origin')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'remark')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'brand')) console.log("the final parameter", paramList) @@ -150,11 +151,12 @@ componentDidMount() { } - params['productList'] = 1 - params['productList.orderBy.0'] = "id" - params['productList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -209,8 +211,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -304,8 +306,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/product/Product.table.js b/bizui/src/bizcomponents/product/Product.table.js index 73b890e9f..2174f6c05 100644 --- a/bizui/src/bizcomponents/product/Product.table.js +++ b/bizui/src/bizcomponents/product/Product.table.js @@ -40,24 +40,53 @@ class ProductTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = ProductBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class ProductTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class ProductTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/product/Product.updateform.js b/bizui/src/bizcomponents/product/Product.updateform.js index 4d85ee61a..5fa68a8c9 100644 --- a/bizui/src/bizcomponents/product/Product.updateform.js +++ b/bizui/src/bizcomponents/product/Product.updateform.js @@ -263,7 +263,7 @@ class ProductUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -275,7 +275,7 @@ class ProductUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -287,7 +287,7 @@ class ProductUpdateForm extends Component { initialValue: selectedRow.origin, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -299,7 +299,7 @@ class ProductUpdateForm extends Component { initialValue: selectedRow.remark, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -311,7 +311,7 @@ class ProductUpdateForm extends Component { initialValue: selectedRow.brand, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.app.js b/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.app.js index 1e8002858..2069d0df2 100644 --- a/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.app.js +++ b/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class ProductSupplyDurationBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -157,12 +166,14 @@ class ProductSupplyDurationBizApp extends React.PureComponent { buildRouters = () =>{ const {ProductSupplyDurationDashboard} = GlobalComponents - const {ProductSupplyDurationPreference} = GlobalComponents + const {ProductSupplyDurationPermission} = GlobalComponents + const {ProductSupplyDurationProfile} = GlobalComponents const routers=[ {path:"/productSupplyDuration/:id/dashboard", component: ProductSupplyDurationDashboard}, - {path:"/productSupplyDuration/:id/preference", component: ProductSupplyDurationPreference}, + {path:"/productSupplyDuration/:id/profile", component: ProductSupplyDurationProfile}, + {path:"/productSupplyDuration/:id/permission", component: ProductSupplyDurationPermission}, diff --git a/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.associateform.js b/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.associateform.js index 0a5b0e46c..d30d4eb5e 100644 --- a/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.associateform.js +++ b/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.associateform.js @@ -20,7 +20,7 @@ const testValues = {}; const testValues = { quantity: '100', duration: '现货', - price: '9086.19', + price: '9102.08', productId: 'SP000001', } */ @@ -140,7 +140,7 @@ class ProductSupplyDurationAssociateForm extends Component { {getFieldDecorator('quantity', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -150,7 +150,7 @@ class ProductSupplyDurationAssociateForm extends Component { {getFieldDecorator('duration', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -160,7 +160,7 @@ class ProductSupplyDurationAssociateForm extends Component { {getFieldDecorator('price', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.associateform.less b/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.associateform.less +++ b/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.base.js b/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.base.js index d95d05687..4ff1247a6 100644 --- a/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.base.js +++ b/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.base.js @@ -1,10 +1,33 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"产品供应时间", menuFor: "productSupplyDuration", subItems: [ @@ -12,90 +35,53 @@ const menuData = {menuName:"产品供应时间", menuFor: "productSupplyDuration ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + quantity: '数量', + duration: '持续时间', + price: '价格', + product: '产品', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record) }, - { title: '数量', debugtype: 'int', dataIndex: 'quantity', width: '7',render: (text, record)=>renderTextCell(text,record) }, - { title: '持续时间', debugtype: 'string', dataIndex: 'duration', width: '6',render: (text, record)=>renderTextCell(text,record) }, - { title: '价格', dataIndex: 'price', className:'money', render: (text, record) => renderMoneyCell(text, record) }, - { title: '产品', dataIndex: 'product', render: (text, record) => renderReferenceCell(text, record)}, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.quantity, debugtype: 'int', dataIndex: 'quantity', width: '7',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.duration, debugtype: 'string', dataIndex: 'duration', width: '6',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.price, dataIndex: 'price', className:'money', render: (text, record) => renderMoneyCell(text, record), sorter: true }, + { title: fieldLabels.product, dataIndex: 'product', render: (text, record) => renderReferenceCell(text, record), sorter:true}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({productSupplyDuration,targetComponent})=>{ -const fieldLabels = { - id: '序号', - quantity: '数量', - duration: '持续时间', - price: '价格', - product: '产品', + + + const {ProductSupplyDurationService} = GlobalComponents + // const userContext = null + return ( + +{productSupplyDuration.id} +{productSupplyDuration.quantity} +{productSupplyDuration.duration} +{productSupplyDuration.price} +{productSupplyDuration.product==null?appLocaleName(userContext,"NotAssigned"):`${productSupplyDuration.product.displayName}(${productSupplyDuration.product.id})`} + + showTransferModel(targetComponent,"产品","supplierProduct",ProductSupplyDurationService.requestCandidateProduct, + ProductSupplyDurationService.transferToAnotherProduct,"anotherProductId",productSupplyDuration.product?productSupplyDuration.product.id:"")} + style={{fontSize: 20,color:"red"}} /> + + + {buildTransferModal(productSupplyDuration,targetComponent)} + + ) } + + -const ProductSupplyDurationBase={menuData,displayColumns,fieldLabels} +const ProductSupplyDurationBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default ProductSupplyDurationBase diff --git a/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.createform.js b/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.createform.js index 4d5e14808..de08ebefe 100644 --- a/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.createform.js +++ b/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.createform.js @@ -19,7 +19,7 @@ const testValues = {}; const testValues = { quantity: '100', duration: '现货', - price: '8449.53', + price: '8554.70', productId: 'SP000001', } */ @@ -209,7 +209,7 @@ class ProductSupplyDurationCreateForm extends Component { {getFieldDecorator('quantity', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -219,7 +219,7 @@ class ProductSupplyDurationCreateForm extends Component { {getFieldDecorator('duration', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -229,7 +229,7 @@ class ProductSupplyDurationCreateForm extends Component { {getFieldDecorator('price', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.dashboard.js b/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.dashboard.js index 669a8e722..6929ba1da 100644 --- a/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.dashboard.js +++ b/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -143,6 +143,7 @@ class ProductSupplyDurationDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -151,13 +152,17 @@ class ProductSupplyDurationDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.model.js b/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.model.js index b06837f77..4ff2c5a62 100644 --- a/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.model.js +++ b/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' diff --git a/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.permission.js b/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.permission.js new file mode 100644 index 000000000..2a931baea --- /dev/null +++ b/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.permission.js @@ -0,0 +1,86 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './ProductSupplyDuration.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (productSupplyDuration,targetComponent) =>{ + const userContext = null + return ( + +{productSupplyDuration.id} +{productSupplyDuration.quantity} +{productSupplyDuration.duration} +{productSupplyDuration.price} + + + ) +} + + +const renderPermissionSetting = productSupplyDuration => { + const {ProductSupplyDurationBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class ProductSupplyDurationPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const productSupplyDuration = this.props.productSupplyDuration; + const { id,displayName, } = productSupplyDuration + const cardsData = {cardsName:"产品供应时间",cardsFor: "productSupplyDuration",cardsSource: productSupplyDuration, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + productSupplyDuration: state._productSupplyDuration, +}))(Form.create()(ProductSupplyDurationPermission)) + diff --git a/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.permission.less b/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.preference.js b/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.preference.js index 737972f63..91f482460 100644 --- a/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.preference.js +++ b/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.preference.js @@ -307,8 +307,12 @@ class ProductSupplyDurationPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, } = this.props.productSupplyDuration - const cardsData = {cardsName:"产品供应时间",cardsFor: "productSupplyDuration",cardsSource: this.props.productSupplyDuration, + const productSupplyDuration = this.props.productSupplyDuration; + const { id,displayName, } = productSupplyDuration + + + + const cardsData = {cardsName:"产品供应时间",cardsFor: "productSupplyDuration",cardsSource: productSupplyDuration, subItems: [ ], diff --git a/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.profile.js b/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.profile.js new file mode 100644 index 000000000..955a27ec0 --- /dev/null +++ b/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.profile.js @@ -0,0 +1,93 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './ProductSupplyDuration.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (productSupplyDuration,targetComponent) =>{ + const userContext = null + return ( + +{productSupplyDuration.id} +{productSupplyDuration.quantity} +{productSupplyDuration.duration} +{productSupplyDuration.price} + + + ) +} + + + +class ProductSupplyDurationProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const productSupplyDuration = this.props.productSupplyDuration; + const { id,displayName, } = productSupplyDuration + + const cardsData = {cardsName:"产品供应时间",cardsFor: "productSupplyDuration",cardsSource: productSupplyDuration, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + productSupplyDuration: state._productSupplyDuration, +}))(Form.create()(ProductSupplyDurationProfile)) + diff --git a/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.profile.less b/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.search.js b/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.search.js index 3ba44f994..fcbd74a2f 100644 --- a/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.search.js +++ b/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.searchform.js b/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.searchform.js index a045124b4..07d588794 100644 --- a/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.searchform.js +++ b/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`productSupplyDurationList.searchField`] = fieldName - value[`productSupplyDurationList.searchVerb`] = searchVerb - value[`productSupplyDurationList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,11 +127,12 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'duration')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'product')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'duration')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'product')) console.log("the final parameter", paramList) @@ -147,11 +148,12 @@ componentDidMount() { } - params['productSupplyDurationList'] = 1 - params['productSupplyDurationList.orderBy.0'] = "id" - params['productSupplyDurationList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -206,8 +208,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -277,8 +279,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.table.js b/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.table.js index 658bd4dcf..2131d3572 100644 --- a/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.table.js +++ b/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.table.js @@ -40,24 +40,53 @@ class ProductSupplyDurationTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = ProductSupplyDurationBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class ProductSupplyDurationTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class ProductSupplyDurationTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.updateform.js b/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.updateform.js index 9d2de0ba0..f55aec753 100644 --- a/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.updateform.js +++ b/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.updateform.js @@ -261,7 +261,7 @@ class ProductSupplyDurationUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class ProductSupplyDurationUpdateForm extends Component { initialValue: selectedRow.quantity, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -285,7 +285,7 @@ class ProductSupplyDurationUpdateForm extends Component { initialValue: selectedRow.duration, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -297,7 +297,7 @@ class ProductSupplyDurationUpdateForm extends Component { initialValue: selectedRow.price, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/professioninterview/ProfessionInterview.app.js b/bizui/src/bizcomponents/professioninterview/ProfessionInterview.app.js index 9171cb9c9..54f5d2b87 100644 --- a/bizui/src/bizcomponents/professioninterview/ProfessionInterview.app.js +++ b/bizui/src/bizcomponents/professioninterview/ProfessionInterview.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class ProfessionInterviewBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class ProfessionInterviewBizApp extends React.PureComponent { buildRouters = () =>{ const {ProfessionInterviewDashboard} = GlobalComponents - const {ProfessionInterviewPreference} = GlobalComponents + const {ProfessionInterviewPermission} = GlobalComponents + const {ProfessionInterviewProfile} = GlobalComponents const routers=[ {path:"/professionInterview/:id/dashboard", component: ProfessionInterviewDashboard}, - {path:"/professionInterview/:id/preference", component: ProfessionInterviewPreference}, + {path:"/professionInterview/:id/profile", component: ProfessionInterviewProfile}, + {path:"/professionInterview/:id/permission", component: ProfessionInterviewPermission}, diff --git a/bizui/src/bizcomponents/professioninterview/ProfessionInterview.associateform.js b/bizui/src/bizcomponents/professioninterview/ProfessionInterview.associateform.js index 31d34fbcf..2173f83b1 100644 --- a/bizui/src/bizcomponents/professioninterview/ProfessionInterview.associateform.js +++ b/bizui/src/bizcomponents/professioninterview/ProfessionInterview.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { who: '技术部', - interviewTime: '2017-08-19', + interviewTime: '2018-09-10', comments: '能力各方面表现不错,进入下一轮', } */ @@ -140,7 +140,7 @@ class ProfessionInterviewAssociateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -150,7 +150,7 @@ class ProfessionInterviewAssociateForm extends Component { {getFieldDecorator('interviewTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -160,7 +160,7 @@ class ProfessionInterviewAssociateForm extends Component { {getFieldDecorator('comments', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/professioninterview/ProfessionInterview.associateform.less b/bizui/src/bizcomponents/professioninterview/ProfessionInterview.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/professioninterview/ProfessionInterview.associateform.less +++ b/bizui/src/bizcomponents/professioninterview/ProfessionInterview.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/professioninterview/ProfessionInterview.base.js b/bizui/src/bizcomponents/professioninterview/ProfessionInterview.base.js index 5994cfcd7..8336b3219 100644 --- a/bizui/src/bizcomponents/professioninterview/ProfessionInterview.base.js +++ b/bizui/src/bizcomponents/professioninterview/ProfessionInterview.base.js @@ -1,100 +1,80 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"专业面试", menuFor: "professionInterview", subItems: [ - {name: 'employeeList', displayName:'员工', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'employeeList', displayName:'员工', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + who: '谁', + interviewTime: '面试时间', + comments: '评论', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'professionInterview') }, - { title: '谁', debugtype: 'string', dataIndex: 'who', width: '7',render: (text, record)=>renderTextCell(text,record) }, - { title: '面试时间', dataIndex: 'interviewTime', render: (text, record) =>renderDateCell(text,record) }, - { title: '评论', debugtype: 'string', dataIndex: 'comments', width: '19',render: (text, record)=>renderTextCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'professionInterview') , sorter: true }, + { title: fieldLabels.who, debugtype: 'string', dataIndex: 'who', width: '7',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.interviewTime, dataIndex: 'interviewTime', render: (text, record) =>renderDateCell(text,record), sorter: true }, + { title: fieldLabels.comments, debugtype: 'string', dataIndex: 'comments', width: '19',render: (text, record)=>renderTextCell(text,record)}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({professionInterview,targetComponent})=>{ -const fieldLabels = { - id: '序号', - who: '谁', - interviewTime: '面试时间', - comments: '评论', + + + const {ProfessionInterviewService} = GlobalComponents + // const userContext = null + return ( + +{professionInterview.id} +{professionInterview.who} +{ moment(professionInterview.interviewTime).format('YYYY-MM-DD')} +{professionInterview.comments} + + {buildTransferModal(professionInterview,targetComponent)} + + ) } + + -const ProfessionInterviewBase={menuData,displayColumns,fieldLabels} +const ProfessionInterviewBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default ProfessionInterviewBase diff --git a/bizui/src/bizcomponents/professioninterview/ProfessionInterview.createform.js b/bizui/src/bizcomponents/professioninterview/ProfessionInterview.createform.js index 293f559e7..8bb61e7c3 100644 --- a/bizui/src/bizcomponents/professioninterview/ProfessionInterview.createform.js +++ b/bizui/src/bizcomponents/professioninterview/ProfessionInterview.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { who: '技术部', - interviewTime: '2016-12-25', + interviewTime: '2019-03-22', comments: '能力各方面表现不错,进入下一轮', } */ @@ -208,7 +208,7 @@ class ProfessionInterviewCreateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -218,7 +218,7 @@ class ProfessionInterviewCreateForm extends Component { {getFieldDecorator('interviewTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -228,7 +228,7 @@ class ProfessionInterviewCreateForm extends Component { {getFieldDecorator('comments', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/professioninterview/ProfessionInterview.dashboard.js b/bizui/src/bizcomponents/professioninterview/ProfessionInterview.dashboard.js index 4c929698e..b6f6cc679 100644 --- a/bizui/src/bizcomponents/professioninterview/ProfessionInterview.dashboard.js +++ b/bizui/src/bizcomponents/professioninterview/ProfessionInterview.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -138,6 +138,7 @@ class ProfessionInterviewDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -146,13 +147,17 @@ class ProfessionInterviewDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/professioninterview/ProfessionInterview.model.js b/bizui/src/bizcomponents/professioninterview/ProfessionInterview.model.js index 40e6415da..fd0a97492 100644 --- a/bizui/src/bizcomponents/professioninterview/ProfessionInterview.model.js +++ b/bizui/src/bizcomponents/professioninterview/ProfessionInterview.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/professionInterview/${id}/list/\EmployeeList/员工+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/professionInterview/${id}/list/EmployeeList/员工+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateEmployee({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/professionInterview/${id}/list/\EmployeeList/员工列表`, state: newPlayload } + const location = { pathname: `/professionInterview/${id}/list/EmployeeList/员工列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextEmployeeUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/professioninterview/ProfessionInterview.permission.js b/bizui/src/bizcomponents/professioninterview/ProfessionInterview.permission.js new file mode 100644 index 000000000..e0e22c7f3 --- /dev/null +++ b/bizui/src/bizcomponents/professioninterview/ProfessionInterview.permission.js @@ -0,0 +1,86 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './ProfessionInterview.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (professionInterview,targetComponent) =>{ + const userContext = null + return ( + +{professionInterview.id} +{professionInterview.who} +{ moment(professionInterview.interviewTime).format('YYYY-MM-DD')} +{professionInterview.comments} + + + ) +} + + +const renderPermissionSetting = professionInterview => { + const {ProfessionInterviewBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class ProfessionInterviewPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const professionInterview = this.props.professionInterview; + const { id,displayName, employeeCount } = professionInterview + const cardsData = {cardsName:"专业面试",cardsFor: "professionInterview",cardsSource: professionInterview, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + professionInterview: state._professionInterview, +}))(Form.create()(ProfessionInterviewPermission)) + diff --git a/bizui/src/bizcomponents/professioninterview/ProfessionInterview.permission.less b/bizui/src/bizcomponents/professioninterview/ProfessionInterview.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/professioninterview/ProfessionInterview.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/professioninterview/ProfessionInterview.preference.js b/bizui/src/bizcomponents/professioninterview/ProfessionInterview.preference.js index f6370489e..6c4acd4dc 100644 --- a/bizui/src/bizcomponents/professioninterview/ProfessionInterview.preference.js +++ b/bizui/src/bizcomponents/professioninterview/ProfessionInterview.preference.js @@ -301,8 +301,12 @@ class ProfessionInterviewPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, employeeCount } = this.props.professionInterview - const cardsData = {cardsName:"专业面试",cardsFor: "professionInterview",cardsSource: this.props.professionInterview, + const professionInterview = this.props.professionInterview; + const { id,displayName, employeeCount } = professionInterview + + + + const cardsData = {cardsName:"专业面试",cardsFor: "professionInterview",cardsSource: professionInterview, subItems: [ ], diff --git a/bizui/src/bizcomponents/professioninterview/ProfessionInterview.profile.js b/bizui/src/bizcomponents/professioninterview/ProfessionInterview.profile.js new file mode 100644 index 000000000..a7d48bfad --- /dev/null +++ b/bizui/src/bizcomponents/professioninterview/ProfessionInterview.profile.js @@ -0,0 +1,93 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './ProfessionInterview.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (professionInterview,targetComponent) =>{ + const userContext = null + return ( + +{professionInterview.id} +{professionInterview.who} +{ moment(professionInterview.interviewTime).format('YYYY-MM-DD')} +{professionInterview.comments} + + + ) +} + + + +class ProfessionInterviewProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const professionInterview = this.props.professionInterview; + const { id,displayName, employeeCount } = professionInterview + + const cardsData = {cardsName:"专业面试",cardsFor: "professionInterview",cardsSource: professionInterview, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + professionInterview: state._professionInterview, +}))(Form.create()(ProfessionInterviewProfile)) + diff --git a/bizui/src/bizcomponents/professioninterview/ProfessionInterview.profile.less b/bizui/src/bizcomponents/professioninterview/ProfessionInterview.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/professioninterview/ProfessionInterview.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/professioninterview/ProfessionInterview.search.js b/bizui/src/bizcomponents/professioninterview/ProfessionInterview.search.js index a6a330635..99b4b814c 100644 --- a/bizui/src/bizcomponents/professioninterview/ProfessionInterview.search.js +++ b/bizui/src/bizcomponents/professioninterview/ProfessionInterview.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/professioninterview/ProfessionInterview.searchform.js b/bizui/src/bizcomponents/professioninterview/ProfessionInterview.searchform.js index d1e95f22d..0d0e5ee08 100644 --- a/bizui/src/bizcomponents/professioninterview/ProfessionInterview.searchform.js +++ b/bizui/src/bizcomponents/professioninterview/ProfessionInterview.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`professionInterviewList.searchField`] = fieldName - value[`professionInterviewList.searchVerb`] = searchVerb - value[`professionInterviewList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,11 +127,12 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'who')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'comments')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'who')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'comments')) console.log("the final parameter", paramList) @@ -147,11 +148,12 @@ componentDidMount() { } - params['professionInterviewList'] = 1 - params['professionInterviewList.orderBy.0'] = "id" - params['professionInterviewList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -206,8 +208,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -270,8 +272,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/professioninterview/ProfessionInterview.table.js b/bizui/src/bizcomponents/professioninterview/ProfessionInterview.table.js index ada013913..1989aa0b0 100644 --- a/bizui/src/bizcomponents/professioninterview/ProfessionInterview.table.js +++ b/bizui/src/bizcomponents/professioninterview/ProfessionInterview.table.js @@ -40,24 +40,53 @@ class ProfessionInterviewTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = ProfessionInterviewBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class ProfessionInterviewTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class ProfessionInterviewTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/professioninterview/ProfessionInterview.updateform.js b/bizui/src/bizcomponents/professioninterview/ProfessionInterview.updateform.js index c3d37e5d6..bc58e72a3 100644 --- a/bizui/src/bizcomponents/professioninterview/ProfessionInterview.updateform.js +++ b/bizui/src/bizcomponents/professioninterview/ProfessionInterview.updateform.js @@ -262,7 +262,7 @@ class ProfessionInterviewUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class ProfessionInterviewUpdateForm extends Component { initialValue: selectedRow.who, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class ProfessionInterviewUpdateForm extends Component { initialValue: selectedRow.interviewTime, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -298,7 +298,7 @@ class ProfessionInterviewUpdateForm extends Component { initialValue: selectedRow.comments, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.app.js b/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.app.js index f8dace32e..fd26bdca4 100644 --- a/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.app.js +++ b/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class ProvinceCenterDepartmentBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class ProvinceCenterDepartmentBizApp extends React.PureComponent { buildRouters = () =>{ const {ProvinceCenterDepartmentDashboard} = GlobalComponents - const {ProvinceCenterDepartmentPreference} = GlobalComponents + const {ProvinceCenterDepartmentPermission} = GlobalComponents + const {ProvinceCenterDepartmentProfile} = GlobalComponents const routers=[ {path:"/provinceCenterDepartment/:id/dashboard", component: ProvinceCenterDepartmentDashboard}, - {path:"/provinceCenterDepartment/:id/preference", component: ProvinceCenterDepartmentPreference}, + {path:"/provinceCenterDepartment/:id/profile", component: ProvinceCenterDepartmentProfile}, + {path:"/provinceCenterDepartment/:id/permission", component: ProvinceCenterDepartmentPermission}, diff --git a/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.associateform.js b/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.associateform.js index 1009be3c9..f4236773c 100644 --- a/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.associateform.js +++ b/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { name: '供应链部', - founded: '2018-07-14', + founded: '2017-05-03', manager: '刘强', provinceCenterId: 'RSPC000001', } @@ -141,7 +141,7 @@ class ProvinceCenterDepartmentAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -151,7 +151,7 @@ class ProvinceCenterDepartmentAssociateForm extends Component { {getFieldDecorator('founded', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -161,7 +161,7 @@ class ProvinceCenterDepartmentAssociateForm extends Component { {getFieldDecorator('manager', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.associateform.less b/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.associateform.less +++ b/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.base.js b/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.base.js index 079821ac0..33a7c12fb 100644 --- a/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.base.js +++ b/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.base.js @@ -1,102 +1,88 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"省中心", menuFor: "provinceCenterDepartment", subItems: [ - {name: 'provinceCenterEmployeeList', displayName:'省中心员工', icon:'align-center',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'provinceCenterEmployeeList', displayName:'省中心员工', icon:'align-center',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + name: '名称', + founded: '成立', + provinceCenter: '省中心', + manager: '经理', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'provinceCenterDepartment') }, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '9',render: (text, record)=>renderTextCell(text,record) }, - { title: '成立', dataIndex: 'founded', render: (text, record) =>renderDateCell(text,record) }, - { title: '省中心', dataIndex: 'provinceCenter', render: (text, record) => renderReferenceCell(text, record)}, - { title: '经理', debugtype: 'string', dataIndex: 'manager', width: '7',render: (text, record)=>renderTextCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'provinceCenterDepartment') , sorter: true }, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '9',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.founded, dataIndex: 'founded', render: (text, record) =>renderDateCell(text,record), sorter: true }, + { title: fieldLabels.provinceCenter, dataIndex: 'provinceCenter', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.manager, debugtype: 'string', dataIndex: 'manager', width: '7',render: (text, record)=>renderTextCell(text,record)}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({provinceCenterDepartment,targetComponent})=>{ -const fieldLabels = { - id: '序号', - name: '名称', - founded: '成立', - provinceCenter: '省中心', - manager: '经理', + + + const {ProvinceCenterDepartmentService} = GlobalComponents + // const userContext = null + return ( + +{provinceCenterDepartment.id} +{provinceCenterDepartment.name} +{ moment(provinceCenterDepartment.founded).format('YYYY-MM-DD')} +{provinceCenterDepartment.provinceCenter==null?appLocaleName(userContext,"NotAssigned"):`${provinceCenterDepartment.provinceCenter.displayName}(${provinceCenterDepartment.provinceCenter.id})`} + + showTransferModel(targetComponent,"省中心","retailStoreProvinceCenter",ProvinceCenterDepartmentService.requestCandidateProvinceCenter, + ProvinceCenterDepartmentService.transferToAnotherProvinceCenter,"anotherProvinceCenterId",provinceCenterDepartment.provinceCenter?provinceCenterDepartment.provinceCenter.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{provinceCenterDepartment.manager} + + {buildTransferModal(provinceCenterDepartment,targetComponent)} + + ) } + + -const ProvinceCenterDepartmentBase={menuData,displayColumns,fieldLabels} +const ProvinceCenterDepartmentBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default ProvinceCenterDepartmentBase diff --git a/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.createform.js b/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.createform.js index 535323d98..8039a78f0 100644 --- a/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.createform.js +++ b/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { name: '供应链部', - founded: '2017-12-07', + founded: '2016-10-05', manager: '刘强', provinceCenterId: 'RSPC000001', } @@ -209,7 +209,7 @@ class ProvinceCenterDepartmentCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -219,7 +219,7 @@ class ProvinceCenterDepartmentCreateForm extends Component { {getFieldDecorator('founded', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -229,7 +229,7 @@ class ProvinceCenterDepartmentCreateForm extends Component { {getFieldDecorator('manager', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.dashboard.js b/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.dashboard.js index e1e890204..9ab9628ab 100644 --- a/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.dashboard.js +++ b/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -144,6 +144,7 @@ class ProvinceCenterDepartmentDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -152,13 +153,17 @@ class ProvinceCenterDepartmentDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.model.js b/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.model.js index 6e69e1505..a18f6c649 100644 --- a/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.model.js +++ b/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/provinceCenterDepartment/${id}/list/\ProvinceCenterEmployeeList/省中心员工+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/provinceCenterDepartment/${id}/list/ProvinceCenterEmployeeList/省中心员工+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateProvinceCenterEmployee({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/provinceCenterDepartment/${id}/list/\ProvinceCenterEmployeeList/省中心员工列表`, state: newPlayload } + const location = { pathname: `/provinceCenterDepartment/${id}/list/ProvinceCenterEmployeeList/省中心员工列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextProvinceCenterEmployeeUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.permission.js b/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.permission.js new file mode 100644 index 000000000..1ee6da76f --- /dev/null +++ b/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.permission.js @@ -0,0 +1,86 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './ProvinceCenterDepartment.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (provinceCenterDepartment,targetComponent) =>{ + const userContext = null + return ( + +{provinceCenterDepartment.id} +{provinceCenterDepartment.name} +{ moment(provinceCenterDepartment.founded).format('YYYY-MM-DD')} +{provinceCenterDepartment.manager} + + + ) +} + + +const renderPermissionSetting = provinceCenterDepartment => { + const {ProvinceCenterDepartmentBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class ProvinceCenterDepartmentPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const provinceCenterDepartment = this.props.provinceCenterDepartment; + const { id,displayName, provinceCenterEmployeeCount } = provinceCenterDepartment + const cardsData = {cardsName:"省中心",cardsFor: "provinceCenterDepartment",cardsSource: provinceCenterDepartment, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + provinceCenterDepartment: state._provinceCenterDepartment, +}))(Form.create()(ProvinceCenterDepartmentPermission)) + diff --git a/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.permission.less b/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.preference.js b/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.preference.js index d2ec0f562..219cb3cec 100644 --- a/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.preference.js +++ b/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.preference.js @@ -307,8 +307,12 @@ class ProvinceCenterDepartmentPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, provinceCenterEmployeeCount } = this.props.provinceCenterDepartment - const cardsData = {cardsName:"省中心",cardsFor: "provinceCenterDepartment",cardsSource: this.props.provinceCenterDepartment, + const provinceCenterDepartment = this.props.provinceCenterDepartment; + const { id,displayName, provinceCenterEmployeeCount } = provinceCenterDepartment + + + + const cardsData = {cardsName:"省中心",cardsFor: "provinceCenterDepartment",cardsSource: provinceCenterDepartment, subItems: [ ], diff --git a/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.profile.js b/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.profile.js new file mode 100644 index 000000000..40995f915 --- /dev/null +++ b/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.profile.js @@ -0,0 +1,93 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './ProvinceCenterDepartment.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (provinceCenterDepartment,targetComponent) =>{ + const userContext = null + return ( + +{provinceCenterDepartment.id} +{provinceCenterDepartment.name} +{ moment(provinceCenterDepartment.founded).format('YYYY-MM-DD')} +{provinceCenterDepartment.manager} + + + ) +} + + + +class ProvinceCenterDepartmentProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const provinceCenterDepartment = this.props.provinceCenterDepartment; + const { id,displayName, provinceCenterEmployeeCount } = provinceCenterDepartment + + const cardsData = {cardsName:"省中心",cardsFor: "provinceCenterDepartment",cardsSource: provinceCenterDepartment, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + provinceCenterDepartment: state._provinceCenterDepartment, +}))(Form.create()(ProvinceCenterDepartmentProfile)) + diff --git a/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.profile.less b/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.search.js b/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.search.js index bab7283d7..8e74192bb 100644 --- a/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.search.js +++ b/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.searchform.js b/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.searchform.js index 71c38d351..49f86b9e1 100644 --- a/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.searchform.js +++ b/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`provinceCenterDepartmentList.searchField`] = fieldName - value[`provinceCenterDepartmentList.searchVerb`] = searchVerb - value[`provinceCenterDepartmentList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,12 +127,13 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'provinceCenter')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'manager')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'provinceCenter')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'manager')) console.log("the final parameter", paramList) @@ -148,11 +149,12 @@ componentDidMount() { } - params['provinceCenterDepartmentList'] = 1 - params['provinceCenterDepartmentList.orderBy.0'] = "id" - params['provinceCenterDepartmentList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -207,8 +209,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -286,8 +288,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.table.js b/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.table.js index 6a12261f9..423c07cfe 100644 --- a/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.table.js +++ b/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.table.js @@ -40,24 +40,53 @@ class ProvinceCenterDepartmentTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = ProvinceCenterDepartmentBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class ProvinceCenterDepartmentTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class ProvinceCenterDepartmentTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.updateform.js b/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.updateform.js index 5f4091d3f..6e90571ec 100644 --- a/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.updateform.js +++ b/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.updateform.js @@ -262,7 +262,7 @@ class ProvinceCenterDepartmentUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class ProvinceCenterDepartmentUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class ProvinceCenterDepartmentUpdateForm extends Component { initialValue: selectedRow.founded, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -298,7 +298,7 @@ class ProvinceCenterDepartmentUpdateForm extends Component { initialValue: selectedRow.manager, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.app.js b/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.app.js index 2636a1e49..02b52ea1d 100644 --- a/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.app.js +++ b/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class ProvinceCenterEmployeeBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -157,12 +166,14 @@ class ProvinceCenterEmployeeBizApp extends React.PureComponent { buildRouters = () =>{ const {ProvinceCenterEmployeeDashboard} = GlobalComponents - const {ProvinceCenterEmployeePreference} = GlobalComponents + const {ProvinceCenterEmployeePermission} = GlobalComponents + const {ProvinceCenterEmployeeProfile} = GlobalComponents const routers=[ {path:"/provinceCenterEmployee/:id/dashboard", component: ProvinceCenterEmployeeDashboard}, - {path:"/provinceCenterEmployee/:id/preference", component: ProvinceCenterEmployeePreference}, + {path:"/provinceCenterEmployee/:id/profile", component: ProvinceCenterEmployeeProfile}, + {path:"/provinceCenterEmployee/:id/permission", component: ProvinceCenterEmployeePermission}, diff --git a/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.associateform.js b/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.associateform.js index ef908c82b..13ef06e10 100644 --- a/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.associateform.js +++ b/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.associateform.js @@ -21,7 +21,7 @@ const testValues = { name: '刘强', mobile: '13999998888', email: 'wangdehong@yatang.cn', - founded: '2017-08-20', + founded: '2018-04-20', departmentId: 'PCD000001', provinceCenterId: 'RSPC000001', } @@ -142,7 +142,7 @@ class ProvinceCenterEmployeeAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -152,7 +152,7 @@ class ProvinceCenterEmployeeAssociateForm extends Component { {getFieldDecorator('mobile', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -162,7 +162,7 @@ class ProvinceCenterEmployeeAssociateForm extends Component { {getFieldDecorator('email', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -172,7 +172,7 @@ class ProvinceCenterEmployeeAssociateForm extends Component { {getFieldDecorator('founded', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.associateform.less b/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.associateform.less +++ b/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.base.js b/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.base.js index 060df8024..fe125b29e 100644 --- a/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.base.js +++ b/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.base.js @@ -1,10 +1,33 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"省中心员工", menuFor: "provinceCenterEmployee", subItems: [ @@ -12,81 +35,6 @@ const menuData = {menuName:"省中心员工", menuFor: "provinceCenterEmployee", ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) - -} - -const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record) }, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '7',render: (text, record)=>renderTextCell(text,record) }, - { title: '手机', debugtype: 'string_china_mobile_phone', dataIndex: 'mobile', width: '15',render: (text, record)=>renderTextCell(text,record) }, - { title: '电子邮件', debugtype: 'string_email', dataIndex: 'email', width: '24',render: (text, record)=>renderTextCell(text,record) }, - { title: '成立', dataIndex: 'founded', render: (text, record) =>renderDateCell(text,record) }, - { title: '部门', dataIndex: 'department', render: (text, record) => renderReferenceCell(text, record)}, - { title: '省中心', dataIndex: 'provinceCenter', render: (text, record) => renderReferenceCell(text, record)}, - -] - const fieldLabels = { id: '序号', name: '名称', @@ -98,8 +46,53 @@ const fieldLabels = { } +const displayColumns = [ + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '7',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.mobile, debugtype: 'string_china_mobile_phone', dataIndex: 'mobile', width: '15',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.email, debugtype: 'string_email', dataIndex: 'email', width: '24',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.founded, dataIndex: 'founded', render: (text, record) =>renderDateCell(text,record), sorter: true }, + { title: fieldLabels.department, dataIndex: 'department', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.provinceCenter, dataIndex: 'provinceCenter', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + +] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({provinceCenterEmployee,targetComponent})=>{ + + + + const {ProvinceCenterEmployeeService} = GlobalComponents + // const userContext = null + return ( + +{provinceCenterEmployee.id} +{provinceCenterEmployee.name} +{provinceCenterEmployee.mobile} +{provinceCenterEmployee.email} +{ moment(provinceCenterEmployee.founded).format('YYYY-MM-DD')} +{provinceCenterEmployee.department==null?appLocaleName(userContext,"NotAssigned"):`${provinceCenterEmployee.department.displayName}(${provinceCenterEmployee.department.id})`} + + showTransferModel(targetComponent,"部门","provinceCenterDepartment",ProvinceCenterEmployeeService.requestCandidateDepartment, + ProvinceCenterEmployeeService.transferToAnotherDepartment,"anotherDepartmentId",provinceCenterEmployee.department?provinceCenterEmployee.department.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{provinceCenterEmployee.provinceCenter==null?appLocaleName(userContext,"NotAssigned"):`${provinceCenterEmployee.provinceCenter.displayName}(${provinceCenterEmployee.provinceCenter.id})`} + + showTransferModel(targetComponent,"省中心","retailStoreProvinceCenter",ProvinceCenterEmployeeService.requestCandidateProvinceCenter, + ProvinceCenterEmployeeService.transferToAnotherProvinceCenter,"anotherProvinceCenterId",provinceCenterEmployee.provinceCenter?provinceCenterEmployee.provinceCenter.id:"")} + style={{fontSize: 20,color:"red"}} /> + + + {buildTransferModal(provinceCenterEmployee,targetComponent)} + + ) + +} + + + -const ProvinceCenterEmployeeBase={menuData,displayColumns,fieldLabels} +const ProvinceCenterEmployeeBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default ProvinceCenterEmployeeBase diff --git a/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.createform.js b/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.createform.js index 5b6251f87..97c53f5d7 100644 --- a/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.createform.js +++ b/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.createform.js @@ -20,7 +20,7 @@ const testValues = { name: '刘强', mobile: '13999998888', email: 'wangdehong@yatang.cn', - founded: '2018-05-13', + founded: '2017-03-09', departmentId: 'PCD000001', provinceCenterId: 'RSPC000001', } @@ -211,7 +211,7 @@ class ProvinceCenterEmployeeCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -221,7 +221,7 @@ class ProvinceCenterEmployeeCreateForm extends Component { {getFieldDecorator('mobile', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -231,7 +231,7 @@ class ProvinceCenterEmployeeCreateForm extends Component { {getFieldDecorator('email', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -241,7 +241,7 @@ class ProvinceCenterEmployeeCreateForm extends Component { {getFieldDecorator('founded', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.dashboard.js b/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.dashboard.js index 555491c34..511c46ff4 100644 --- a/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.dashboard.js +++ b/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -150,6 +150,7 @@ class ProvinceCenterEmployeeDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -158,13 +159,17 @@ class ProvinceCenterEmployeeDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.model.js b/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.model.js index 2a9ff0350..0adb7c4ef 100644 --- a/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.model.js +++ b/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' diff --git a/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.permission.js b/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.permission.js new file mode 100644 index 000000000..df1d8bce9 --- /dev/null +++ b/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.permission.js @@ -0,0 +1,87 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './ProvinceCenterEmployee.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (provinceCenterEmployee,targetComponent) =>{ + const userContext = null + return ( + +{provinceCenterEmployee.id} +{provinceCenterEmployee.name} +{provinceCenterEmployee.mobile} +{provinceCenterEmployee.email} +{ moment(provinceCenterEmployee.founded).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = provinceCenterEmployee => { + const {ProvinceCenterEmployeeBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class ProvinceCenterEmployeePermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const provinceCenterEmployee = this.props.provinceCenterEmployee; + const { id,displayName, } = provinceCenterEmployee + const cardsData = {cardsName:"省中心员工",cardsFor: "provinceCenterEmployee",cardsSource: provinceCenterEmployee, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + provinceCenterEmployee: state._provinceCenterEmployee, +}))(Form.create()(ProvinceCenterEmployeePermission)) + diff --git a/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.permission.less b/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.preference.js b/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.preference.js index 4ac7c8098..a9595dddd 100644 --- a/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.preference.js +++ b/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.preference.js @@ -314,8 +314,12 @@ class ProvinceCenterEmployeePreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, } = this.props.provinceCenterEmployee - const cardsData = {cardsName:"省中心员工",cardsFor: "provinceCenterEmployee",cardsSource: this.props.provinceCenterEmployee, + const provinceCenterEmployee = this.props.provinceCenterEmployee; + const { id,displayName, } = provinceCenterEmployee + + + + const cardsData = {cardsName:"省中心员工",cardsFor: "provinceCenterEmployee",cardsSource: provinceCenterEmployee, subItems: [ ], diff --git a/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.profile.js b/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.profile.js new file mode 100644 index 000000000..de25849ee --- /dev/null +++ b/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.profile.js @@ -0,0 +1,94 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './ProvinceCenterEmployee.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (provinceCenterEmployee,targetComponent) =>{ + const userContext = null + return ( + +{provinceCenterEmployee.id} +{provinceCenterEmployee.name} +{provinceCenterEmployee.mobile} +{provinceCenterEmployee.email} +{ moment(provinceCenterEmployee.founded).format('YYYY-MM-DD')} + + + ) +} + + + +class ProvinceCenterEmployeeProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const provinceCenterEmployee = this.props.provinceCenterEmployee; + const { id,displayName, } = provinceCenterEmployee + + const cardsData = {cardsName:"省中心员工",cardsFor: "provinceCenterEmployee",cardsSource: provinceCenterEmployee, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + provinceCenterEmployee: state._provinceCenterEmployee, +}))(Form.create()(ProvinceCenterEmployeeProfile)) + diff --git a/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.profile.less b/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.search.js b/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.search.js index 37d4e4c91..81c72341a 100644 --- a/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.search.js +++ b/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.searchform.js b/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.searchform.js index 9a0a60fd1..e1e61db62 100644 --- a/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.searchform.js +++ b/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`provinceCenterEmployeeList.searchField`] = fieldName - value[`provinceCenterEmployeeList.searchVerb`] = searchVerb - value[`provinceCenterEmployeeList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,14 +127,15 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'mobile')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'email')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'department')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'provinceCenter')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'mobile')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'email')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'department')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'provinceCenter')) console.log("the final parameter", paramList) @@ -150,11 +151,12 @@ componentDidMount() { } - params['provinceCenterEmployeeList'] = 1 - params['provinceCenterEmployeeList.orderBy.0'] = "id" - params['provinceCenterEmployeeList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -209,8 +211,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -311,8 +313,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.table.js b/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.table.js index a7743eece..6c54c8bbc 100644 --- a/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.table.js +++ b/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.table.js @@ -40,24 +40,53 @@ class ProvinceCenterEmployeeTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = ProvinceCenterEmployeeBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class ProvinceCenterEmployeeTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class ProvinceCenterEmployeeTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.updateform.js b/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.updateform.js index fb17337ce..89a361065 100644 --- a/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.updateform.js +++ b/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.updateform.js @@ -262,7 +262,7 @@ class ProvinceCenterEmployeeUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class ProvinceCenterEmployeeUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class ProvinceCenterEmployeeUpdateForm extends Component { initialValue: selectedRow.mobile, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -298,7 +298,7 @@ class ProvinceCenterEmployeeUpdateForm extends Component { initialValue: selectedRow.email, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -310,7 +310,7 @@ class ProvinceCenterEmployeeUpdateForm extends Component { initialValue: selectedRow.founded, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/publicholiday/PublicHoliday.app.js b/bizui/src/bizcomponents/publicholiday/PublicHoliday.app.js index 20fba37c6..642def612 100644 --- a/bizui/src/bizcomponents/publicholiday/PublicHoliday.app.js +++ b/bizui/src/bizcomponents/publicholiday/PublicHoliday.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class PublicHolidayBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -157,12 +166,14 @@ class PublicHolidayBizApp extends React.PureComponent { buildRouters = () =>{ const {PublicHolidayDashboard} = GlobalComponents - const {PublicHolidayPreference} = GlobalComponents + const {PublicHolidayPermission} = GlobalComponents + const {PublicHolidayProfile} = GlobalComponents const routers=[ {path:"/publicHoliday/:id/dashboard", component: PublicHolidayDashboard}, - {path:"/publicHoliday/:id/preference", component: PublicHolidayPreference}, + {path:"/publicHoliday/:id/profile", component: PublicHolidayProfile}, + {path:"/publicHoliday/:id/permission", component: PublicHolidayPermission}, diff --git a/bizui/src/bizcomponents/publicholiday/PublicHoliday.associateform.js b/bizui/src/bizcomponents/publicholiday/PublicHoliday.associateform.js index fc2899678..653d4cb3b 100644 --- a/bizui/src/bizcomponents/publicholiday/PublicHoliday.associateform.js +++ b/bizui/src/bizcomponents/publicholiday/PublicHoliday.associateform.js @@ -140,7 +140,7 @@ class PublicHolidayAssociateForm extends Component { {getFieldDecorator('code', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -150,7 +150,7 @@ class PublicHolidayAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -160,7 +160,7 @@ class PublicHolidayAssociateForm extends Component { {getFieldDecorator('description', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/publicholiday/PublicHoliday.associateform.less b/bizui/src/bizcomponents/publicholiday/PublicHoliday.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/publicholiday/PublicHoliday.associateform.less +++ b/bizui/src/bizcomponents/publicholiday/PublicHoliday.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/publicholiday/PublicHoliday.base.js b/bizui/src/bizcomponents/publicholiday/PublicHoliday.base.js index 2c10bc536..971409f03 100644 --- a/bizui/src/bizcomponents/publicholiday/PublicHoliday.base.js +++ b/bizui/src/bizcomponents/publicholiday/PublicHoliday.base.js @@ -1,10 +1,33 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"公共假日", menuFor: "publicHoliday", subItems: [ @@ -12,90 +35,47 @@ const menuData = {menuName:"公共假日", menuFor: "publicHoliday", ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + code: '代码', + company: '公司', + name: '名称', + description: '描述', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record) }, - { title: '代码', debugtype: 'string', dataIndex: 'code', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: '公司', dataIndex: 'company', render: (text, record) => renderReferenceCell(text, record)}, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '7',render: (text, record)=>renderTextCell(text,record) }, - { title: '描述', debugtype: 'string', dataIndex: 'description', width: '14',render: (text, record)=>renderTextCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.code, debugtype: 'string', dataIndex: 'code', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.company, dataIndex: 'company', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '7',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.description, debugtype: 'string', dataIndex: 'description', width: '14',render: (text, record)=>renderTextCell(text,record)}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({publicHoliday,targetComponent})=>{ -const fieldLabels = { - id: '序号', - code: '代码', - company: '公司', - name: '名称', - description: '描述', + + + const {PublicHolidayService} = GlobalComponents + // const userContext = null + return ( + +{publicHoliday.id} +{publicHoliday.code} +{publicHoliday.name} +{publicHoliday.description} + + {buildTransferModal(publicHoliday,targetComponent)} + + ) } + + -const PublicHolidayBase={menuData,displayColumns,fieldLabels} +const PublicHolidayBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default PublicHolidayBase diff --git a/bizui/src/bizcomponents/publicholiday/PublicHoliday.createform.js b/bizui/src/bizcomponents/publicholiday/PublicHoliday.createform.js index 17a21d93f..a7ef9a6ce 100644 --- a/bizui/src/bizcomponents/publicholiday/PublicHoliday.createform.js +++ b/bizui/src/bizcomponents/publicholiday/PublicHoliday.createform.js @@ -209,7 +209,7 @@ class PublicHolidayCreateForm extends Component { {getFieldDecorator('code', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -219,7 +219,7 @@ class PublicHolidayCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -229,7 +229,7 @@ class PublicHolidayCreateForm extends Component { {getFieldDecorator('description', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/publicholiday/PublicHoliday.dashboard.js b/bizui/src/bizcomponents/publicholiday/PublicHoliday.dashboard.js index 240544e45..e70e6ddba 100644 --- a/bizui/src/bizcomponents/publicholiday/PublicHoliday.dashboard.js +++ b/bizui/src/bizcomponents/publicholiday/PublicHoliday.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -137,6 +137,7 @@ class PublicHolidayDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -145,13 +146,17 @@ class PublicHolidayDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/publicholiday/PublicHoliday.model.js b/bizui/src/bizcomponents/publicholiday/PublicHoliday.model.js index 2c69b2b43..1eccf5f1b 100644 --- a/bizui/src/bizcomponents/publicholiday/PublicHoliday.model.js +++ b/bizui/src/bizcomponents/publicholiday/PublicHoliday.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' diff --git a/bizui/src/bizcomponents/publicholiday/PublicHoliday.permission.js b/bizui/src/bizcomponents/publicholiday/PublicHoliday.permission.js new file mode 100644 index 000000000..ad599c3e3 --- /dev/null +++ b/bizui/src/bizcomponents/publicholiday/PublicHoliday.permission.js @@ -0,0 +1,86 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './PublicHoliday.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (publicHoliday,targetComponent) =>{ + const userContext = null + return ( + +{publicHoliday.id} +{publicHoliday.code} +{publicHoliday.name} +{publicHoliday.description} + + + ) +} + + +const renderPermissionSetting = publicHoliday => { + const {PublicHolidayBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class PublicHolidayPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const publicHoliday = this.props.publicHoliday; + const { id,displayName, } = publicHoliday + const cardsData = {cardsName:"公共假日",cardsFor: "publicHoliday",cardsSource: publicHoliday, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + publicHoliday: state._publicHoliday, +}))(Form.create()(PublicHolidayPermission)) + diff --git a/bizui/src/bizcomponents/publicholiday/PublicHoliday.permission.less b/bizui/src/bizcomponents/publicholiday/PublicHoliday.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/publicholiday/PublicHoliday.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/publicholiday/PublicHoliday.preference.js b/bizui/src/bizcomponents/publicholiday/PublicHoliday.preference.js index fa224b025..726945aad 100644 --- a/bizui/src/bizcomponents/publicholiday/PublicHoliday.preference.js +++ b/bizui/src/bizcomponents/publicholiday/PublicHoliday.preference.js @@ -301,8 +301,12 @@ class PublicHolidayPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, } = this.props.publicHoliday - const cardsData = {cardsName:"公共假日",cardsFor: "publicHoliday",cardsSource: this.props.publicHoliday, + const publicHoliday = this.props.publicHoliday; + const { id,displayName, } = publicHoliday + + + + const cardsData = {cardsName:"公共假日",cardsFor: "publicHoliday",cardsSource: publicHoliday, subItems: [ ], diff --git a/bizui/src/bizcomponents/publicholiday/PublicHoliday.profile.js b/bizui/src/bizcomponents/publicholiday/PublicHoliday.profile.js new file mode 100644 index 000000000..91de8d32f --- /dev/null +++ b/bizui/src/bizcomponents/publicholiday/PublicHoliday.profile.js @@ -0,0 +1,93 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './PublicHoliday.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (publicHoliday,targetComponent) =>{ + const userContext = null + return ( + +{publicHoliday.id} +{publicHoliday.code} +{publicHoliday.name} +{publicHoliday.description} + + + ) +} + + + +class PublicHolidayProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const publicHoliday = this.props.publicHoliday; + const { id,displayName, } = publicHoliday + + const cardsData = {cardsName:"公共假日",cardsFor: "publicHoliday",cardsSource: publicHoliday, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + publicHoliday: state._publicHoliday, +}))(Form.create()(PublicHolidayProfile)) + diff --git a/bizui/src/bizcomponents/publicholiday/PublicHoliday.profile.less b/bizui/src/bizcomponents/publicholiday/PublicHoliday.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/publicholiday/PublicHoliday.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/publicholiday/PublicHoliday.search.js b/bizui/src/bizcomponents/publicholiday/PublicHoliday.search.js index 7b246e1c1..69add9e0e 100644 --- a/bizui/src/bizcomponents/publicholiday/PublicHoliday.search.js +++ b/bizui/src/bizcomponents/publicholiday/PublicHoliday.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/publicholiday/PublicHoliday.searchform.js b/bizui/src/bizcomponents/publicholiday/PublicHoliday.searchform.js index e0dc9058b..7743fa7d2 100644 --- a/bizui/src/bizcomponents/publicholiday/PublicHoliday.searchform.js +++ b/bizui/src/bizcomponents/publicholiday/PublicHoliday.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`publicHolidayList.searchField`] = fieldName - value[`publicHolidayList.searchVerb`] = searchVerb - value[`publicHolidayList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,13 +127,14 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'code')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'company')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'description')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'code')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'company')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'description')) console.log("the final parameter", paramList) @@ -149,11 +150,12 @@ componentDidMount() { } - params['publicHolidayList'] = 1 - params['publicHolidayList.orderBy.0'] = "id" - params['publicHolidayList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -208,8 +210,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -295,8 +297,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/publicholiday/PublicHoliday.table.js b/bizui/src/bizcomponents/publicholiday/PublicHoliday.table.js index 87621ae91..01d9f4c94 100644 --- a/bizui/src/bizcomponents/publicholiday/PublicHoliday.table.js +++ b/bizui/src/bizcomponents/publicholiday/PublicHoliday.table.js @@ -40,24 +40,53 @@ class PublicHolidayTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = PublicHolidayBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class PublicHolidayTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class PublicHolidayTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/publicholiday/PublicHoliday.updateform.js b/bizui/src/bizcomponents/publicholiday/PublicHoliday.updateform.js index 970c4a2fd..399816a16 100644 --- a/bizui/src/bizcomponents/publicholiday/PublicHoliday.updateform.js +++ b/bizui/src/bizcomponents/publicholiday/PublicHoliday.updateform.js @@ -261,7 +261,7 @@ class PublicHolidayUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class PublicHolidayUpdateForm extends Component { initialValue: selectedRow.code, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -285,7 +285,7 @@ class PublicHolidayUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -297,7 +297,7 @@ class PublicHolidayUpdateForm extends Component { initialValue: selectedRow.description, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/receivingspace/ReceivingSpace.app.js b/bizui/src/bizcomponents/receivingspace/ReceivingSpace.app.js index cbcfd4fb5..36a76acde 100644 --- a/bizui/src/bizcomponents/receivingspace/ReceivingSpace.app.js +++ b/bizui/src/bizcomponents/receivingspace/ReceivingSpace.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class ReceivingSpaceBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class ReceivingSpaceBizApp extends React.PureComponent { buildRouters = () =>{ const {ReceivingSpaceDashboard} = GlobalComponents - const {ReceivingSpacePreference} = GlobalComponents + const {ReceivingSpacePermission} = GlobalComponents + const {ReceivingSpaceProfile} = GlobalComponents const routers=[ {path:"/receivingSpace/:id/dashboard", component: ReceivingSpaceDashboard}, - {path:"/receivingSpace/:id/preference", component: ReceivingSpacePreference}, + {path:"/receivingSpace/:id/profile", component: ReceivingSpaceProfile}, + {path:"/receivingSpace/:id/permission", component: ReceivingSpacePermission}, diff --git a/bizui/src/bizcomponents/receivingspace/ReceivingSpace.associateform.js b/bizui/src/bizcomponents/receivingspace/ReceivingSpace.associateform.js index 8f9e3c690..5fab82cf2 100644 --- a/bizui/src/bizcomponents/receivingspace/ReceivingSpace.associateform.js +++ b/bizui/src/bizcomponents/receivingspace/ReceivingSpace.associateform.js @@ -22,8 +22,8 @@ const testValues = { contactNumber: '02887654321', description: '每个收货区可以供一辆车卸货', totalArea: '1876平方米', - latitude: '42.692600477136445', - longitude: '131.47561250091172', + latitude: '41.06119032516744', + longitude: '131.7963559290403', warehouseId: 'W000001', } */ @@ -144,7 +144,7 @@ class ReceivingSpaceAssociateForm extends Component { {getFieldDecorator('location', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -154,7 +154,7 @@ class ReceivingSpaceAssociateForm extends Component { {getFieldDecorator('contactNumber', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -164,7 +164,7 @@ class ReceivingSpaceAssociateForm extends Component { {getFieldDecorator('description', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -174,7 +174,7 @@ class ReceivingSpaceAssociateForm extends Component { {getFieldDecorator('totalArea', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -184,7 +184,7 @@ class ReceivingSpaceAssociateForm extends Component { {getFieldDecorator('latitude', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -194,7 +194,7 @@ class ReceivingSpaceAssociateForm extends Component { {getFieldDecorator('longitude', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/receivingspace/ReceivingSpace.associateform.less b/bizui/src/bizcomponents/receivingspace/ReceivingSpace.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/receivingspace/ReceivingSpace.associateform.less +++ b/bizui/src/bizcomponents/receivingspace/ReceivingSpace.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/receivingspace/ReceivingSpace.base.js b/bizui/src/bizcomponents/receivingspace/ReceivingSpace.base.js index 8bda81d80..e403d7643 100644 --- a/bizui/src/bizcomponents/receivingspace/ReceivingSpace.base.js +++ b/bizui/src/bizcomponents/receivingspace/ReceivingSpace.base.js @@ -1,95 +1,41 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"收货区", menuFor: "receivingSpace", subItems: [ - {name: 'goodsList', displayName:'货物', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'goodsList', displayName:'货物', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) - -} - -const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'receivingSpace') }, - { title: '位置', debugtype: 'string', dataIndex: 'location', width: '20',render: (text, record)=>renderTextCell(text,record) }, - { title: '联系电话', debugtype: 'string', dataIndex: 'contactNumber', width: '15',render: (text, record)=>renderTextCell(text,record) }, - { title: '描述', debugtype: 'string', dataIndex: 'description', width: '17',render: (text, record)=>renderTextCell(text,record) }, - { title: '总面积', debugtype: 'string', dataIndex: 'totalArea', width: '11',render: (text, record)=>renderTextCell(text,record) }, - { title: '仓库', dataIndex: 'warehouse', render: (text, record) => renderReferenceCell(text, record)}, - { title: '纬度', debugtype: 'double', dataIndex: 'latitude', width: '13',render: (text, record)=>renderTextCell(text,record) }, - { title: '经度', debugtype: 'double', dataIndex: 'longitude', width: '14',render: (text, record)=>renderTextCell(text,record) }, - { title: '最后更新时间', dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record) }, - -] - const fieldLabels = { id: '序号', location: '位置', @@ -103,8 +49,52 @@ const fieldLabels = { } +const displayColumns = [ + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'receivingSpace') , sorter: true }, + { title: fieldLabels.location, debugtype: 'string', dataIndex: 'location', width: '20',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.contactNumber, debugtype: 'string', dataIndex: 'contactNumber', width: '15',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.description, debugtype: 'string', dataIndex: 'description', width: '17',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.totalArea, debugtype: 'string', dataIndex: 'totalArea', width: '11',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.warehouse, dataIndex: 'warehouse', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.latitude, debugtype: 'double', dataIndex: 'latitude', width: '13',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.longitude, debugtype: 'double', dataIndex: 'longitude', width: '14',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.lastUpdateTime, dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record), sorter: true}, + +] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({receivingSpace,targetComponent})=>{ + + + + const {ReceivingSpaceService} = GlobalComponents + // const userContext = null + return ( + +{receivingSpace.id} +{receivingSpace.location} +{receivingSpace.contactNumber} +{receivingSpace.description} +{receivingSpace.totalArea} +{receivingSpace.warehouse==null?appLocaleName(userContext,"NotAssigned"):`${receivingSpace.warehouse.displayName}(${receivingSpace.warehouse.id})`} + + showTransferModel(targetComponent,"仓库","warehouse",ReceivingSpaceService.requestCandidateWarehouse, + ReceivingSpaceService.transferToAnotherWarehouse,"anotherWarehouseId",receivingSpace.warehouse?receivingSpace.warehouse.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{receivingSpace.latitude} +{receivingSpace.longitude} +{ moment(receivingSpace.lastUpdateTime).format('YYYY-MM-DD')} + + {buildTransferModal(receivingSpace,targetComponent)} + + ) + +} + + + -const ReceivingSpaceBase={menuData,displayColumns,fieldLabels} +const ReceivingSpaceBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default ReceivingSpaceBase diff --git a/bizui/src/bizcomponents/receivingspace/ReceivingSpace.createform.js b/bizui/src/bizcomponents/receivingspace/ReceivingSpace.createform.js index b9cbf6360..5682fca91 100644 --- a/bizui/src/bizcomponents/receivingspace/ReceivingSpace.createform.js +++ b/bizui/src/bizcomponents/receivingspace/ReceivingSpace.createform.js @@ -21,8 +21,8 @@ const testValues = { contactNumber: '02887654321', description: '每个收货区可以供一辆车卸货', totalArea: '1876平方米', - latitude: '41.44819633897213', - longitude: '130.4765689267644', + latitude: '39.86492266650112', + longitude: '129.73994296416566', warehouseId: 'W000001', } */ @@ -212,7 +212,7 @@ class ReceivingSpaceCreateForm extends Component { {getFieldDecorator('location', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -222,7 +222,7 @@ class ReceivingSpaceCreateForm extends Component { {getFieldDecorator('contactNumber', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -232,7 +232,7 @@ class ReceivingSpaceCreateForm extends Component { {getFieldDecorator('description', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -242,7 +242,7 @@ class ReceivingSpaceCreateForm extends Component { {getFieldDecorator('totalArea', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -252,7 +252,7 @@ class ReceivingSpaceCreateForm extends Component { {getFieldDecorator('latitude', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -262,7 +262,7 @@ class ReceivingSpaceCreateForm extends Component { {getFieldDecorator('longitude', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/receivingspace/ReceivingSpace.dashboard.js b/bizui/src/bizcomponents/receivingspace/ReceivingSpace.dashboard.js index ae0c6adcc..87c358f33 100644 --- a/bizui/src/bizcomponents/receivingspace/ReceivingSpace.dashboard.js +++ b/bizui/src/bizcomponents/receivingspace/ReceivingSpace.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -148,6 +148,7 @@ class ReceivingSpaceDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -156,13 +157,17 @@ class ReceivingSpaceDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/receivingspace/ReceivingSpace.model.js b/bizui/src/bizcomponents/receivingspace/ReceivingSpace.model.js index 0e6a910f0..c3d5db931 100644 --- a/bizui/src/bizcomponents/receivingspace/ReceivingSpace.model.js +++ b/bizui/src/bizcomponents/receivingspace/ReceivingSpace.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/receivingSpace/${id}/list/\GoodsList/货物+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/receivingSpace/${id}/list/GoodsList/货物+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateGoods({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/receivingSpace/${id}/list/\GoodsList/货物列表`, state: newPlayload } + const location = { pathname: `/receivingSpace/${id}/list/GoodsList/货物列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextGoodsUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/receivingspace/ReceivingSpace.permission.js b/bizui/src/bizcomponents/receivingspace/ReceivingSpace.permission.js new file mode 100644 index 000000000..53b4907c0 --- /dev/null +++ b/bizui/src/bizcomponents/receivingspace/ReceivingSpace.permission.js @@ -0,0 +1,90 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './ReceivingSpace.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (receivingSpace,targetComponent) =>{ + const userContext = null + return ( + +{receivingSpace.id} +{receivingSpace.location} +{receivingSpace.contactNumber} +{receivingSpace.description} +{receivingSpace.totalArea} +{receivingSpace.latitude} +{receivingSpace.longitude} +{ moment(receivingSpace.lastUpdateTime).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = receivingSpace => { + const {ReceivingSpaceBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class ReceivingSpacePermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const receivingSpace = this.props.receivingSpace; + const { id,displayName, goodsCount } = receivingSpace + const cardsData = {cardsName:"收货区",cardsFor: "receivingSpace",cardsSource: receivingSpace, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + receivingSpace: state._receivingSpace, +}))(Form.create()(ReceivingSpacePermission)) + diff --git a/bizui/src/bizcomponents/receivingspace/ReceivingSpace.permission.less b/bizui/src/bizcomponents/receivingspace/ReceivingSpace.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/receivingspace/ReceivingSpace.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/receivingspace/ReceivingSpace.preference.js b/bizui/src/bizcomponents/receivingspace/ReceivingSpace.preference.js index 6832fbae1..f1a4ceb54 100644 --- a/bizui/src/bizcomponents/receivingspace/ReceivingSpace.preference.js +++ b/bizui/src/bizcomponents/receivingspace/ReceivingSpace.preference.js @@ -311,8 +311,12 @@ class ReceivingSpacePreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, goodsCount } = this.props.receivingSpace - const cardsData = {cardsName:"收货区",cardsFor: "receivingSpace",cardsSource: this.props.receivingSpace, + const receivingSpace = this.props.receivingSpace; + const { id,displayName, goodsCount } = receivingSpace + + + + const cardsData = {cardsName:"收货区",cardsFor: "receivingSpace",cardsSource: receivingSpace, subItems: [ ], diff --git a/bizui/src/bizcomponents/receivingspace/ReceivingSpace.profile.js b/bizui/src/bizcomponents/receivingspace/ReceivingSpace.profile.js new file mode 100644 index 000000000..41f8de066 --- /dev/null +++ b/bizui/src/bizcomponents/receivingspace/ReceivingSpace.profile.js @@ -0,0 +1,97 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './ReceivingSpace.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (receivingSpace,targetComponent) =>{ + const userContext = null + return ( + +{receivingSpace.id} +{receivingSpace.location} +{receivingSpace.contactNumber} +{receivingSpace.description} +{receivingSpace.totalArea} +{receivingSpace.latitude} +{receivingSpace.longitude} +{ moment(receivingSpace.lastUpdateTime).format('YYYY-MM-DD')} + + + ) +} + + + +class ReceivingSpaceProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const receivingSpace = this.props.receivingSpace; + const { id,displayName, goodsCount } = receivingSpace + + const cardsData = {cardsName:"收货区",cardsFor: "receivingSpace",cardsSource: receivingSpace, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + receivingSpace: state._receivingSpace, +}))(Form.create()(ReceivingSpaceProfile)) + diff --git a/bizui/src/bizcomponents/receivingspace/ReceivingSpace.profile.less b/bizui/src/bizcomponents/receivingspace/ReceivingSpace.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/receivingspace/ReceivingSpace.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/receivingspace/ReceivingSpace.search.js b/bizui/src/bizcomponents/receivingspace/ReceivingSpace.search.js index d065d3910..7b75b932c 100644 --- a/bizui/src/bizcomponents/receivingspace/ReceivingSpace.search.js +++ b/bizui/src/bizcomponents/receivingspace/ReceivingSpace.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/receivingspace/ReceivingSpace.searchform.js b/bizui/src/bizcomponents/receivingspace/ReceivingSpace.searchform.js index a25ba672e..b7f0cd1be 100644 --- a/bizui/src/bizcomponents/receivingspace/ReceivingSpace.searchform.js +++ b/bizui/src/bizcomponents/receivingspace/ReceivingSpace.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`receivingSpaceList.searchField`] = fieldName - value[`receivingSpaceList.searchVerb`] = searchVerb - value[`receivingSpaceList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,14 +127,15 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'location')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'contactNumber')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'description')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'totalArea')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'warehouse')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'location')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'contactNumber')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'description')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'totalArea')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'warehouse')) console.log("the final parameter", paramList) @@ -150,11 +151,12 @@ componentDidMount() { } - params['receivingSpaceList'] = 1 - params['receivingSpaceList.orderBy.0'] = "id" - params['receivingSpaceList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -209,8 +211,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -304,8 +306,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/receivingspace/ReceivingSpace.table.js b/bizui/src/bizcomponents/receivingspace/ReceivingSpace.table.js index 160f24b2a..778168d86 100644 --- a/bizui/src/bizcomponents/receivingspace/ReceivingSpace.table.js +++ b/bizui/src/bizcomponents/receivingspace/ReceivingSpace.table.js @@ -40,24 +40,53 @@ class ReceivingSpaceTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = ReceivingSpaceBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class ReceivingSpaceTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class ReceivingSpaceTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/receivingspace/ReceivingSpace.updateform.js b/bizui/src/bizcomponents/receivingspace/ReceivingSpace.updateform.js index c5f000c87..2a7c764cf 100644 --- a/bizui/src/bizcomponents/receivingspace/ReceivingSpace.updateform.js +++ b/bizui/src/bizcomponents/receivingspace/ReceivingSpace.updateform.js @@ -262,7 +262,7 @@ class ReceivingSpaceUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class ReceivingSpaceUpdateForm extends Component { initialValue: selectedRow.location, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class ReceivingSpaceUpdateForm extends Component { initialValue: selectedRow.contactNumber, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -298,7 +298,7 @@ class ReceivingSpaceUpdateForm extends Component { initialValue: selectedRow.description, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -310,7 +310,7 @@ class ReceivingSpaceUpdateForm extends Component { initialValue: selectedRow.totalArea, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -322,7 +322,7 @@ class ReceivingSpaceUpdateForm extends Component { initialValue: selectedRow.latitude, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -334,7 +334,7 @@ class ReceivingSpaceUpdateForm extends Component { initialValue: selectedRow.longitude, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.app.js b/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.app.js index db264c5ca..158c5d2d5 100644 --- a/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.app.js +++ b/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class ResponsibilityTypeBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class ResponsibilityTypeBizApp extends React.PureComponent { buildRouters = () =>{ const {ResponsibilityTypeDashboard} = GlobalComponents - const {ResponsibilityTypePreference} = GlobalComponents + const {ResponsibilityTypePermission} = GlobalComponents + const {ResponsibilityTypeProfile} = GlobalComponents const routers=[ {path:"/responsibilityType/:id/dashboard", component: ResponsibilityTypeDashboard}, - {path:"/responsibilityType/:id/preference", component: ResponsibilityTypePreference}, + {path:"/responsibilityType/:id/profile", component: ResponsibilityTypeProfile}, + {path:"/responsibilityType/:id/permission", component: ResponsibilityTypePermission}, diff --git a/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.associateform.js b/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.associateform.js index 99c9ff25e..63bcfbe23 100644 --- a/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.associateform.js +++ b/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.associateform.js @@ -141,7 +141,7 @@ class ResponsibilityTypeAssociateForm extends Component { {getFieldDecorator('code', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -151,7 +151,7 @@ class ResponsibilityTypeAssociateForm extends Component { {getFieldDecorator('baseDescription', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -161,7 +161,7 @@ class ResponsibilityTypeAssociateForm extends Component { {getFieldDecorator('detailDescription', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.associateform.less b/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.associateform.less +++ b/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.base.js b/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.base.js index a8a5f62c4..db69074ba 100644 --- a/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.base.js +++ b/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.base.js @@ -1,102 +1,82 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"责任类型", menuFor: "responsibilityType", subItems: [ - {name: 'employeeList', displayName:'员工', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'employeeList', displayName:'员工', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + code: '代码', + company: '公司', + baseDescription: '基本描述', + detailDescription: '详细描述', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'responsibilityType') }, - { title: '代码', debugtype: 'string', dataIndex: 'code', width: '9',render: (text, record)=>renderTextCell(text,record) }, - { title: '公司', dataIndex: 'company', render: (text, record) => renderReferenceCell(text, record)}, - { title: '基本描述', debugtype: 'string', dataIndex: 'baseDescription', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: '详细描述', debugtype: 'string', dataIndex: 'detailDescription', width: '33',render: (text, record)=>renderTextCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'responsibilityType') , sorter: true }, + { title: fieldLabels.code, debugtype: 'string', dataIndex: 'code', width: '9',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.company, dataIndex: 'company', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.baseDescription, debugtype: 'string', dataIndex: 'baseDescription', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.detailDescription, debugtype: 'string', dataIndex: 'detailDescription', width: '33',render: (text, record)=>renderTextCell(text,record)}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({responsibilityType,targetComponent})=>{ -const fieldLabels = { - id: '序号', - code: '代码', - company: '公司', - baseDescription: '基本描述', - detailDescription: '详细描述', + + + const {ResponsibilityTypeService} = GlobalComponents + // const userContext = null + return ( + +{responsibilityType.id} +{responsibilityType.code} +{responsibilityType.baseDescription} +{responsibilityType.detailDescription} + + {buildTransferModal(responsibilityType,targetComponent)} + + ) } + + -const ResponsibilityTypeBase={menuData,displayColumns,fieldLabels} +const ResponsibilityTypeBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default ResponsibilityTypeBase diff --git a/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.createform.js b/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.createform.js index 3dc4ba7f6..2c090eb3c 100644 --- a/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.createform.js +++ b/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.createform.js @@ -209,7 +209,7 @@ class ResponsibilityTypeCreateForm extends Component { {getFieldDecorator('code', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -219,7 +219,7 @@ class ResponsibilityTypeCreateForm extends Component { {getFieldDecorator('baseDescription', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -229,7 +229,7 @@ class ResponsibilityTypeCreateForm extends Component { {getFieldDecorator('detailDescription', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.dashboard.js b/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.dashboard.js index 73777543d..3ff74f6b2 100644 --- a/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.dashboard.js +++ b/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -138,6 +138,7 @@ class ResponsibilityTypeDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -146,13 +147,17 @@ class ResponsibilityTypeDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.model.js b/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.model.js index 84318420e..74a5dce37 100644 --- a/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.model.js +++ b/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/responsibilityType/${id}/list/\EmployeeList/员工+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/responsibilityType/${id}/list/EmployeeList/员工+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateEmployee({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/responsibilityType/${id}/list/\EmployeeList/员工列表`, state: newPlayload } + const location = { pathname: `/responsibilityType/${id}/list/EmployeeList/员工列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextEmployeeUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.permission.js b/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.permission.js new file mode 100644 index 000000000..a4b640317 --- /dev/null +++ b/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.permission.js @@ -0,0 +1,86 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './ResponsibilityType.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (responsibilityType,targetComponent) =>{ + const userContext = null + return ( + +{responsibilityType.id} +{responsibilityType.code} +{responsibilityType.baseDescription} +{responsibilityType.detailDescription} + + + ) +} + + +const renderPermissionSetting = responsibilityType => { + const {ResponsibilityTypeBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class ResponsibilityTypePermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const responsibilityType = this.props.responsibilityType; + const { id,displayName, employeeCount } = responsibilityType + const cardsData = {cardsName:"责任类型",cardsFor: "responsibilityType",cardsSource: responsibilityType, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + responsibilityType: state._responsibilityType, +}))(Form.create()(ResponsibilityTypePermission)) + diff --git a/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.permission.less b/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.preference.js b/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.preference.js index 4fb5315ac..cba0127f6 100644 --- a/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.preference.js +++ b/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.preference.js @@ -301,8 +301,12 @@ class ResponsibilityTypePreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, employeeCount } = this.props.responsibilityType - const cardsData = {cardsName:"责任类型",cardsFor: "responsibilityType",cardsSource: this.props.responsibilityType, + const responsibilityType = this.props.responsibilityType; + const { id,displayName, employeeCount } = responsibilityType + + + + const cardsData = {cardsName:"责任类型",cardsFor: "responsibilityType",cardsSource: responsibilityType, subItems: [ ], diff --git a/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.profile.js b/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.profile.js new file mode 100644 index 000000000..8b7510a12 --- /dev/null +++ b/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.profile.js @@ -0,0 +1,93 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './ResponsibilityType.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (responsibilityType,targetComponent) =>{ + const userContext = null + return ( + +{responsibilityType.id} +{responsibilityType.code} +{responsibilityType.baseDescription} +{responsibilityType.detailDescription} + + + ) +} + + + +class ResponsibilityTypeProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const responsibilityType = this.props.responsibilityType; + const { id,displayName, employeeCount } = responsibilityType + + const cardsData = {cardsName:"责任类型",cardsFor: "responsibilityType",cardsSource: responsibilityType, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + responsibilityType: state._responsibilityType, +}))(Form.create()(ResponsibilityTypeProfile)) + diff --git a/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.profile.less b/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.search.js b/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.search.js index 34222031b..d0d50e4ea 100644 --- a/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.search.js +++ b/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.searchform.js b/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.searchform.js index f0d488325..d837127b5 100644 --- a/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.searchform.js +++ b/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`responsibilityTypeList.searchField`] = fieldName - value[`responsibilityTypeList.searchVerb`] = searchVerb - value[`responsibilityTypeList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,13 +127,14 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'code')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'company')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'baseDescription')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'detailDescription')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'code')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'company')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'baseDescription')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'detailDescription')) console.log("the final parameter", paramList) @@ -149,11 +150,12 @@ componentDidMount() { } - params['responsibilityTypeList'] = 1 - params['responsibilityTypeList.orderBy.0'] = "id" - params['responsibilityTypeList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -208,8 +210,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -295,8 +297,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.table.js b/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.table.js index ed2c4681c..216ee66dc 100644 --- a/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.table.js +++ b/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.table.js @@ -40,24 +40,53 @@ class ResponsibilityTypeTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = ResponsibilityTypeBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class ResponsibilityTypeTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class ResponsibilityTypeTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.updateform.js b/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.updateform.js index 909d10f8d..1d8b43f9e 100644 --- a/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.updateform.js +++ b/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.updateform.js @@ -261,7 +261,7 @@ class ResponsibilityTypeUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class ResponsibilityTypeUpdateForm extends Component { initialValue: selectedRow.code, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -285,7 +285,7 @@ class ResponsibilityTypeUpdateForm extends Component { initialValue: selectedRow.baseDescription, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -297,7 +297,7 @@ class ResponsibilityTypeUpdateForm extends Component { initialValue: selectedRow.detailDescription, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstore/RetailStore.app.js b/bizui/src/bizcomponents/retailstore/RetailStore.app.js index 698c21e4e..4246d93f9 100644 --- a/bizui/src/bizcomponents/retailstore/RetailStore.app.js +++ b/bizui/src/bizcomponents/retailstore/RetailStore.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class RetailStoreBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -402,12 +411,14 @@ class RetailStoreBizApp extends React.PureComponent { buildRouters = () =>{ const {RetailStoreDashboard} = GlobalComponents - const {RetailStorePreference} = GlobalComponents + const {RetailStorePermission} = GlobalComponents + const {RetailStoreProfile} = GlobalComponents const routers=[ {path:"/retailStore/:id/dashboard", component: RetailStoreDashboard}, - {path:"/retailStore/:id/preference", component: RetailStorePreference}, + {path:"/retailStore/:id/profile", component: RetailStoreProfile}, + {path:"/retailStore/:id/permission", component: RetailStorePermission}, diff --git a/bizui/src/bizcomponents/retailstore/RetailStore.associateform.js b/bizui/src/bizcomponents/retailstore/RetailStore.associateform.js index 3936bd681..12f90ad79 100644 --- a/bizui/src/bizcomponents/retailstore/RetailStore.associateform.js +++ b/bizui/src/bizcomponents/retailstore/RetailStore.associateform.js @@ -21,9 +21,9 @@ const testValues = { name: '中和社区小超', telephone: '02887654321', owner: '吕刚', - founded: '2019-03-03', - latitude: '41.04828676167042', - longitude: '130.02651531428776', + founded: '2017-10-25', + latitude: '39.86262407648065', + longitude: '130.93670168520543', description: '啤酒饮料矿泉水,香肠瓜子方便面, 请让一让', retailStoreCountryCenterId: 'RSCC000001', cityServiceCenterId: 'RSCSC000001', @@ -150,7 +150,7 @@ class RetailStoreAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -160,7 +160,7 @@ class RetailStoreAssociateForm extends Component { {getFieldDecorator('telephone', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -170,7 +170,7 @@ class RetailStoreAssociateForm extends Component { {getFieldDecorator('owner', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -180,7 +180,7 @@ class RetailStoreAssociateForm extends Component { {getFieldDecorator('founded', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -190,7 +190,7 @@ class RetailStoreAssociateForm extends Component { {getFieldDecorator('latitude', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -200,7 +200,7 @@ class RetailStoreAssociateForm extends Component { {getFieldDecorator('longitude', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -210,7 +210,7 @@ class RetailStoreAssociateForm extends Component { {getFieldDecorator('description', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstore/RetailStore.associateform.less b/bizui/src/bizcomponents/retailstore/RetailStore.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/retailstore/RetailStore.associateform.less +++ b/bizui/src/bizcomponents/retailstore/RetailStore.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/retailstore/RetailStore.base.js b/bizui/src/bizcomponents/retailstore/RetailStore.base.js index 3b273b094..30be11749 100644 --- a/bizui/src/bizcomponents/retailstore/RetailStore.base.js +++ b/bizui/src/bizcomponents/retailstore/RetailStore.base.js @@ -1,108 +1,45 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"双链小超", menuFor: "retailStore", subItems: [ - {name: 'consumerOrderList', displayName:'消费者订单', icon:'first-order',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'retailStoreOrderList', displayName:'生超的订单', icon:'store',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'goodsList', displayName:'货物', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'transportTaskList', displayName:'运输任务', icon:'tasks',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'accountSetList', displayName:'账套', icon:'headset',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'consumerOrderList', displayName:'消费者订单', icon:'first-order',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'retailStoreOrderList', displayName:'生超的订单', icon:'store',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'goodsList', displayName:'货物', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'transportTaskList', displayName:'运输任务', icon:'tasks',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'accountSetList', displayName:'账套', icon:'headset',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) - -} - -const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'retailStore') }, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '10',render: (text, record)=>renderTextCell(text,record) }, - { title: '电话', debugtype: 'string', dataIndex: 'telephone', width: '15',render: (text, record)=>renderTextCell(text,record) }, - { title: '业主', debugtype: 'string', dataIndex: 'owner', width: '6',render: (text, record)=>renderTextCell(text,record) }, - { title: '双链小超全国运营中心', dataIndex: 'retailStoreCountryCenter', render: (text, record) => renderReferenceCell(text, record)}, - { title: '城市服务中心', dataIndex: 'cityServiceCenter', render: (text, record) => renderReferenceCell(text, record)}, - { title: '创建', dataIndex: 'creation', render: (text, record) => renderReferenceCell(text, record)}, - { title: '招商', dataIndex: 'investmentInvitation', render: (text, record) => renderReferenceCell(text, record)}, - { title: '加盟', dataIndex: 'franchising', render: (text, record) => renderReferenceCell(text, record)}, - { title: '装修', dataIndex: 'decoration', render: (text, record) => renderReferenceCell(text, record)}, - { title: '开业', dataIndex: 'opening', render: (text, record) => renderReferenceCell(text, record)}, - { title: '关闭', dataIndex: 'closing', render: (text, record) => renderReferenceCell(text, record)}, - { title: '成立', dataIndex: 'founded', render: (text, record) =>renderDateCell(text,record) }, - { title: '纬度', debugtype: 'double', dataIndex: 'latitude', width: '13',render: (text, record)=>renderTextCell(text,record) }, - { title: '经度', debugtype: 'double', dataIndex: 'longitude', width: '14',render: (text, record)=>renderTextCell(text,record) }, - { title: '描述', debugtype: 'string', dataIndex: 'description', width: '25',render: (text, record)=>renderTextCell(text,record) }, - { title: '最后更新时间', dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record) }, - { title: '当前状态', debugtype: 'string', dataIndex: 'currentStatus', width: '22',render: (text, record)=>renderTextCell(text,record) }, - -] - const fieldLabels = { id: '序号', name: '名称', @@ -125,8 +62,63 @@ const fieldLabels = { } +const displayColumns = [ + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'retailStore') , sorter: true }, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '10',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.telephone, debugtype: 'string', dataIndex: 'telephone', width: '15',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.owner, debugtype: 'string', dataIndex: 'owner', width: '6',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.retailStoreCountryCenter, dataIndex: 'retailStoreCountryCenter', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.cityServiceCenter, dataIndex: 'cityServiceCenter', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.creation, dataIndex: 'creation', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.investmentInvitation, dataIndex: 'investmentInvitation', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.franchising, dataIndex: 'franchising', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.decoration, dataIndex: 'decoration', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.opening, dataIndex: 'opening', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.closing, dataIndex: 'closing', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.founded, dataIndex: 'founded', render: (text, record) =>renderDateCell(text,record), sorter: true }, + { title: fieldLabels.latitude, debugtype: 'double', dataIndex: 'latitude', width: '13',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.longitude, debugtype: 'double', dataIndex: 'longitude', width: '14',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.description, debugtype: 'string', dataIndex: 'description', width: '25',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.lastUpdateTime, dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record), sorter: true}, + { title: fieldLabels.currentStatus, debugtype: 'string', dataIndex: 'currentStatus', width: '22',render: (text, record)=>renderTextCell(text,record)}, + +] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({retailStore,targetComponent})=>{ + + + + const {RetailStoreService} = GlobalComponents + // const userContext = null + return ( + +{retailStore.id} +{retailStore.name} +{retailStore.telephone} +{retailStore.owner} +{retailStore.cityServiceCenter==null?appLocaleName(userContext,"NotAssigned"):`${retailStore.cityServiceCenter.displayName}(${retailStore.cityServiceCenter.id})`} + + showTransferModel(targetComponent,"城市服务中心","retailStoreCityServiceCenter",RetailStoreService.requestCandidateCityServiceCenter, + RetailStoreService.transferToAnotherCityServiceCenter,"anotherCityServiceCenterId",retailStore.cityServiceCenter?retailStore.cityServiceCenter.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{ moment(retailStore.founded).format('YYYY-MM-DD')} +{retailStore.latitude} +{retailStore.longitude} +{retailStore.description} +{ moment(retailStore.lastUpdateTime).format('YYYY-MM-DD')} +{retailStore.currentStatus} + + {buildTransferModal(retailStore,targetComponent)} + + ) + +} + + + -const RetailStoreBase={menuData,displayColumns,fieldLabels} +const RetailStoreBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default RetailStoreBase diff --git a/bizui/src/bizcomponents/retailstore/RetailStore.createform.js b/bizui/src/bizcomponents/retailstore/RetailStore.createform.js index 4ab9ec214..dd63fed70 100644 --- a/bizui/src/bizcomponents/retailstore/RetailStore.createform.js +++ b/bizui/src/bizcomponents/retailstore/RetailStore.createform.js @@ -20,9 +20,9 @@ const testValues = { name: '中和社区小超', telephone: '02887654321', owner: '吕刚', - founded: '2018-02-16', - latitude: '40.2446771966918', - longitude: '129.94401645103682', + founded: '2018-01-30', + latitude: '42.766831709441405', + longitude: '129.4169056520242', description: '啤酒饮料矿泉水,香肠瓜子方便面, 请让一让', retailStoreCountryCenterId: 'RSCC000001', cityServiceCenterId: 'RSCSC000001', @@ -214,7 +214,7 @@ class RetailStoreCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -224,7 +224,7 @@ class RetailStoreCreateForm extends Component { {getFieldDecorator('telephone', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -234,7 +234,7 @@ class RetailStoreCreateForm extends Component { {getFieldDecorator('owner', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -244,7 +244,7 @@ class RetailStoreCreateForm extends Component { {getFieldDecorator('founded', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -254,7 +254,7 @@ class RetailStoreCreateForm extends Component { {getFieldDecorator('latitude', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -264,7 +264,7 @@ class RetailStoreCreateForm extends Component { {getFieldDecorator('longitude', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class RetailStoreCreateForm extends Component { {getFieldDecorator('description', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstore/RetailStore.dashboard.js b/bizui/src/bizcomponents/retailstore/RetailStore.dashboard.js index 5357a4c93..c5d744723 100644 --- a/bizui/src/bizcomponents/retailstore/RetailStore.dashboard.js +++ b/bizui/src/bizcomponents/retailstore/RetailStore.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -154,6 +154,7 @@ class RetailStoreDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -162,13 +163,17 @@ class RetailStoreDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/retailstore/RetailStore.model.js b/bizui/src/bizcomponents/retailstore/RetailStore.model.js index d31769275..a04ed732b 100644 --- a/bizui/src/bizcomponents/retailstore/RetailStore.model.js +++ b/bizui/src/bizcomponents/retailstore/RetailStore.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStore/${id}/list/\ConsumerOrderList/消费者订单+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStore/${id}/list/ConsumerOrderList/消费者订单+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateConsumerOrder({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStore/${id}/list/\ConsumerOrderList/消费者订单列表`, state: newPlayload } + const location = { pathname: `/retailStore/${id}/list/ConsumerOrderList/消费者订单列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextConsumerOrderUpdateRow({ payload }, { call, put }) { @@ -206,7 +206,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStore/${id}/list/\RetailStoreOrderList/生超的订单+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStore/${id}/list/RetailStoreOrderList/生超的订单+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateRetailStoreOrder({ payload }, { call, put }) { @@ -228,7 +228,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStore/${id}/list/\RetailStoreOrderList/生超的订单列表`, state: newPlayload } + const location = { pathname: `/retailStore/${id}/list/RetailStoreOrderList/生超的订单列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextRetailStoreOrderUpdateRow({ payload }, { call, put }) { @@ -275,7 +275,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStore/${id}/list/\GoodsList/货物+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStore/${id}/list/GoodsList/货物+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateGoods({ payload }, { call, put }) { @@ -297,7 +297,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStore/${id}/list/\GoodsList/货物列表`, state: newPlayload } + const location = { pathname: `/retailStore/${id}/list/GoodsList/货物列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextGoodsUpdateRow({ payload }, { call, put }) { @@ -344,7 +344,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStore/${id}/list/\TransportTaskList/运输任务+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStore/${id}/list/TransportTaskList/运输任务+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateTransportTask({ payload }, { call, put }) { @@ -366,7 +366,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStore/${id}/list/\TransportTaskList/运输任务列表`, state: newPlayload } + const location = { pathname: `/retailStore/${id}/list/TransportTaskList/运输任务列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextTransportTaskUpdateRow({ payload }, { call, put }) { @@ -413,7 +413,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStore/${id}/list/\AccountSetList/账套+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStore/${id}/list/AccountSetList/账套+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateAccountSet({ payload }, { call, put }) { @@ -435,7 +435,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStore/${id}/list/\AccountSetList/账套列表`, state: newPlayload } + const location = { pathname: `/retailStore/${id}/list/AccountSetList/账套列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextAccountSetUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/retailstore/RetailStore.permission.js b/bizui/src/bizcomponents/retailstore/RetailStore.permission.js new file mode 100644 index 000000000..7badc0ea2 --- /dev/null +++ b/bizui/src/bizcomponents/retailstore/RetailStore.permission.js @@ -0,0 +1,92 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './RetailStore.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (retailStore,targetComponent) =>{ + const userContext = null + return ( + +{retailStore.id} +{retailStore.name} +{retailStore.telephone} +{retailStore.owner} +{ moment(retailStore.founded).format('YYYY-MM-DD')} +{retailStore.latitude} +{retailStore.longitude} +{retailStore.description} +{ moment(retailStore.lastUpdateTime).format('YYYY-MM-DD')} +{retailStore.currentStatus} + + + ) +} + + +const renderPermissionSetting = retailStore => { + const {RetailStoreBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class RetailStorePermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const retailStore = this.props.retailStore; + const { id,displayName, consumerOrderCount, retailStoreOrderCount, goodsCount, transportTaskCount, accountSetCount } = retailStore + const cardsData = {cardsName:"双链小超",cardsFor: "retailStore",cardsSource: retailStore, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + retailStore: state._retailStore, +}))(Form.create()(RetailStorePermission)) + diff --git a/bizui/src/bizcomponents/retailstore/RetailStore.permission.less b/bizui/src/bizcomponents/retailstore/RetailStore.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/retailstore/RetailStore.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/retailstore/RetailStore.preference.js b/bizui/src/bizcomponents/retailstore/RetailStore.preference.js index e6bdcf5f2..2dbd9f7f6 100644 --- a/bizui/src/bizcomponents/retailstore/RetailStore.preference.js +++ b/bizui/src/bizcomponents/retailstore/RetailStore.preference.js @@ -313,8 +313,12 @@ class RetailStorePreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, consumerOrderCount, retailStoreOrderCount, goodsCount, transportTaskCount, accountSetCount } = this.props.retailStore - const cardsData = {cardsName:"双链小超",cardsFor: "retailStore",cardsSource: this.props.retailStore, + const retailStore = this.props.retailStore; + const { id,displayName, consumerOrderCount, retailStoreOrderCount, goodsCount, transportTaskCount, accountSetCount } = retailStore + + + + const cardsData = {cardsName:"双链小超",cardsFor: "retailStore",cardsSource: retailStore, subItems: [ ], diff --git a/bizui/src/bizcomponents/retailstore/RetailStore.profile.js b/bizui/src/bizcomponents/retailstore/RetailStore.profile.js new file mode 100644 index 000000000..342b09f65 --- /dev/null +++ b/bizui/src/bizcomponents/retailstore/RetailStore.profile.js @@ -0,0 +1,99 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './RetailStore.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (retailStore,targetComponent) =>{ + const userContext = null + return ( + +{retailStore.id} +{retailStore.name} +{retailStore.telephone} +{retailStore.owner} +{ moment(retailStore.founded).format('YYYY-MM-DD')} +{retailStore.latitude} +{retailStore.longitude} +{retailStore.description} +{ moment(retailStore.lastUpdateTime).format('YYYY-MM-DD')} +{retailStore.currentStatus} + + + ) +} + + + +class RetailStoreProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const retailStore = this.props.retailStore; + const { id,displayName, consumerOrderCount, retailStoreOrderCount, goodsCount, transportTaskCount, accountSetCount } = retailStore + + const cardsData = {cardsName:"双链小超",cardsFor: "retailStore",cardsSource: retailStore, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + retailStore: state._retailStore, +}))(Form.create()(RetailStoreProfile)) + diff --git a/bizui/src/bizcomponents/retailstore/RetailStore.profile.less b/bizui/src/bizcomponents/retailstore/RetailStore.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/retailstore/RetailStore.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/retailstore/RetailStore.search.js b/bizui/src/bizcomponents/retailstore/RetailStore.search.js index 1f6195df6..2048276ba 100644 --- a/bizui/src/bizcomponents/retailstore/RetailStore.search.js +++ b/bizui/src/bizcomponents/retailstore/RetailStore.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/retailstore/RetailStore.searchform.js b/bizui/src/bizcomponents/retailstore/RetailStore.searchform.js index dd57b821c..19163b65b 100644 --- a/bizui/src/bizcomponents/retailstore/RetailStore.searchform.js +++ b/bizui/src/bizcomponents/retailstore/RetailStore.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`retailStoreList.searchField`] = fieldName - value[`retailStoreList.searchVerb`] = searchVerb - value[`retailStoreList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,16 +127,17 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'telephone')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'owner')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'retailStoreCountryCenter')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'cityServiceCenter')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'description')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'currentStatus')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'telephone')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'owner')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'retailStoreCountryCenter')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'cityServiceCenter')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'description')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'currentStatus')) console.log("the final parameter", paramList) @@ -152,11 +153,12 @@ componentDidMount() { } - params['retailStoreList'] = 1 - params['retailStoreList.orderBy.0'] = "id" - params['retailStoreList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -211,8 +213,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -329,8 +331,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/retailstore/RetailStore.table.js b/bizui/src/bizcomponents/retailstore/RetailStore.table.js index eea60f357..8e4be247f 100644 --- a/bizui/src/bizcomponents/retailstore/RetailStore.table.js +++ b/bizui/src/bizcomponents/retailstore/RetailStore.table.js @@ -40,24 +40,53 @@ class RetailStoreTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = RetailStoreBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class RetailStoreTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class RetailStoreTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/retailstore/RetailStore.updateform.js b/bizui/src/bizcomponents/retailstore/RetailStore.updateform.js index 81a85e85e..8f6316b08 100644 --- a/bizui/src/bizcomponents/retailstore/RetailStore.updateform.js +++ b/bizui/src/bizcomponents/retailstore/RetailStore.updateform.js @@ -263,7 +263,7 @@ class RetailStoreUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -275,7 +275,7 @@ class RetailStoreUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -287,7 +287,7 @@ class RetailStoreUpdateForm extends Component { initialValue: selectedRow.telephone, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -299,7 +299,7 @@ class RetailStoreUpdateForm extends Component { initialValue: selectedRow.owner, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -311,7 +311,7 @@ class RetailStoreUpdateForm extends Component { initialValue: selectedRow.founded, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -323,7 +323,7 @@ class RetailStoreUpdateForm extends Component { initialValue: selectedRow.latitude, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -335,7 +335,7 @@ class RetailStoreUpdateForm extends Component { initialValue: selectedRow.longitude, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -347,7 +347,7 @@ class RetailStoreUpdateForm extends Component { initialValue: selectedRow.description, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.app.js b/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.app.js index a4d4aa175..73be74eb0 100644 --- a/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.app.js +++ b/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class RetailStoreCityServiceCenterBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -353,12 +362,14 @@ class RetailStoreCityServiceCenterBizApp extends React.PureComponent { buildRouters = () =>{ const {RetailStoreCityServiceCenterDashboard} = GlobalComponents - const {RetailStoreCityServiceCenterPreference} = GlobalComponents + const {RetailStoreCityServiceCenterPermission} = GlobalComponents + const {RetailStoreCityServiceCenterProfile} = GlobalComponents const routers=[ {path:"/retailStoreCityServiceCenter/:id/dashboard", component: RetailStoreCityServiceCenterDashboard}, - {path:"/retailStoreCityServiceCenter/:id/preference", component: RetailStoreCityServiceCenterPreference}, + {path:"/retailStoreCityServiceCenter/:id/profile", component: RetailStoreCityServiceCenterProfile}, + {path:"/retailStoreCityServiceCenter/:id/permission", component: RetailStoreCityServiceCenterPermission}, diff --git a/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.associateform.js b/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.associateform.js index 4fee77306..bc5c37b64 100644 --- a/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.associateform.js +++ b/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { name: '双链小超成都办事处', - founded: '2018-09-22', + founded: '2019-03-15', belongsToId: 'RSPC000001', } */ @@ -143,7 +143,7 @@ class RetailStoreCityServiceCenterAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -153,7 +153,7 @@ class RetailStoreCityServiceCenterAssociateForm extends Component { {getFieldDecorator('founded', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.associateform.less b/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.associateform.less +++ b/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.base.js b/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.base.js index 822124b3c..c21dad512 100644 --- a/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.base.js +++ b/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.base.js @@ -1,105 +1,91 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"双链小超城市服务中心", menuFor: "retailStoreCityServiceCenter", subItems: [ - {name: 'cityPartnerList', displayName:'城市合伙人', icon:'city',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'potentialCustomerList', displayName:'潜在的客户', icon:'om',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'cityEventList', displayName:'城市活动', icon:'city',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'retailStoreList', displayName:'双链小超', icon:'store',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'cityPartnerList', displayName:'城市合伙人', icon:'city',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'potentialCustomerList', displayName:'潜在的客户', icon:'om',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'cityEventList', displayName:'城市活动', icon:'city',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'retailStoreList', displayName:'双链小超', icon:'store',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + name: '名称', + founded: '成立', + belongsTo: '属于', + lastUpdateTime: '最后更新时间', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'retailStoreCityServiceCenter') }, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '13',render: (text, record)=>renderTextCell(text,record) }, - { title: '成立', dataIndex: 'founded', render: (text, record) =>renderDateCell(text,record) }, - { title: '属于', dataIndex: 'belongsTo', render: (text, record) => renderReferenceCell(text, record)}, - { title: '最后更新时间', dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'retailStoreCityServiceCenter') , sorter: true }, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '13',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.founded, dataIndex: 'founded', render: (text, record) =>renderDateCell(text,record), sorter: true }, + { title: fieldLabels.belongsTo, dataIndex: 'belongsTo', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.lastUpdateTime, dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record), sorter: true}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({retailStoreCityServiceCenter,targetComponent})=>{ -const fieldLabels = { - id: '序号', - name: '名称', - founded: '成立', - belongsTo: '属于', - lastUpdateTime: '最后更新时间', + + + const {RetailStoreCityServiceCenterService} = GlobalComponents + // const userContext = null + return ( + +{retailStoreCityServiceCenter.id} +{retailStoreCityServiceCenter.name} +{ moment(retailStoreCityServiceCenter.founded).format('YYYY-MM-DD')} +{retailStoreCityServiceCenter.belongsTo==null?appLocaleName(userContext,"NotAssigned"):`${retailStoreCityServiceCenter.belongsTo.displayName}(${retailStoreCityServiceCenter.belongsTo.id})`} + + showTransferModel(targetComponent,"属于","retailStoreProvinceCenter",RetailStoreCityServiceCenterService.requestCandidateBelongsTo, + RetailStoreCityServiceCenterService.transferToAnotherBelongsTo,"anotherBelongsToId",retailStoreCityServiceCenter.belongsTo?retailStoreCityServiceCenter.belongsTo.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{ moment(retailStoreCityServiceCenter.lastUpdateTime).format('YYYY-MM-DD')} + + {buildTransferModal(retailStoreCityServiceCenter,targetComponent)} + + ) } + + -const RetailStoreCityServiceCenterBase={menuData,displayColumns,fieldLabels} +const RetailStoreCityServiceCenterBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default RetailStoreCityServiceCenterBase diff --git a/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.createform.js b/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.createform.js index c91a2b0de..84a1b9620 100644 --- a/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.createform.js +++ b/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { name: '双链小超成都办事处', - founded: '2017-09-25', + founded: '2018-11-18', belongsToId: 'RSPC000001', } */ @@ -208,7 +208,7 @@ class RetailStoreCityServiceCenterCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -218,7 +218,7 @@ class RetailStoreCityServiceCenterCreateForm extends Component { {getFieldDecorator('founded', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.dashboard.js b/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.dashboard.js index 8efc7492d..c44b37241 100644 --- a/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.dashboard.js +++ b/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -147,6 +147,7 @@ class RetailStoreCityServiceCenterDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -155,13 +156,17 @@ class RetailStoreCityServiceCenterDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.model.js b/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.model.js index af62fcbfd..05aac188e 100644 --- a/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.model.js +++ b/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreCityServiceCenter/${id}/list/\CityPartnerList/城市合伙人+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreCityServiceCenter/${id}/list/CityPartnerList/城市合伙人+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateCityPartner({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreCityServiceCenter/${id}/list/\CityPartnerList/城市合伙人列表`, state: newPlayload } + const location = { pathname: `/retailStoreCityServiceCenter/${id}/list/CityPartnerList/城市合伙人列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextCityPartnerUpdateRow({ payload }, { call, put }) { @@ -206,7 +206,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreCityServiceCenter/${id}/list/\PotentialCustomerList/潜在的客户+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreCityServiceCenter/${id}/list/PotentialCustomerList/潜在的客户+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updatePotentialCustomer({ payload }, { call, put }) { @@ -228,7 +228,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreCityServiceCenter/${id}/list/\PotentialCustomerList/潜在的客户列表`, state: newPlayload } + const location = { pathname: `/retailStoreCityServiceCenter/${id}/list/PotentialCustomerList/潜在的客户列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextPotentialCustomerUpdateRow({ payload }, { call, put }) { @@ -275,7 +275,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreCityServiceCenter/${id}/list/\CityEventList/城市活动+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreCityServiceCenter/${id}/list/CityEventList/城市活动+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateCityEvent({ payload }, { call, put }) { @@ -297,7 +297,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreCityServiceCenter/${id}/list/\CityEventList/城市活动列表`, state: newPlayload } + const location = { pathname: `/retailStoreCityServiceCenter/${id}/list/CityEventList/城市活动列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextCityEventUpdateRow({ payload }, { call, put }) { @@ -344,7 +344,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreCityServiceCenter/${id}/list/\RetailStoreList/双链小超+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreCityServiceCenter/${id}/list/RetailStoreList/双链小超+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateRetailStore({ payload }, { call, put }) { @@ -366,7 +366,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreCityServiceCenter/${id}/list/\RetailStoreList/双链小超列表`, state: newPlayload } + const location = { pathname: `/retailStoreCityServiceCenter/${id}/list/RetailStoreList/双链小超列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextRetailStoreUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.permission.js b/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.permission.js new file mode 100644 index 000000000..385813164 --- /dev/null +++ b/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.permission.js @@ -0,0 +1,86 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './RetailStoreCityServiceCenter.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (retailStoreCityServiceCenter,targetComponent) =>{ + const userContext = null + return ( + +{retailStoreCityServiceCenter.id} +{retailStoreCityServiceCenter.name} +{ moment(retailStoreCityServiceCenter.founded).format('YYYY-MM-DD')} +{ moment(retailStoreCityServiceCenter.lastUpdateTime).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = retailStoreCityServiceCenter => { + const {RetailStoreCityServiceCenterBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class RetailStoreCityServiceCenterPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const retailStoreCityServiceCenter = this.props.retailStoreCityServiceCenter; + const { id,displayName, cityPartnerCount, potentialCustomerCount, cityEventCount, retailStoreCount } = retailStoreCityServiceCenter + const cardsData = {cardsName:"双链小超城市服务中心",cardsFor: "retailStoreCityServiceCenter",cardsSource: retailStoreCityServiceCenter, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + retailStoreCityServiceCenter: state._retailStoreCityServiceCenter, +}))(Form.create()(RetailStoreCityServiceCenterPermission)) + diff --git a/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.permission.less b/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.preference.js b/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.preference.js index c7f2e6e4a..83e9502c2 100644 --- a/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.preference.js +++ b/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.preference.js @@ -307,8 +307,12 @@ class RetailStoreCityServiceCenterPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, cityPartnerCount, potentialCustomerCount, cityEventCount, retailStoreCount } = this.props.retailStoreCityServiceCenter - const cardsData = {cardsName:"双链小超城市服务中心",cardsFor: "retailStoreCityServiceCenter",cardsSource: this.props.retailStoreCityServiceCenter, + const retailStoreCityServiceCenter = this.props.retailStoreCityServiceCenter; + const { id,displayName, cityPartnerCount, potentialCustomerCount, cityEventCount, retailStoreCount } = retailStoreCityServiceCenter + + + + const cardsData = {cardsName:"双链小超城市服务中心",cardsFor: "retailStoreCityServiceCenter",cardsSource: retailStoreCityServiceCenter, subItems: [ ], diff --git a/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.profile.js b/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.profile.js new file mode 100644 index 000000000..06a5180f7 --- /dev/null +++ b/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.profile.js @@ -0,0 +1,93 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './RetailStoreCityServiceCenter.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (retailStoreCityServiceCenter,targetComponent) =>{ + const userContext = null + return ( + +{retailStoreCityServiceCenter.id} +{retailStoreCityServiceCenter.name} +{ moment(retailStoreCityServiceCenter.founded).format('YYYY-MM-DD')} +{ moment(retailStoreCityServiceCenter.lastUpdateTime).format('YYYY-MM-DD')} + + + ) +} + + + +class RetailStoreCityServiceCenterProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const retailStoreCityServiceCenter = this.props.retailStoreCityServiceCenter; + const { id,displayName, cityPartnerCount, potentialCustomerCount, cityEventCount, retailStoreCount } = retailStoreCityServiceCenter + + const cardsData = {cardsName:"双链小超城市服务中心",cardsFor: "retailStoreCityServiceCenter",cardsSource: retailStoreCityServiceCenter, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + retailStoreCityServiceCenter: state._retailStoreCityServiceCenter, +}))(Form.create()(RetailStoreCityServiceCenterProfile)) + diff --git a/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.profile.less b/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.search.js b/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.search.js index cada84cff..b6c30ac07 100644 --- a/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.search.js +++ b/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.searchform.js b/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.searchform.js index 96d541091..cc92dd19b 100644 --- a/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.searchform.js +++ b/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`retailStoreCityServiceCenterList.searchField`] = fieldName - value[`retailStoreCityServiceCenterList.searchVerb`] = searchVerb - value[`retailStoreCityServiceCenterList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,11 +127,12 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'belongsTo')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'belongsTo')) console.log("the final parameter", paramList) @@ -147,11 +148,12 @@ componentDidMount() { } - params['retailStoreCityServiceCenterList'] = 1 - params['retailStoreCityServiceCenterList.orderBy.0'] = "id" - params['retailStoreCityServiceCenterList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -206,8 +208,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -277,8 +279,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.table.js b/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.table.js index c362b9da4..4c06847f6 100644 --- a/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.table.js +++ b/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.table.js @@ -40,24 +40,53 @@ class RetailStoreCityServiceCenterTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = RetailStoreCityServiceCenterBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class RetailStoreCityServiceCenterTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class RetailStoreCityServiceCenterTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.updateform.js b/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.updateform.js index a43daa5e3..e50e446fa 100644 --- a/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.updateform.js +++ b/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.updateform.js @@ -263,7 +263,7 @@ class RetailStoreCityServiceCenterUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -275,7 +275,7 @@ class RetailStoreCityServiceCenterUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -287,7 +287,7 @@ class RetailStoreCityServiceCenterUpdateForm extends Component { initialValue: selectedRow.founded, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.app.js b/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.app.js index 7ee02f286..5ed57db1c 100644 --- a/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.app.js +++ b/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class RetailStoreClosingBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class RetailStoreClosingBizApp extends React.PureComponent { buildRouters = () =>{ const {RetailStoreClosingDashboard} = GlobalComponents - const {RetailStoreClosingPreference} = GlobalComponents + const {RetailStoreClosingPermission} = GlobalComponents + const {RetailStoreClosingProfile} = GlobalComponents const routers=[ {path:"/retailStoreClosing/:id/dashboard", component: RetailStoreClosingDashboard}, - {path:"/retailStoreClosing/:id/preference", component: RetailStoreClosingPreference}, + {path:"/retailStoreClosing/:id/profile", component: RetailStoreClosingProfile}, + {path:"/retailStoreClosing/:id/permission", component: RetailStoreClosingPermission}, diff --git a/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.associateform.js b/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.associateform.js index 9cb4ed4b1..04c62335b 100644 --- a/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.associateform.js +++ b/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.associateform.js @@ -138,7 +138,7 @@ class RetailStoreClosingAssociateForm extends Component { {getFieldDecorator('comment', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.associateform.less b/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.associateform.less +++ b/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.base.js b/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.base.js index 0ddf43c97..049fa240d 100644 --- a/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.base.js +++ b/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.base.js @@ -1,96 +1,74 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"商店关闭", menuFor: "retailStoreClosing", subItems: [ - {name: 'retailStoreList', displayName:'双链小超', icon:'store',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'retailStoreList', displayName:'双链小超', icon:'store',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + comment: '评论', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'retailStoreClosing') }, - { title: '评论', debugtype: 'string', dataIndex: 'comment', width: '6',render: (text, record)=>renderTextCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'retailStoreClosing') , sorter: true }, + { title: fieldLabels.comment, debugtype: 'string', dataIndex: 'comment', width: '6',render: (text, record)=>renderTextCell(text,record)}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({retailStoreClosing,targetComponent})=>{ -const fieldLabels = { - id: '序号', - comment: '评论', + + + const {RetailStoreClosingService} = GlobalComponents + // const userContext = null + return ( + +{retailStoreClosing.id} +{retailStoreClosing.comment} + + {buildTransferModal(retailStoreClosing,targetComponent)} + + ) } + + -const RetailStoreClosingBase={menuData,displayColumns,fieldLabels} +const RetailStoreClosingBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default RetailStoreClosingBase diff --git a/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.createform.js b/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.createform.js index d1806be67..21a4cd28f 100644 --- a/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.createform.js +++ b/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.createform.js @@ -206,7 +206,7 @@ class RetailStoreClosingCreateForm extends Component { {getFieldDecorator('comment', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.dashboard.js b/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.dashboard.js index ef3de4e9b..4180bc4fe 100644 --- a/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.dashboard.js +++ b/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -136,6 +136,7 @@ class RetailStoreClosingDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -144,13 +145,17 @@ class RetailStoreClosingDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.model.js b/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.model.js index 2d6835b16..609f50a74 100644 --- a/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.model.js +++ b/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreClosing/${id}/list/\RetailStoreList/双链小超+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreClosing/${id}/list/RetailStoreList/双链小超+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateRetailStore({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreClosing/${id}/list/\RetailStoreList/双链小超列表`, state: newPlayload } + const location = { pathname: `/retailStoreClosing/${id}/list/RetailStoreList/双链小超列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextRetailStoreUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.permission.js b/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.permission.js new file mode 100644 index 000000000..359cf6fa4 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.permission.js @@ -0,0 +1,84 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './RetailStoreClosing.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (retailStoreClosing,targetComponent) =>{ + const userContext = null + return ( + +{retailStoreClosing.id} +{retailStoreClosing.comment} + + + ) +} + + +const renderPermissionSetting = retailStoreClosing => { + const {RetailStoreClosingBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class RetailStoreClosingPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const retailStoreClosing = this.props.retailStoreClosing; + const { id,displayName, retailStoreCount } = retailStoreClosing + const cardsData = {cardsName:"商店关闭",cardsFor: "retailStoreClosing",cardsSource: retailStoreClosing, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + retailStoreClosing: state._retailStoreClosing, +}))(Form.create()(RetailStoreClosingPermission)) + diff --git a/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.permission.less b/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.preference.js b/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.preference.js index 009c4ab42..f27c2c84e 100644 --- a/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.preference.js +++ b/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.preference.js @@ -299,8 +299,12 @@ class RetailStoreClosingPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, retailStoreCount } = this.props.retailStoreClosing - const cardsData = {cardsName:"商店关闭",cardsFor: "retailStoreClosing",cardsSource: this.props.retailStoreClosing, + const retailStoreClosing = this.props.retailStoreClosing; + const { id,displayName, retailStoreCount } = retailStoreClosing + + + + const cardsData = {cardsName:"商店关闭",cardsFor: "retailStoreClosing",cardsSource: retailStoreClosing, subItems: [ ], diff --git a/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.profile.js b/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.profile.js new file mode 100644 index 000000000..2658c23a0 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.profile.js @@ -0,0 +1,91 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './RetailStoreClosing.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (retailStoreClosing,targetComponent) =>{ + const userContext = null + return ( + +{retailStoreClosing.id} +{retailStoreClosing.comment} + + + ) +} + + + +class RetailStoreClosingProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const retailStoreClosing = this.props.retailStoreClosing; + const { id,displayName, retailStoreCount } = retailStoreClosing + + const cardsData = {cardsName:"商店关闭",cardsFor: "retailStoreClosing",cardsSource: retailStoreClosing, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + retailStoreClosing: state._retailStoreClosing, +}))(Form.create()(RetailStoreClosingProfile)) + diff --git a/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.profile.less b/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.search.js b/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.search.js index 295be0cbd..75b187d2a 100644 --- a/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.search.js +++ b/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.searchform.js b/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.searchform.js index 216490678..3bd87e755 100644 --- a/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.searchform.js +++ b/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`retailStoreClosingList.searchField`] = fieldName - value[`retailStoreClosingList.searchVerb`] = searchVerb - value[`retailStoreClosingList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,10 +127,11 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'comment')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'comment')) console.log("the final parameter", paramList) @@ -146,11 +147,12 @@ componentDidMount() { } - params['retailStoreClosingList'] = 1 - params['retailStoreClosingList.orderBy.0'] = "id" - params['retailStoreClosingList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -205,8 +207,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -261,8 +263,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.table.js b/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.table.js index b768f6afc..1892721e7 100644 --- a/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.table.js +++ b/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.table.js @@ -40,24 +40,53 @@ class RetailStoreClosingTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = RetailStoreClosingBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class RetailStoreClosingTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class RetailStoreClosingTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.updateform.js b/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.updateform.js index bdd65c49e..4dc49eb11 100644 --- a/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.updateform.js +++ b/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.updateform.js @@ -261,7 +261,7 @@ class RetailStoreClosingUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class RetailStoreClosingUpdateForm extends Component { initialValue: selectedRow.comment, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.app.js b/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.app.js index 5a19bfb86..b35daf2ec 100644 --- a/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.app.js +++ b/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class RetailStoreCountryCenterBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -1333,12 +1342,14 @@ class RetailStoreCountryCenterBizApp extends React.PureComponent { buildRouters = () =>{ const {RetailStoreCountryCenterDashboard} = GlobalComponents - const {RetailStoreCountryCenterPreference} = GlobalComponents + const {RetailStoreCountryCenterPermission} = GlobalComponents + const {RetailStoreCountryCenterProfile} = GlobalComponents const routers=[ {path:"/retailStoreCountryCenter/:id/dashboard", component: RetailStoreCountryCenterDashboard}, - {path:"/retailStoreCountryCenter/:id/preference", component: RetailStoreCountryCenterPreference}, + {path:"/retailStoreCountryCenter/:id/profile", component: RetailStoreCountryCenterProfile}, + {path:"/retailStoreCountryCenter/:id/permission", component: RetailStoreCountryCenterPermission}, diff --git a/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.associateform.js b/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.associateform.js index 3263758aa..6c4395ccf 100644 --- a/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.associateform.js +++ b/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.associateform.js @@ -20,7 +20,7 @@ const testValues = {}; const testValues = { name: '双链小超中国国运营中心', serviceNumber: '4000-800-', - founded: '2017-03-27', + founded: '2018-09-28', webSite: 'https://www.doublechaintech.com/', address: '四川省成都市天府新区双链大厦', operatedBy: '双链集团', @@ -168,7 +168,7 @@ class RetailStoreCountryCenterAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -178,7 +178,7 @@ class RetailStoreCountryCenterAssociateForm extends Component { {getFieldDecorator('serviceNumber', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -188,7 +188,7 @@ class RetailStoreCountryCenterAssociateForm extends Component { {getFieldDecorator('founded', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -198,7 +198,7 @@ class RetailStoreCountryCenterAssociateForm extends Component { {getFieldDecorator('webSite', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -208,7 +208,7 @@ class RetailStoreCountryCenterAssociateForm extends Component { {getFieldDecorator('address', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -218,7 +218,7 @@ class RetailStoreCountryCenterAssociateForm extends Component { {getFieldDecorator('operatedBy', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -228,7 +228,7 @@ class RetailStoreCountryCenterAssociateForm extends Component { {getFieldDecorator('legalRepresentative', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -238,7 +238,7 @@ class RetailStoreCountryCenterAssociateForm extends Component { {getFieldDecorator('description', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.associateform.less b/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.associateform.less +++ b/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.base.js b/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.base.js index f82ad8361..2ad968a3e 100644 --- a/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.base.js +++ b/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.base.js @@ -1,108 +1,54 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"双链小超全国运营中心", menuFor: "retailStoreCountryCenter", subItems: [ - {name: 'catalogList', displayName:'目录', icon:'at',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'retailStoreProvinceCenterList', displayName:'双链小超省中心', icon:'store',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'retailStoreList', displayName:'双链小超', icon:'store',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'retailStoreMemberList', displayName:'生超会员', icon:'store',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'goodsSupplierList', displayName:'产品供应商', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'supplyOrderList', displayName:'供应订单', icon:'first-order',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'retailStoreOrderList', displayName:'生超的订单', icon:'store',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'warehouseList', displayName:'仓库', icon:'warehouse',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'transportFleetList', displayName:'运输车队', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'accountSetList', displayName:'账套', icon:'headset',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'levelOneDepartmentList', displayName:'一级部门', icon:'bone',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'employeeList', displayName:'员工', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'instructorList', displayName:'讲师', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'companyTrainingList', displayName:'公司培训', icon:'om',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'catalogList', displayName:'目录', icon:'at',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '产品管理'}, + {name: 'retailStoreProvinceCenterList', displayName:'双链小超省中心', icon:'store',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '组织机构'}, + {name: 'retailStoreList', displayName:'双链小超', icon:'store',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '加盟管理'}, + {name: 'retailStoreMemberList', displayName:'生超会员', icon:'store',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '会员管理'}, + {name: 'goodsSupplierList', displayName:'产品供应商', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '供应管理'}, + {name: 'supplyOrderList', displayName:'供应订单', icon:'first-order',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '供应管理'}, + {name: 'retailStoreOrderList', displayName:'生超的订单', icon:'store',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '销售管理'}, + {name: 'warehouseList', displayName:'仓库', icon:'warehouse',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '仓配运一体化'}, + {name: 'transportFleetList', displayName:'运输车队', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '仓配运一体化'}, + {name: 'accountSetList', displayName:'账套', icon:'headset',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '财务管理'}, + {name: 'levelOneDepartmentList', displayName:'一级部门', icon:'bone',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '组织机构'}, + {name: 'employeeList', displayName:'员工', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '人力资源'}, + {name: 'instructorList', displayName:'讲师', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '人力资源'}, + {name: 'companyTrainingList', displayName:'公司培训', icon:'om',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '人力资源'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) - -} - -const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'retailStoreCountryCenter') }, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '15',render: (text, record)=>renderTextCell(text,record) }, - { title: '服务号码', debugtype: 'string', dataIndex: 'serviceNumber', width: '13',render: (text, record)=>renderTextCell(text,record) }, - { title: '成立', dataIndex: 'founded', render: (text, record) =>renderDateCell(text,record) }, - { title: '网站', debugtype: 'string_url', dataIndex: 'webSite', width: '36',render: (text, record)=>renderTextCell(text,record) }, - { title: '地址', debugtype: 'string', dataIndex: 'address', width: '18',render: (text, record)=>renderTextCell(text,record) }, - { title: '由', debugtype: 'string', dataIndex: 'operatedBy', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: '法定代表人', debugtype: 'string', dataIndex: 'legalRepresentative', width: '7',render: (text, record)=>renderTextCell(text,record) }, - { title: '描述', debugtype: 'string', dataIndex: 'description', width: '17',render: (text, record)=>renderTextCell(text,record) }, - -] - const fieldLabels = { id: '序号', name: '名称', @@ -116,8 +62,47 @@ const fieldLabels = { } +const displayColumns = [ + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'retailStoreCountryCenter') , sorter: true }, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '15',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.serviceNumber, debugtype: 'string', dataIndex: 'serviceNumber', width: '13',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.founded, dataIndex: 'founded', render: (text, record) =>renderDateCell(text,record), sorter: true }, + { title: fieldLabels.webSite, debugtype: 'string_url', dataIndex: 'webSite', width: '36',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.address, debugtype: 'string', dataIndex: 'address', width: '18',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.operatedBy, debugtype: 'string', dataIndex: 'operatedBy', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.legalRepresentative, debugtype: 'string', dataIndex: 'legalRepresentative', width: '7',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.description, debugtype: 'string', dataIndex: 'description', width: '17',render: (text, record)=>renderTextCell(text,record)}, + +] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({retailStoreCountryCenter,targetComponent})=>{ + + + + const {RetailStoreCountryCenterService} = GlobalComponents + // const userContext = null + return ( + +{retailStoreCountryCenter.id} +{retailStoreCountryCenter.name} +{retailStoreCountryCenter.serviceNumber} +{ moment(retailStoreCountryCenter.founded).format('YYYY-MM-DD')} +{retailStoreCountryCenter.webSite} +{retailStoreCountryCenter.address} +{retailStoreCountryCenter.operatedBy} +{retailStoreCountryCenter.legalRepresentative} +{retailStoreCountryCenter.description} + + {buildTransferModal(retailStoreCountryCenter,targetComponent)} + + ) + +} + + + -const RetailStoreCountryCenterBase={menuData,displayColumns,fieldLabels} +const RetailStoreCountryCenterBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default RetailStoreCountryCenterBase diff --git a/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.createform.js b/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.createform.js index 8c417cba6..3295004c0 100644 --- a/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.createform.js +++ b/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.createform.js @@ -19,7 +19,7 @@ const testValues = {}; const testValues = { name: '双链小超中国国运营中心', serviceNumber: '4000-800-', - founded: '2018-01-31', + founded: '2018-08-11', webSite: 'https://www.doublechaintech.com/', address: '四川省成都市天府新区双链大厦', operatedBy: '双链集团', @@ -213,7 +213,7 @@ class RetailStoreCountryCenterCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -223,7 +223,7 @@ class RetailStoreCountryCenterCreateForm extends Component { {getFieldDecorator('serviceNumber', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -233,7 +233,7 @@ class RetailStoreCountryCenterCreateForm extends Component { {getFieldDecorator('founded', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -243,7 +243,7 @@ class RetailStoreCountryCenterCreateForm extends Component { {getFieldDecorator('webSite', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -253,7 +253,7 @@ class RetailStoreCountryCenterCreateForm extends Component { {getFieldDecorator('address', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -263,7 +263,7 @@ class RetailStoreCountryCenterCreateForm extends Component { {getFieldDecorator('operatedBy', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class RetailStoreCountryCenterCreateForm extends Component { {getFieldDecorator('legalRepresentative', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -283,7 +283,7 @@ class RetailStoreCountryCenterCreateForm extends Component { {getFieldDecorator('description', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.dashboard.js b/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.dashboard.js index 7a6d76006..eedf652aa 100644 --- a/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.dashboard.js +++ b/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -156,6 +156,7 @@ class RetailStoreCountryCenterDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -164,13 +165,17 @@ class RetailStoreCountryCenterDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.model.js b/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.model.js index 836162aa0..26e1dee8b 100644 --- a/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.model.js +++ b/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreCountryCenter/${id}/list/\CatalogList/目录+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreCountryCenter/${id}/list/CatalogList/目录+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateCatalog({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreCountryCenter/${id}/list/\CatalogList/目录列表`, state: newPlayload } + const location = { pathname: `/retailStoreCountryCenter/${id}/list/CatalogList/目录列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextCatalogUpdateRow({ payload }, { call, put }) { @@ -206,7 +206,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreCountryCenter/${id}/list/\RetailStoreProvinceCenterList/双链小超省中心+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreCountryCenter/${id}/list/RetailStoreProvinceCenterList/双链小超省中心+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateRetailStoreProvinceCenter({ payload }, { call, put }) { @@ -228,7 +228,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreCountryCenter/${id}/list/\RetailStoreProvinceCenterList/双链小超省中心列表`, state: newPlayload } + const location = { pathname: `/retailStoreCountryCenter/${id}/list/RetailStoreProvinceCenterList/双链小超省中心列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextRetailStoreProvinceCenterUpdateRow({ payload }, { call, put }) { @@ -275,7 +275,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreCountryCenter/${id}/list/\RetailStoreList/双链小超+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreCountryCenter/${id}/list/RetailStoreList/双链小超+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateRetailStore({ payload }, { call, put }) { @@ -297,7 +297,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreCountryCenter/${id}/list/\RetailStoreList/双链小超列表`, state: newPlayload } + const location = { pathname: `/retailStoreCountryCenter/${id}/list/RetailStoreList/双链小超列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextRetailStoreUpdateRow({ payload }, { call, put }) { @@ -344,7 +344,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreCountryCenter/${id}/list/\RetailStoreMemberList/生超会员+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreCountryCenter/${id}/list/RetailStoreMemberList/生超会员+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateRetailStoreMember({ payload }, { call, put }) { @@ -366,7 +366,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreCountryCenter/${id}/list/\RetailStoreMemberList/生超会员列表`, state: newPlayload } + const location = { pathname: `/retailStoreCountryCenter/${id}/list/RetailStoreMemberList/生超会员列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextRetailStoreMemberUpdateRow({ payload }, { call, put }) { @@ -413,7 +413,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreCountryCenter/${id}/list/\GoodsSupplierList/产品供应商+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreCountryCenter/${id}/list/GoodsSupplierList/产品供应商+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateGoodsSupplier({ payload }, { call, put }) { @@ -435,7 +435,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreCountryCenter/${id}/list/\GoodsSupplierList/产品供应商列表`, state: newPlayload } + const location = { pathname: `/retailStoreCountryCenter/${id}/list/GoodsSupplierList/产品供应商列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextGoodsSupplierUpdateRow({ payload }, { call, put }) { @@ -482,7 +482,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreCountryCenter/${id}/list/\SupplyOrderList/供应订单+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreCountryCenter/${id}/list/SupplyOrderList/供应订单+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateSupplyOrder({ payload }, { call, put }) { @@ -504,7 +504,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreCountryCenter/${id}/list/\SupplyOrderList/供应订单列表`, state: newPlayload } + const location = { pathname: `/retailStoreCountryCenter/${id}/list/SupplyOrderList/供应订单列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextSupplyOrderUpdateRow({ payload }, { call, put }) { @@ -551,7 +551,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreCountryCenter/${id}/list/\RetailStoreOrderList/生超的订单+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreCountryCenter/${id}/list/RetailStoreOrderList/生超的订单+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateRetailStoreOrder({ payload }, { call, put }) { @@ -573,7 +573,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreCountryCenter/${id}/list/\RetailStoreOrderList/生超的订单列表`, state: newPlayload } + const location = { pathname: `/retailStoreCountryCenter/${id}/list/RetailStoreOrderList/生超的订单列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextRetailStoreOrderUpdateRow({ payload }, { call, put }) { @@ -620,7 +620,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreCountryCenter/${id}/list/\WarehouseList/仓库+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreCountryCenter/${id}/list/WarehouseList/仓库+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateWarehouse({ payload }, { call, put }) { @@ -642,7 +642,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreCountryCenter/${id}/list/\WarehouseList/仓库列表`, state: newPlayload } + const location = { pathname: `/retailStoreCountryCenter/${id}/list/WarehouseList/仓库列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextWarehouseUpdateRow({ payload }, { call, put }) { @@ -689,7 +689,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreCountryCenter/${id}/list/\TransportFleetList/运输车队+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreCountryCenter/${id}/list/TransportFleetList/运输车队+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateTransportFleet({ payload }, { call, put }) { @@ -711,7 +711,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreCountryCenter/${id}/list/\TransportFleetList/运输车队列表`, state: newPlayload } + const location = { pathname: `/retailStoreCountryCenter/${id}/list/TransportFleetList/运输车队列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextTransportFleetUpdateRow({ payload }, { call, put }) { @@ -758,7 +758,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreCountryCenter/${id}/list/\AccountSetList/账套+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreCountryCenter/${id}/list/AccountSetList/账套+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateAccountSet({ payload }, { call, put }) { @@ -780,7 +780,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreCountryCenter/${id}/list/\AccountSetList/账套列表`, state: newPlayload } + const location = { pathname: `/retailStoreCountryCenter/${id}/list/AccountSetList/账套列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextAccountSetUpdateRow({ payload }, { call, put }) { @@ -827,7 +827,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreCountryCenter/${id}/list/\LevelOneDepartmentList/一级部门+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreCountryCenter/${id}/list/LevelOneDepartmentList/一级部门+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateLevelOneDepartment({ payload }, { call, put }) { @@ -849,7 +849,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreCountryCenter/${id}/list/\LevelOneDepartmentList/一级部门列表`, state: newPlayload } + const location = { pathname: `/retailStoreCountryCenter/${id}/list/LevelOneDepartmentList/一级部门列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextLevelOneDepartmentUpdateRow({ payload }, { call, put }) { @@ -896,7 +896,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreCountryCenter/${id}/list/\SkillTypeList/技能类型+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreCountryCenter/${id}/list/SkillTypeList/技能类型+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateSkillType({ payload }, { call, put }) { @@ -918,7 +918,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreCountryCenter/${id}/list/\SkillTypeList/技能类型列表`, state: newPlayload } + const location = { pathname: `/retailStoreCountryCenter/${id}/list/SkillTypeList/技能类型列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextSkillTypeUpdateRow({ payload }, { call, put }) { @@ -965,7 +965,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreCountryCenter/${id}/list/\ResponsibilityTypeList/责任类型+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreCountryCenter/${id}/list/ResponsibilityTypeList/责任类型+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateResponsibilityType({ payload }, { call, put }) { @@ -987,7 +987,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreCountryCenter/${id}/list/\ResponsibilityTypeList/责任类型列表`, state: newPlayload } + const location = { pathname: `/retailStoreCountryCenter/${id}/list/ResponsibilityTypeList/责任类型列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextResponsibilityTypeUpdateRow({ payload }, { call, put }) { @@ -1034,7 +1034,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreCountryCenter/${id}/list/\TerminationReasonList/雇佣终止的原因+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreCountryCenter/${id}/list/TerminationReasonList/雇佣终止的原因+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateTerminationReason({ payload }, { call, put }) { @@ -1056,7 +1056,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreCountryCenter/${id}/list/\TerminationReasonList/雇佣终止的原因列表`, state: newPlayload } + const location = { pathname: `/retailStoreCountryCenter/${id}/list/TerminationReasonList/雇佣终止的原因列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextTerminationReasonUpdateRow({ payload }, { call, put }) { @@ -1103,7 +1103,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreCountryCenter/${id}/list/\TerminationTypeList/雇佣终止类型+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreCountryCenter/${id}/list/TerminationTypeList/雇佣终止类型+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateTerminationType({ payload }, { call, put }) { @@ -1125,7 +1125,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreCountryCenter/${id}/list/\TerminationTypeList/雇佣终止类型列表`, state: newPlayload } + const location = { pathname: `/retailStoreCountryCenter/${id}/list/TerminationTypeList/雇佣终止类型列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextTerminationTypeUpdateRow({ payload }, { call, put }) { @@ -1172,7 +1172,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreCountryCenter/${id}/list/\OccupationTypeList/职位类型+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreCountryCenter/${id}/list/OccupationTypeList/职位类型+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateOccupationType({ payload }, { call, put }) { @@ -1194,7 +1194,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreCountryCenter/${id}/list/\OccupationTypeList/职位类型列表`, state: newPlayload } + const location = { pathname: `/retailStoreCountryCenter/${id}/list/OccupationTypeList/职位类型列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextOccupationTypeUpdateRow({ payload }, { call, put }) { @@ -1241,7 +1241,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreCountryCenter/${id}/list/\LeaveTypeList/请假类型+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreCountryCenter/${id}/list/LeaveTypeList/请假类型+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateLeaveType({ payload }, { call, put }) { @@ -1263,7 +1263,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreCountryCenter/${id}/list/\LeaveTypeList/请假类型列表`, state: newPlayload } + const location = { pathname: `/retailStoreCountryCenter/${id}/list/LeaveTypeList/请假类型列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextLeaveTypeUpdateRow({ payload }, { call, put }) { @@ -1310,7 +1310,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreCountryCenter/${id}/list/\SalaryGradeList/工资等级+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreCountryCenter/${id}/list/SalaryGradeList/工资等级+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateSalaryGrade({ payload }, { call, put }) { @@ -1332,7 +1332,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreCountryCenter/${id}/list/\SalaryGradeList/工资等级列表`, state: newPlayload } + const location = { pathname: `/retailStoreCountryCenter/${id}/list/SalaryGradeList/工资等级列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextSalaryGradeUpdateRow({ payload }, { call, put }) { @@ -1379,7 +1379,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreCountryCenter/${id}/list/\InterviewTypeList/面试类型+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreCountryCenter/${id}/list/InterviewTypeList/面试类型+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateInterviewType({ payload }, { call, put }) { @@ -1401,7 +1401,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreCountryCenter/${id}/list/\InterviewTypeList/面试类型列表`, state: newPlayload } + const location = { pathname: `/retailStoreCountryCenter/${id}/list/InterviewTypeList/面试类型列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextInterviewTypeUpdateRow({ payload }, { call, put }) { @@ -1448,7 +1448,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreCountryCenter/${id}/list/\TrainingCourseTypeList/培训课程类型+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreCountryCenter/${id}/list/TrainingCourseTypeList/培训课程类型+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateTrainingCourseType({ payload }, { call, put }) { @@ -1470,7 +1470,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreCountryCenter/${id}/list/\TrainingCourseTypeList/培训课程类型列表`, state: newPlayload } + const location = { pathname: `/retailStoreCountryCenter/${id}/list/TrainingCourseTypeList/培训课程类型列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextTrainingCourseTypeUpdateRow({ payload }, { call, put }) { @@ -1517,7 +1517,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreCountryCenter/${id}/list/\PublicHolidayList/公共假日+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreCountryCenter/${id}/list/PublicHolidayList/公共假日+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updatePublicHoliday({ payload }, { call, put }) { @@ -1539,7 +1539,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreCountryCenter/${id}/list/\PublicHolidayList/公共假日列表`, state: newPlayload } + const location = { pathname: `/retailStoreCountryCenter/${id}/list/PublicHolidayList/公共假日列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextPublicHolidayUpdateRow({ payload }, { call, put }) { @@ -1586,7 +1586,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreCountryCenter/${id}/list/\EmployeeList/员工+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreCountryCenter/${id}/list/EmployeeList/员工+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateEmployee({ payload }, { call, put }) { @@ -1608,7 +1608,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreCountryCenter/${id}/list/\EmployeeList/员工列表`, state: newPlayload } + const location = { pathname: `/retailStoreCountryCenter/${id}/list/EmployeeList/员工列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextEmployeeUpdateRow({ payload }, { call, put }) { @@ -1655,7 +1655,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreCountryCenter/${id}/list/\InstructorList/讲师+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreCountryCenter/${id}/list/InstructorList/讲师+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateInstructor({ payload }, { call, put }) { @@ -1677,7 +1677,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreCountryCenter/${id}/list/\InstructorList/讲师列表`, state: newPlayload } + const location = { pathname: `/retailStoreCountryCenter/${id}/list/InstructorList/讲师列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextInstructorUpdateRow({ payload }, { call, put }) { @@ -1724,7 +1724,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreCountryCenter/${id}/list/\CompanyTrainingList/公司培训+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreCountryCenter/${id}/list/CompanyTrainingList/公司培训+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateCompanyTraining({ payload }, { call, put }) { @@ -1746,7 +1746,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreCountryCenter/${id}/list/\CompanyTrainingList/公司培训列表`, state: newPlayload } + const location = { pathname: `/retailStoreCountryCenter/${id}/list/CompanyTrainingList/公司培训列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextCompanyTrainingUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.permission.js b/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.permission.js new file mode 100644 index 000000000..7196d3837 --- /dev/null +++ b/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.permission.js @@ -0,0 +1,101 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './RetailStoreCountryCenter.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (retailStoreCountryCenter,targetComponent) =>{ + const userContext = null + return ( + +{retailStoreCountryCenter.id} +{retailStoreCountryCenter.name} +{retailStoreCountryCenter.serviceNumber} +{ moment(retailStoreCountryCenter.founded).format('YYYY-MM-DD')} +{retailStoreCountryCenter.webSite} +{retailStoreCountryCenter.address} +{retailStoreCountryCenter.operatedBy} +{retailStoreCountryCenter.legalRepresentative} +{retailStoreCountryCenter.description} + + + ) +} + + +const renderPermissionSetting = retailStoreCountryCenter => { + const {RetailStoreCountryCenterBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class RetailStoreCountryCenterPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const retailStoreCountryCenter = this.props.retailStoreCountryCenter; + const { id,displayName, catalogCount, retailStoreProvinceCenterCount, retailStoreCount, retailStoreMemberCount, goodsSupplierCount, supplyOrderCount, retailStoreOrderCount, warehouseCount, transportFleetCount, accountSetCount, levelOneDepartmentCount, skillTypeCount, responsibilityTypeCount, terminationReasonCount, terminationTypeCount, occupationTypeCount, leaveTypeCount, salaryGradeCount, interviewTypeCount, trainingCourseTypeCount, publicHolidayCount, employeeCount, instructorCount, companyTrainingCount } = retailStoreCountryCenter + const cardsData = {cardsName:"双链小超全国运营中心",cardsFor: "retailStoreCountryCenter",cardsSource: retailStoreCountryCenter, + subItems: [ +{name: 'skillTypeList', displayName:'技能类型',type:'skillType',count:skillTypeCount,addFunction: true, role: 'skillType', data: retailStoreCountryCenter.skillTypeList}, +{name: 'responsibilityTypeList', displayName:'责任类型',type:'responsibilityType',count:responsibilityTypeCount,addFunction: true, role: 'responsibilityType', data: retailStoreCountryCenter.responsibilityTypeList}, +{name: 'terminationReasonList', displayName:'雇佣终止的原因',type:'terminationReason',count:terminationReasonCount,addFunction: true, role: 'terminationReason', data: retailStoreCountryCenter.terminationReasonList}, +{name: 'terminationTypeList', displayName:'雇佣终止类型',type:'terminationType',count:terminationTypeCount,addFunction: true, role: 'terminationType', data: retailStoreCountryCenter.terminationTypeList}, +{name: 'occupationTypeList', displayName:'职位类型',type:'occupationType',count:occupationTypeCount,addFunction: true, role: 'occupationType', data: retailStoreCountryCenter.occupationTypeList}, +{name: 'leaveTypeList', displayName:'请假类型',type:'leaveType',count:leaveTypeCount,addFunction: true, role: 'leaveType', data: retailStoreCountryCenter.leaveTypeList}, +{name: 'salaryGradeList', displayName:'工资等级',type:'salaryGrade',count:salaryGradeCount,addFunction: true, role: 'salaryGrade', data: retailStoreCountryCenter.salaryGradeList}, +{name: 'interviewTypeList', displayName:'面试类型',type:'interviewType',count:interviewTypeCount,addFunction: true, role: 'interviewType', data: retailStoreCountryCenter.interviewTypeList}, +{name: 'trainingCourseTypeList', displayName:'培训课程类型',type:'trainingCourseType',count:trainingCourseTypeCount,addFunction: true, role: 'trainingCourseType', data: retailStoreCountryCenter.trainingCourseTypeList}, +{name: 'publicHolidayList', displayName:'公共假日',type:'publicHoliday',count:publicHolidayCount,addFunction: true, role: 'publicHoliday', data: retailStoreCountryCenter.publicHolidayList}, + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + retailStoreCountryCenter: state._retailStoreCountryCenter, +}))(Form.create()(RetailStoreCountryCenterPermission)) + diff --git a/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.permission.less b/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.preference.js b/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.preference.js index 435b8d121..b1619662a 100644 --- a/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.preference.js +++ b/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.preference.js @@ -306,19 +306,23 @@ class RetailStoreCountryCenterPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, catalogCount, retailStoreProvinceCenterCount, retailStoreCount, retailStoreMemberCount, goodsSupplierCount, supplyOrderCount, retailStoreOrderCount, warehouseCount, transportFleetCount, accountSetCount, levelOneDepartmentCount, skillTypeCount, responsibilityTypeCount, terminationReasonCount, terminationTypeCount, occupationTypeCount, leaveTypeCount, salaryGradeCount, interviewTypeCount, trainingCourseTypeCount, publicHolidayCount, employeeCount, instructorCount, companyTrainingCount } = this.props.retailStoreCountryCenter - const cardsData = {cardsName:"双链小超全国运营中心",cardsFor: "retailStoreCountryCenter",cardsSource: this.props.retailStoreCountryCenter, + const retailStoreCountryCenter = this.props.retailStoreCountryCenter; + const { id,displayName, catalogCount, retailStoreProvinceCenterCount, retailStoreCount, retailStoreMemberCount, goodsSupplierCount, supplyOrderCount, retailStoreOrderCount, warehouseCount, transportFleetCount, accountSetCount, levelOneDepartmentCount, skillTypeCount, responsibilityTypeCount, terminationReasonCount, terminationTypeCount, occupationTypeCount, leaveTypeCount, salaryGradeCount, interviewTypeCount, trainingCourseTypeCount, publicHolidayCount, employeeCount, instructorCount, companyTrainingCount } = retailStoreCountryCenter + + + + const cardsData = {cardsName:"双链小超全国运营中心",cardsFor: "retailStoreCountryCenter",cardsSource: retailStoreCountryCenter, subItems: [ -{name: 'skillTypeList', displayName:'技能类型',type:'skillType',count:skillTypeCount,addFunction: true, role: 'skillType'}, -{name: 'responsibilityTypeList', displayName:'责任类型',type:'responsibilityType',count:responsibilityTypeCount,addFunction: true, role: 'responsibilityType'}, -{name: 'terminationReasonList', displayName:'雇佣终止的原因',type:'terminationReason',count:terminationReasonCount,addFunction: true, role: 'terminationReason'}, -{name: 'terminationTypeList', displayName:'雇佣终止类型',type:'terminationType',count:terminationTypeCount,addFunction: true, role: 'terminationType'}, -{name: 'occupationTypeList', displayName:'职位类型',type:'occupationType',count:occupationTypeCount,addFunction: true, role: 'occupationType'}, -{name: 'leaveTypeList', displayName:'请假类型',type:'leaveType',count:leaveTypeCount,addFunction: true, role: 'leaveType'}, -{name: 'salaryGradeList', displayName:'工资等级',type:'salaryGrade',count:salaryGradeCount,addFunction: true, role: 'salaryGrade'}, -{name: 'interviewTypeList', displayName:'面试类型',type:'interviewType',count:interviewTypeCount,addFunction: true, role: 'interviewType'}, -{name: 'trainingCourseTypeList', displayName:'培训课程类型',type:'trainingCourseType',count:trainingCourseTypeCount,addFunction: true, role: 'trainingCourseType'}, -{name: 'publicHolidayList', displayName:'公共假日',type:'publicHoliday',count:publicHolidayCount,addFunction: true, role: 'publicHoliday'}, +{name: 'skillTypeList', displayName:'技能类型',type:'skillType',count:skillTypeCount,addFunction: true, role: 'skillType', data: retailStoreCountryCenter.skillTypeList}, +{name: 'responsibilityTypeList', displayName:'责任类型',type:'responsibilityType',count:responsibilityTypeCount,addFunction: true, role: 'responsibilityType', data: retailStoreCountryCenter.responsibilityTypeList}, +{name: 'terminationReasonList', displayName:'雇佣终止的原因',type:'terminationReason',count:terminationReasonCount,addFunction: true, role: 'terminationReason', data: retailStoreCountryCenter.terminationReasonList}, +{name: 'terminationTypeList', displayName:'雇佣终止类型',type:'terminationType',count:terminationTypeCount,addFunction: true, role: 'terminationType', data: retailStoreCountryCenter.terminationTypeList}, +{name: 'occupationTypeList', displayName:'职位类型',type:'occupationType',count:occupationTypeCount,addFunction: true, role: 'occupationType', data: retailStoreCountryCenter.occupationTypeList}, +{name: 'leaveTypeList', displayName:'请假类型',type:'leaveType',count:leaveTypeCount,addFunction: true, role: 'leaveType', data: retailStoreCountryCenter.leaveTypeList}, +{name: 'salaryGradeList', displayName:'工资等级',type:'salaryGrade',count:salaryGradeCount,addFunction: true, role: 'salaryGrade', data: retailStoreCountryCenter.salaryGradeList}, +{name: 'interviewTypeList', displayName:'面试类型',type:'interviewType',count:interviewTypeCount,addFunction: true, role: 'interviewType', data: retailStoreCountryCenter.interviewTypeList}, +{name: 'trainingCourseTypeList', displayName:'培训课程类型',type:'trainingCourseType',count:trainingCourseTypeCount,addFunction: true, role: 'trainingCourseType', data: retailStoreCountryCenter.trainingCourseTypeList}, +{name: 'publicHolidayList', displayName:'公共假日',type:'publicHoliday',count:publicHolidayCount,addFunction: true, role: 'publicHoliday', data: retailStoreCountryCenter.publicHolidayList}, ], }; diff --git a/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.profile.js b/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.profile.js new file mode 100644 index 000000000..2e64a383d --- /dev/null +++ b/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.profile.js @@ -0,0 +1,108 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './RetailStoreCountryCenter.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (retailStoreCountryCenter,targetComponent) =>{ + const userContext = null + return ( + +{retailStoreCountryCenter.id} +{retailStoreCountryCenter.name} +{retailStoreCountryCenter.serviceNumber} +{ moment(retailStoreCountryCenter.founded).format('YYYY-MM-DD')} +{retailStoreCountryCenter.webSite} +{retailStoreCountryCenter.address} +{retailStoreCountryCenter.operatedBy} +{retailStoreCountryCenter.legalRepresentative} +{retailStoreCountryCenter.description} + + + ) +} + + + +class RetailStoreCountryCenterProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const retailStoreCountryCenter = this.props.retailStoreCountryCenter; + const { id,displayName, catalogCount, retailStoreProvinceCenterCount, retailStoreCount, retailStoreMemberCount, goodsSupplierCount, supplyOrderCount, retailStoreOrderCount, warehouseCount, transportFleetCount, accountSetCount, levelOneDepartmentCount, skillTypeCount, responsibilityTypeCount, terminationReasonCount, terminationTypeCount, occupationTypeCount, leaveTypeCount, salaryGradeCount, interviewTypeCount, trainingCourseTypeCount, publicHolidayCount, employeeCount, instructorCount, companyTrainingCount } = retailStoreCountryCenter + + const cardsData = {cardsName:"双链小超全国运营中心",cardsFor: "retailStoreCountryCenter",cardsSource: retailStoreCountryCenter, + subItems: [ +{name: 'skillTypeList', displayName:'技能类型',type:'skillType',count:skillTypeCount,addFunction: true, role: 'skillType', data: retailStoreCountryCenter.skillTypeList}, +{name: 'responsibilityTypeList', displayName:'责任类型',type:'responsibilityType',count:responsibilityTypeCount,addFunction: true, role: 'responsibilityType', data: retailStoreCountryCenter.responsibilityTypeList}, +{name: 'terminationReasonList', displayName:'雇佣终止的原因',type:'terminationReason',count:terminationReasonCount,addFunction: true, role: 'terminationReason', data: retailStoreCountryCenter.terminationReasonList}, +{name: 'terminationTypeList', displayName:'雇佣终止类型',type:'terminationType',count:terminationTypeCount,addFunction: true, role: 'terminationType', data: retailStoreCountryCenter.terminationTypeList}, +{name: 'occupationTypeList', displayName:'职位类型',type:'occupationType',count:occupationTypeCount,addFunction: true, role: 'occupationType', data: retailStoreCountryCenter.occupationTypeList}, +{name: 'leaveTypeList', displayName:'请假类型',type:'leaveType',count:leaveTypeCount,addFunction: true, role: 'leaveType', data: retailStoreCountryCenter.leaveTypeList}, +{name: 'salaryGradeList', displayName:'工资等级',type:'salaryGrade',count:salaryGradeCount,addFunction: true, role: 'salaryGrade', data: retailStoreCountryCenter.salaryGradeList}, +{name: 'interviewTypeList', displayName:'面试类型',type:'interviewType',count:interviewTypeCount,addFunction: true, role: 'interviewType', data: retailStoreCountryCenter.interviewTypeList}, +{name: 'trainingCourseTypeList', displayName:'培训课程类型',type:'trainingCourseType',count:trainingCourseTypeCount,addFunction: true, role: 'trainingCourseType', data: retailStoreCountryCenter.trainingCourseTypeList}, +{name: 'publicHolidayList', displayName:'公共假日',type:'publicHoliday',count:publicHolidayCount,addFunction: true, role: 'publicHoliday', data: retailStoreCountryCenter.publicHolidayList}, + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + retailStoreCountryCenter: state._retailStoreCountryCenter, +}))(Form.create()(RetailStoreCountryCenterProfile)) + diff --git a/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.profile.less b/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.search.js b/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.search.js index 529d2c314..b36a57290 100644 --- a/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.search.js +++ b/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.searchform.js b/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.searchform.js index 9e569a87a..cb049d13c 100644 --- a/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.searchform.js +++ b/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`retailStoreCountryCenterList.searchField`] = fieldName - value[`retailStoreCountryCenterList.searchVerb`] = searchVerb - value[`retailStoreCountryCenterList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,16 +127,17 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'serviceNumber')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'webSite')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'address')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'operatedBy')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'legalRepresentative')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'description')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'serviceNumber')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'webSite')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'address')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'operatedBy')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'legalRepresentative')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'description')) console.log("the final parameter", paramList) @@ -152,11 +153,12 @@ componentDidMount() { } - params['retailStoreCountryCenterList'] = 1 - params['retailStoreCountryCenterList.orderBy.0'] = "id" - params['retailStoreCountryCenterList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -211,8 +213,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -315,8 +317,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.table.js b/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.table.js index 2029ab859..314d103b8 100644 --- a/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.table.js +++ b/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.table.js @@ -40,24 +40,53 @@ class RetailStoreCountryCenterTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = RetailStoreCountryCenterBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class RetailStoreCountryCenterTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class RetailStoreCountryCenterTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.updateform.js b/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.updateform.js index 6907768ab..4b4a867c9 100644 --- a/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.updateform.js +++ b/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.updateform.js @@ -262,7 +262,7 @@ class RetailStoreCountryCenterUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class RetailStoreCountryCenterUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class RetailStoreCountryCenterUpdateForm extends Component { initialValue: selectedRow.serviceNumber, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -298,7 +298,7 @@ class RetailStoreCountryCenterUpdateForm extends Component { initialValue: selectedRow.founded, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -310,7 +310,7 @@ class RetailStoreCountryCenterUpdateForm extends Component { initialValue: selectedRow.webSite, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -322,7 +322,7 @@ class RetailStoreCountryCenterUpdateForm extends Component { initialValue: selectedRow.address, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -334,7 +334,7 @@ class RetailStoreCountryCenterUpdateForm extends Component { initialValue: selectedRow.operatedBy, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -346,7 +346,7 @@ class RetailStoreCountryCenterUpdateForm extends Component { initialValue: selectedRow.legalRepresentative, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -358,7 +358,7 @@ class RetailStoreCountryCenterUpdateForm extends Component { initialValue: selectedRow.description, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.app.js b/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.app.js index 5eae0ab8f..42d624ce0 100644 --- a/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.app.js +++ b/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class RetailStoreCreationBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class RetailStoreCreationBizApp extends React.PureComponent { buildRouters = () =>{ const {RetailStoreCreationDashboard} = GlobalComponents - const {RetailStoreCreationPreference} = GlobalComponents + const {RetailStoreCreationPermission} = GlobalComponents + const {RetailStoreCreationProfile} = GlobalComponents const routers=[ {path:"/retailStoreCreation/:id/dashboard", component: RetailStoreCreationDashboard}, - {path:"/retailStoreCreation/:id/preference", component: RetailStoreCreationPreference}, + {path:"/retailStoreCreation/:id/profile", component: RetailStoreCreationProfile}, + {path:"/retailStoreCreation/:id/permission", component: RetailStoreCreationPermission}, diff --git a/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.associateform.js b/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.associateform.js index dafcad56e..de175b947 100644 --- a/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.associateform.js +++ b/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.associateform.js @@ -138,7 +138,7 @@ class RetailStoreCreationAssociateForm extends Component { {getFieldDecorator('comment', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.associateform.less b/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.associateform.less +++ b/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.base.js b/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.base.js index 57c414249..1948779cb 100644 --- a/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.base.js +++ b/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.base.js @@ -1,96 +1,74 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"双链小超的创作", menuFor: "retailStoreCreation", subItems: [ - {name: 'retailStoreList', displayName:'双链小超', icon:'store',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'retailStoreList', displayName:'双链小超', icon:'store',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + comment: '评论', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'retailStoreCreation') }, - { title: '评论', debugtype: 'string', dataIndex: 'comment', width: '9',render: (text, record)=>renderTextCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'retailStoreCreation') , sorter: true }, + { title: fieldLabels.comment, debugtype: 'string', dataIndex: 'comment', width: '9',render: (text, record)=>renderTextCell(text,record)}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({retailStoreCreation,targetComponent})=>{ -const fieldLabels = { - id: '序号', - comment: '评论', + + + const {RetailStoreCreationService} = GlobalComponents + // const userContext = null + return ( + +{retailStoreCreation.id} +{retailStoreCreation.comment} + + {buildTransferModal(retailStoreCreation,targetComponent)} + + ) } + + -const RetailStoreCreationBase={menuData,displayColumns,fieldLabels} +const RetailStoreCreationBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default RetailStoreCreationBase diff --git a/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.createform.js b/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.createform.js index 7ee03174c..22b3a1fde 100644 --- a/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.createform.js +++ b/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.createform.js @@ -206,7 +206,7 @@ class RetailStoreCreationCreateForm extends Component { {getFieldDecorator('comment', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.dashboard.js b/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.dashboard.js index 60e827f4d..fbaa1fe6d 100644 --- a/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.dashboard.js +++ b/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -136,6 +136,7 @@ class RetailStoreCreationDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -144,13 +145,17 @@ class RetailStoreCreationDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.model.js b/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.model.js index 5db68d00d..7f0bee4b5 100644 --- a/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.model.js +++ b/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreCreation/${id}/list/\RetailStoreList/双链小超+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreCreation/${id}/list/RetailStoreList/双链小超+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateRetailStore({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreCreation/${id}/list/\RetailStoreList/双链小超列表`, state: newPlayload } + const location = { pathname: `/retailStoreCreation/${id}/list/RetailStoreList/双链小超列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextRetailStoreUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.permission.js b/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.permission.js new file mode 100644 index 000000000..02c8bd3ad --- /dev/null +++ b/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.permission.js @@ -0,0 +1,84 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './RetailStoreCreation.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (retailStoreCreation,targetComponent) =>{ + const userContext = null + return ( + +{retailStoreCreation.id} +{retailStoreCreation.comment} + + + ) +} + + +const renderPermissionSetting = retailStoreCreation => { + const {RetailStoreCreationBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class RetailStoreCreationPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const retailStoreCreation = this.props.retailStoreCreation; + const { id,displayName, retailStoreCount } = retailStoreCreation + const cardsData = {cardsName:"双链小超的创作",cardsFor: "retailStoreCreation",cardsSource: retailStoreCreation, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + retailStoreCreation: state._retailStoreCreation, +}))(Form.create()(RetailStoreCreationPermission)) + diff --git a/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.permission.less b/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.preference.js b/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.preference.js index abf70eb5d..16929e868 100644 --- a/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.preference.js +++ b/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.preference.js @@ -299,8 +299,12 @@ class RetailStoreCreationPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, retailStoreCount } = this.props.retailStoreCreation - const cardsData = {cardsName:"双链小超的创作",cardsFor: "retailStoreCreation",cardsSource: this.props.retailStoreCreation, + const retailStoreCreation = this.props.retailStoreCreation; + const { id,displayName, retailStoreCount } = retailStoreCreation + + + + const cardsData = {cardsName:"双链小超的创作",cardsFor: "retailStoreCreation",cardsSource: retailStoreCreation, subItems: [ ], diff --git a/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.profile.js b/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.profile.js new file mode 100644 index 000000000..18002e115 --- /dev/null +++ b/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.profile.js @@ -0,0 +1,91 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './RetailStoreCreation.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (retailStoreCreation,targetComponent) =>{ + const userContext = null + return ( + +{retailStoreCreation.id} +{retailStoreCreation.comment} + + + ) +} + + + +class RetailStoreCreationProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const retailStoreCreation = this.props.retailStoreCreation; + const { id,displayName, retailStoreCount } = retailStoreCreation + + const cardsData = {cardsName:"双链小超的创作",cardsFor: "retailStoreCreation",cardsSource: retailStoreCreation, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + retailStoreCreation: state._retailStoreCreation, +}))(Form.create()(RetailStoreCreationProfile)) + diff --git a/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.profile.less b/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.search.js b/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.search.js index cf95b5e04..0646462e7 100644 --- a/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.search.js +++ b/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.searchform.js b/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.searchform.js index 736dde555..cf35ff6b7 100644 --- a/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.searchform.js +++ b/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`retailStoreCreationList.searchField`] = fieldName - value[`retailStoreCreationList.searchVerb`] = searchVerb - value[`retailStoreCreationList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,10 +127,11 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'comment')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'comment')) console.log("the final parameter", paramList) @@ -146,11 +147,12 @@ componentDidMount() { } - params['retailStoreCreationList'] = 1 - params['retailStoreCreationList.orderBy.0'] = "id" - params['retailStoreCreationList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -205,8 +207,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -261,8 +263,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.table.js b/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.table.js index dffbe5c14..64384d439 100644 --- a/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.table.js +++ b/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.table.js @@ -40,24 +40,53 @@ class RetailStoreCreationTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = RetailStoreCreationBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class RetailStoreCreationTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class RetailStoreCreationTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.updateform.js b/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.updateform.js index 0cdf28471..8cfa9b8ec 100644 --- a/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.updateform.js +++ b/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.updateform.js @@ -261,7 +261,7 @@ class RetailStoreCreationUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class RetailStoreCreationUpdateForm extends Component { initialValue: selectedRow.comment, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.app.js b/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.app.js index 96485c106..7ce65d4fe 100644 --- a/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.app.js +++ b/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class RetailStoreDecorationBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class RetailStoreDecorationBizApp extends React.PureComponent { buildRouters = () =>{ const {RetailStoreDecorationDashboard} = GlobalComponents - const {RetailStoreDecorationPreference} = GlobalComponents + const {RetailStoreDecorationPermission} = GlobalComponents + const {RetailStoreDecorationProfile} = GlobalComponents const routers=[ {path:"/retailStoreDecoration/:id/dashboard", component: RetailStoreDecorationDashboard}, - {path:"/retailStoreDecoration/:id/preference", component: RetailStoreDecorationPreference}, + {path:"/retailStoreDecoration/:id/profile", component: RetailStoreDecorationProfile}, + {path:"/retailStoreDecoration/:id/permission", component: RetailStoreDecorationPermission}, diff --git a/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.associateform.js b/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.associateform.js index 609a96a7d..6a256ae5f 100644 --- a/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.associateform.js +++ b/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.associateform.js @@ -138,7 +138,7 @@ class RetailStoreDecorationAssociateForm extends Component { {getFieldDecorator('comment', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.associateform.less b/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.associateform.less +++ b/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.base.js b/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.base.js index cda8b2a71..18a16ae31 100644 --- a/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.base.js +++ b/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.base.js @@ -1,96 +1,74 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"生超装修", menuFor: "retailStoreDecoration", subItems: [ - {name: 'retailStoreList', displayName:'双链小超', icon:'store',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'retailStoreList', displayName:'双链小超', icon:'store',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + comment: '评论', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'retailStoreDecoration') }, - { title: '评论', debugtype: 'string', dataIndex: 'comment', width: '6',render: (text, record)=>renderTextCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'retailStoreDecoration') , sorter: true }, + { title: fieldLabels.comment, debugtype: 'string', dataIndex: 'comment', width: '6',render: (text, record)=>renderTextCell(text,record)}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({retailStoreDecoration,targetComponent})=>{ -const fieldLabels = { - id: '序号', - comment: '评论', + + + const {RetailStoreDecorationService} = GlobalComponents + // const userContext = null + return ( + +{retailStoreDecoration.id} +{retailStoreDecoration.comment} + + {buildTransferModal(retailStoreDecoration,targetComponent)} + + ) } + + -const RetailStoreDecorationBase={menuData,displayColumns,fieldLabels} +const RetailStoreDecorationBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default RetailStoreDecorationBase diff --git a/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.createform.js b/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.createform.js index 7472ae42a..6ec982e6e 100644 --- a/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.createform.js +++ b/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.createform.js @@ -206,7 +206,7 @@ class RetailStoreDecorationCreateForm extends Component { {getFieldDecorator('comment', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.dashboard.js b/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.dashboard.js index fcc9e33db..34067b6ab 100644 --- a/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.dashboard.js +++ b/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -136,6 +136,7 @@ class RetailStoreDecorationDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -144,13 +145,17 @@ class RetailStoreDecorationDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.model.js b/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.model.js index 1bee3ea2b..360dfbc0a 100644 --- a/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.model.js +++ b/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreDecoration/${id}/list/\RetailStoreList/双链小超+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreDecoration/${id}/list/RetailStoreList/双链小超+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateRetailStore({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreDecoration/${id}/list/\RetailStoreList/双链小超列表`, state: newPlayload } + const location = { pathname: `/retailStoreDecoration/${id}/list/RetailStoreList/双链小超列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextRetailStoreUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.permission.js b/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.permission.js new file mode 100644 index 000000000..d6d3e55c6 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.permission.js @@ -0,0 +1,84 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './RetailStoreDecoration.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (retailStoreDecoration,targetComponent) =>{ + const userContext = null + return ( + +{retailStoreDecoration.id} +{retailStoreDecoration.comment} + + + ) +} + + +const renderPermissionSetting = retailStoreDecoration => { + const {RetailStoreDecorationBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class RetailStoreDecorationPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const retailStoreDecoration = this.props.retailStoreDecoration; + const { id,displayName, retailStoreCount } = retailStoreDecoration + const cardsData = {cardsName:"生超装修",cardsFor: "retailStoreDecoration",cardsSource: retailStoreDecoration, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + retailStoreDecoration: state._retailStoreDecoration, +}))(Form.create()(RetailStoreDecorationPermission)) + diff --git a/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.permission.less b/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.preference.js b/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.preference.js index 4a0f5235a..435ea7b4d 100644 --- a/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.preference.js +++ b/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.preference.js @@ -299,8 +299,12 @@ class RetailStoreDecorationPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, retailStoreCount } = this.props.retailStoreDecoration - const cardsData = {cardsName:"生超装修",cardsFor: "retailStoreDecoration",cardsSource: this.props.retailStoreDecoration, + const retailStoreDecoration = this.props.retailStoreDecoration; + const { id,displayName, retailStoreCount } = retailStoreDecoration + + + + const cardsData = {cardsName:"生超装修",cardsFor: "retailStoreDecoration",cardsSource: retailStoreDecoration, subItems: [ ], diff --git a/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.profile.js b/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.profile.js new file mode 100644 index 000000000..347322bf7 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.profile.js @@ -0,0 +1,91 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './RetailStoreDecoration.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (retailStoreDecoration,targetComponent) =>{ + const userContext = null + return ( + +{retailStoreDecoration.id} +{retailStoreDecoration.comment} + + + ) +} + + + +class RetailStoreDecorationProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const retailStoreDecoration = this.props.retailStoreDecoration; + const { id,displayName, retailStoreCount } = retailStoreDecoration + + const cardsData = {cardsName:"生超装修",cardsFor: "retailStoreDecoration",cardsSource: retailStoreDecoration, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + retailStoreDecoration: state._retailStoreDecoration, +}))(Form.create()(RetailStoreDecorationProfile)) + diff --git a/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.profile.less b/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.search.js b/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.search.js index f07f8f27d..e34a4d945 100644 --- a/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.search.js +++ b/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.searchform.js b/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.searchform.js index 14d9beed1..23e10a1dd 100644 --- a/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.searchform.js +++ b/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`retailStoreDecorationList.searchField`] = fieldName - value[`retailStoreDecorationList.searchVerb`] = searchVerb - value[`retailStoreDecorationList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,10 +127,11 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'comment')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'comment')) console.log("the final parameter", paramList) @@ -146,11 +147,12 @@ componentDidMount() { } - params['retailStoreDecorationList'] = 1 - params['retailStoreDecorationList.orderBy.0'] = "id" - params['retailStoreDecorationList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -205,8 +207,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -261,8 +263,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.table.js b/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.table.js index d33802721..60edcab8d 100644 --- a/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.table.js +++ b/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.table.js @@ -40,24 +40,53 @@ class RetailStoreDecorationTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = RetailStoreDecorationBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class RetailStoreDecorationTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class RetailStoreDecorationTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.updateform.js b/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.updateform.js index 0902c2f73..fb981bcff 100644 --- a/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.updateform.js +++ b/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.updateform.js @@ -261,7 +261,7 @@ class RetailStoreDecorationUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class RetailStoreDecorationUpdateForm extends Component { initialValue: selectedRow.comment, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.app.js b/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.app.js index c51777c6f..cf8d5d652 100644 --- a/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.app.js +++ b/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class RetailStoreFranchisingBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class RetailStoreFranchisingBizApp extends React.PureComponent { buildRouters = () =>{ const {RetailStoreFranchisingDashboard} = GlobalComponents - const {RetailStoreFranchisingPreference} = GlobalComponents + const {RetailStoreFranchisingPermission} = GlobalComponents + const {RetailStoreFranchisingProfile} = GlobalComponents const routers=[ {path:"/retailStoreFranchising/:id/dashboard", component: RetailStoreFranchisingDashboard}, - {path:"/retailStoreFranchising/:id/preference", component: RetailStoreFranchisingPreference}, + {path:"/retailStoreFranchising/:id/profile", component: RetailStoreFranchisingProfile}, + {path:"/retailStoreFranchising/:id/permission", component: RetailStoreFranchisingPermission}, diff --git a/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.associateform.js b/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.associateform.js index a78dc1a52..5fd48e357 100644 --- a/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.associateform.js +++ b/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.associateform.js @@ -138,7 +138,7 @@ class RetailStoreFranchisingAssociateForm extends Component { {getFieldDecorator('comment', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.associateform.less b/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.associateform.less +++ b/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.base.js b/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.base.js index b5c572564..4bfd246fd 100644 --- a/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.base.js +++ b/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.base.js @@ -1,96 +1,74 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"生超的特许经营", menuFor: "retailStoreFranchising", subItems: [ - {name: 'retailStoreList', displayName:'双链小超', icon:'store',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'retailStoreList', displayName:'双链小超', icon:'store',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + comment: '评论', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'retailStoreFranchising') }, - { title: '评论', debugtype: 'string', dataIndex: 'comment', width: '8',render: (text, record)=>renderTextCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'retailStoreFranchising') , sorter: true }, + { title: fieldLabels.comment, debugtype: 'string', dataIndex: 'comment', width: '8',render: (text, record)=>renderTextCell(text,record)}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({retailStoreFranchising,targetComponent})=>{ -const fieldLabels = { - id: '序号', - comment: '评论', + + + const {RetailStoreFranchisingService} = GlobalComponents + // const userContext = null + return ( + +{retailStoreFranchising.id} +{retailStoreFranchising.comment} + + {buildTransferModal(retailStoreFranchising,targetComponent)} + + ) } + + -const RetailStoreFranchisingBase={menuData,displayColumns,fieldLabels} +const RetailStoreFranchisingBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default RetailStoreFranchisingBase diff --git a/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.createform.js b/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.createform.js index db55cd44a..95f1aede9 100644 --- a/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.createform.js +++ b/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.createform.js @@ -206,7 +206,7 @@ class RetailStoreFranchisingCreateForm extends Component { {getFieldDecorator('comment', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.dashboard.js b/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.dashboard.js index c49101c93..f9e1ab29a 100644 --- a/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.dashboard.js +++ b/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -136,6 +136,7 @@ class RetailStoreFranchisingDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -144,13 +145,17 @@ class RetailStoreFranchisingDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.model.js b/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.model.js index cb8925558..107c890fd 100644 --- a/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.model.js +++ b/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreFranchising/${id}/list/\RetailStoreList/双链小超+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreFranchising/${id}/list/RetailStoreList/双链小超+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateRetailStore({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreFranchising/${id}/list/\RetailStoreList/双链小超列表`, state: newPlayload } + const location = { pathname: `/retailStoreFranchising/${id}/list/RetailStoreList/双链小超列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextRetailStoreUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.permission.js b/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.permission.js new file mode 100644 index 000000000..f2a276c33 --- /dev/null +++ b/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.permission.js @@ -0,0 +1,84 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './RetailStoreFranchising.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (retailStoreFranchising,targetComponent) =>{ + const userContext = null + return ( + +{retailStoreFranchising.id} +{retailStoreFranchising.comment} + + + ) +} + + +const renderPermissionSetting = retailStoreFranchising => { + const {RetailStoreFranchisingBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class RetailStoreFranchisingPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const retailStoreFranchising = this.props.retailStoreFranchising; + const { id,displayName, retailStoreCount } = retailStoreFranchising + const cardsData = {cardsName:"生超的特许经营",cardsFor: "retailStoreFranchising",cardsSource: retailStoreFranchising, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + retailStoreFranchising: state._retailStoreFranchising, +}))(Form.create()(RetailStoreFranchisingPermission)) + diff --git a/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.permission.less b/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.preference.js b/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.preference.js index f434ee2b1..7d795fbcc 100644 --- a/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.preference.js +++ b/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.preference.js @@ -299,8 +299,12 @@ class RetailStoreFranchisingPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, retailStoreCount } = this.props.retailStoreFranchising - const cardsData = {cardsName:"生超的特许经营",cardsFor: "retailStoreFranchising",cardsSource: this.props.retailStoreFranchising, + const retailStoreFranchising = this.props.retailStoreFranchising; + const { id,displayName, retailStoreCount } = retailStoreFranchising + + + + const cardsData = {cardsName:"生超的特许经营",cardsFor: "retailStoreFranchising",cardsSource: retailStoreFranchising, subItems: [ ], diff --git a/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.profile.js b/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.profile.js new file mode 100644 index 000000000..79e36532f --- /dev/null +++ b/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.profile.js @@ -0,0 +1,91 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './RetailStoreFranchising.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (retailStoreFranchising,targetComponent) =>{ + const userContext = null + return ( + +{retailStoreFranchising.id} +{retailStoreFranchising.comment} + + + ) +} + + + +class RetailStoreFranchisingProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const retailStoreFranchising = this.props.retailStoreFranchising; + const { id,displayName, retailStoreCount } = retailStoreFranchising + + const cardsData = {cardsName:"生超的特许经营",cardsFor: "retailStoreFranchising",cardsSource: retailStoreFranchising, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + retailStoreFranchising: state._retailStoreFranchising, +}))(Form.create()(RetailStoreFranchisingProfile)) + diff --git a/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.profile.less b/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.search.js b/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.search.js index bf1df1e81..df3196993 100644 --- a/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.search.js +++ b/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.searchform.js b/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.searchform.js index 06f9515e5..c848bc2b6 100644 --- a/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.searchform.js +++ b/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`retailStoreFranchisingList.searchField`] = fieldName - value[`retailStoreFranchisingList.searchVerb`] = searchVerb - value[`retailStoreFranchisingList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,10 +127,11 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'comment')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'comment')) console.log("the final parameter", paramList) @@ -146,11 +147,12 @@ componentDidMount() { } - params['retailStoreFranchisingList'] = 1 - params['retailStoreFranchisingList.orderBy.0'] = "id" - params['retailStoreFranchisingList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -205,8 +207,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -261,8 +263,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.table.js b/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.table.js index c8cb4b554..96a21a417 100644 --- a/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.table.js +++ b/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.table.js @@ -40,24 +40,53 @@ class RetailStoreFranchisingTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = RetailStoreFranchisingBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class RetailStoreFranchisingTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class RetailStoreFranchisingTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.updateform.js b/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.updateform.js index c7d339e51..f7993f4f4 100644 --- a/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.updateform.js +++ b/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.updateform.js @@ -261,7 +261,7 @@ class RetailStoreFranchisingUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class RetailStoreFranchisingUpdateForm extends Component { initialValue: selectedRow.comment, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.app.js b/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.app.js index 6e66a5733..5434cc2f9 100644 --- a/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.app.js +++ b/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class RetailStoreInvestmentInvitationBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class RetailStoreInvestmentInvitationBizApp extends React.PureComponent { buildRouters = () =>{ const {RetailStoreInvestmentInvitationDashboard} = GlobalComponents - const {RetailStoreInvestmentInvitationPreference} = GlobalComponents + const {RetailStoreInvestmentInvitationPermission} = GlobalComponents + const {RetailStoreInvestmentInvitationProfile} = GlobalComponents const routers=[ {path:"/retailStoreInvestmentInvitation/:id/dashboard", component: RetailStoreInvestmentInvitationDashboard}, - {path:"/retailStoreInvestmentInvitation/:id/preference", component: RetailStoreInvestmentInvitationPreference}, + {path:"/retailStoreInvestmentInvitation/:id/profile", component: RetailStoreInvestmentInvitationProfile}, + {path:"/retailStoreInvestmentInvitation/:id/permission", component: RetailStoreInvestmentInvitationPermission}, diff --git a/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.associateform.js b/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.associateform.js index 4217f9c96..3afcd4851 100644 --- a/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.associateform.js +++ b/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.associateform.js @@ -138,7 +138,7 @@ class RetailStoreInvestmentInvitationAssociateForm extends Component { {getFieldDecorator('comment', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.associateform.less b/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.associateform.less +++ b/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.base.js b/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.base.js index 71ec61ead..ee840986d 100644 --- a/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.base.js +++ b/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.base.js @@ -1,96 +1,74 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"生超招商", menuFor: "retailStoreInvestmentInvitation", subItems: [ - {name: 'retailStoreList', displayName:'双链小超', icon:'store',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'retailStoreList', displayName:'双链小超', icon:'store',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + comment: '评论', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'retailStoreInvestmentInvitation') }, - { title: '评论', debugtype: 'string', dataIndex: 'comment', width: '10',render: (text, record)=>renderTextCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'retailStoreInvestmentInvitation') , sorter: true }, + { title: fieldLabels.comment, debugtype: 'string', dataIndex: 'comment', width: '10',render: (text, record)=>renderTextCell(text,record)}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({retailStoreInvestmentInvitation,targetComponent})=>{ -const fieldLabels = { - id: '序号', - comment: '评论', + + + const {RetailStoreInvestmentInvitationService} = GlobalComponents + // const userContext = null + return ( + +{retailStoreInvestmentInvitation.id} +{retailStoreInvestmentInvitation.comment} + + {buildTransferModal(retailStoreInvestmentInvitation,targetComponent)} + + ) } + + -const RetailStoreInvestmentInvitationBase={menuData,displayColumns,fieldLabels} +const RetailStoreInvestmentInvitationBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default RetailStoreInvestmentInvitationBase diff --git a/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.createform.js b/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.createform.js index 3c4e9472c..1f7a894d5 100644 --- a/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.createform.js +++ b/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.createform.js @@ -206,7 +206,7 @@ class RetailStoreInvestmentInvitationCreateForm extends Component { {getFieldDecorator('comment', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.dashboard.js b/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.dashboard.js index 929efb647..30598cd3a 100644 --- a/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.dashboard.js +++ b/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -136,6 +136,7 @@ class RetailStoreInvestmentInvitationDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -144,13 +145,17 @@ class RetailStoreInvestmentInvitationDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.model.js b/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.model.js index 86b4dc557..54d4a2291 100644 --- a/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.model.js +++ b/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreInvestmentInvitation/${id}/list/\RetailStoreList/双链小超+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreInvestmentInvitation/${id}/list/RetailStoreList/双链小超+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateRetailStore({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreInvestmentInvitation/${id}/list/\RetailStoreList/双链小超列表`, state: newPlayload } + const location = { pathname: `/retailStoreInvestmentInvitation/${id}/list/RetailStoreList/双链小超列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextRetailStoreUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.permission.js b/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.permission.js new file mode 100644 index 000000000..270fed2a9 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.permission.js @@ -0,0 +1,84 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './RetailStoreInvestmentInvitation.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (retailStoreInvestmentInvitation,targetComponent) =>{ + const userContext = null + return ( + +{retailStoreInvestmentInvitation.id} +{retailStoreInvestmentInvitation.comment} + + + ) +} + + +const renderPermissionSetting = retailStoreInvestmentInvitation => { + const {RetailStoreInvestmentInvitationBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class RetailStoreInvestmentInvitationPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const retailStoreInvestmentInvitation = this.props.retailStoreInvestmentInvitation; + const { id,displayName, retailStoreCount } = retailStoreInvestmentInvitation + const cardsData = {cardsName:"生超招商",cardsFor: "retailStoreInvestmentInvitation",cardsSource: retailStoreInvestmentInvitation, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + retailStoreInvestmentInvitation: state._retailStoreInvestmentInvitation, +}))(Form.create()(RetailStoreInvestmentInvitationPermission)) + diff --git a/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.permission.less b/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.preference.js b/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.preference.js index 04ea01eb5..7add64627 100644 --- a/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.preference.js +++ b/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.preference.js @@ -299,8 +299,12 @@ class RetailStoreInvestmentInvitationPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, retailStoreCount } = this.props.retailStoreInvestmentInvitation - const cardsData = {cardsName:"生超招商",cardsFor: "retailStoreInvestmentInvitation",cardsSource: this.props.retailStoreInvestmentInvitation, + const retailStoreInvestmentInvitation = this.props.retailStoreInvestmentInvitation; + const { id,displayName, retailStoreCount } = retailStoreInvestmentInvitation + + + + const cardsData = {cardsName:"生超招商",cardsFor: "retailStoreInvestmentInvitation",cardsSource: retailStoreInvestmentInvitation, subItems: [ ], diff --git a/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.profile.js b/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.profile.js new file mode 100644 index 000000000..95dc2f69f --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.profile.js @@ -0,0 +1,91 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './RetailStoreInvestmentInvitation.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (retailStoreInvestmentInvitation,targetComponent) =>{ + const userContext = null + return ( + +{retailStoreInvestmentInvitation.id} +{retailStoreInvestmentInvitation.comment} + + + ) +} + + + +class RetailStoreInvestmentInvitationProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const retailStoreInvestmentInvitation = this.props.retailStoreInvestmentInvitation; + const { id,displayName, retailStoreCount } = retailStoreInvestmentInvitation + + const cardsData = {cardsName:"生超招商",cardsFor: "retailStoreInvestmentInvitation",cardsSource: retailStoreInvestmentInvitation, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + retailStoreInvestmentInvitation: state._retailStoreInvestmentInvitation, +}))(Form.create()(RetailStoreInvestmentInvitationProfile)) + diff --git a/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.profile.less b/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.search.js b/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.search.js index a3f51e419..50d5ddef5 100644 --- a/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.search.js +++ b/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.searchform.js b/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.searchform.js index ff8f959a6..eb62c0e04 100644 --- a/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.searchform.js +++ b/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`retailStoreInvestmentInvitationList.searchField`] = fieldName - value[`retailStoreInvestmentInvitationList.searchVerb`] = searchVerb - value[`retailStoreInvestmentInvitationList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,10 +127,11 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'comment')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'comment')) console.log("the final parameter", paramList) @@ -146,11 +147,12 @@ componentDidMount() { } - params['retailStoreInvestmentInvitationList'] = 1 - params['retailStoreInvestmentInvitationList.orderBy.0'] = "id" - params['retailStoreInvestmentInvitationList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -205,8 +207,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -261,8 +263,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.table.js b/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.table.js index 7c1bee5a5..4fe1ea91a 100644 --- a/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.table.js +++ b/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.table.js @@ -40,24 +40,53 @@ class RetailStoreInvestmentInvitationTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = RetailStoreInvestmentInvitationBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class RetailStoreInvestmentInvitationTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class RetailStoreInvestmentInvitationTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.updateform.js b/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.updateform.js index 219bb1c11..41778e57a 100644 --- a/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.updateform.js +++ b/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.updateform.js @@ -261,7 +261,7 @@ class RetailStoreInvestmentInvitationUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class RetailStoreInvestmentInvitationUpdateForm extends Component { initialValue: selectedRow.comment, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.app.js b/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.app.js index 4250d1212..1dd09359f 100644 --- a/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.app.js +++ b/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class RetailStoreMemberBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -500,12 +509,14 @@ class RetailStoreMemberBizApp extends React.PureComponent { buildRouters = () =>{ const {RetailStoreMemberDashboard} = GlobalComponents - const {RetailStoreMemberPreference} = GlobalComponents + const {RetailStoreMemberPermission} = GlobalComponents + const {RetailStoreMemberProfile} = GlobalComponents const routers=[ {path:"/retailStoreMember/:id/dashboard", component: RetailStoreMemberDashboard}, - {path:"/retailStoreMember/:id/preference", component: RetailStoreMemberPreference}, + {path:"/retailStoreMember/:id/profile", component: RetailStoreMemberProfile}, + {path:"/retailStoreMember/:id/permission", component: RetailStoreMemberPermission}, diff --git a/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.associateform.js b/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.associateform.js index 2bcc90532..c508f591a 100644 --- a/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.associateform.js +++ b/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.associateform.js @@ -146,7 +146,7 @@ class RetailStoreMemberAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -156,7 +156,7 @@ class RetailStoreMemberAssociateForm extends Component { {getFieldDecorator('mobilePhone', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.associateform.less b/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.associateform.less +++ b/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.base.js b/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.base.js index cbb175892..68b6818b0 100644 --- a/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.base.js +++ b/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.base.js @@ -1,106 +1,85 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"生超会员", menuFor: "retailStoreMember", subItems: [ - {name: 'consumerOrderList', displayName:'消费者订单', icon:'first-order',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'retailStoreMemberCouponList', displayName:'生超会员优惠券', icon:'store',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'memberWishlistList', displayName:'会员收藏', icon:'ember',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'memberRewardPointList', displayName:'会员奖励点', icon:'ember',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'memberRewardPointRedemptionList', displayName:'会员奖励点赎回', icon:'ember',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'retailStoreMemberAddressList', displayName:'零售店会员地址', icon:'store',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'retailStoreMemberGiftCardList', displayName:'零售店会员礼品卡', icon:'gift',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'consumerOrderList', displayName:'消费者订单', icon:'first-order',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'retailStoreMemberCouponList', displayName:'生超会员优惠券', icon:'store',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'memberWishlistList', displayName:'会员收藏', icon:'ember',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'memberRewardPointList', displayName:'会员奖励点', icon:'ember',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'memberRewardPointRedemptionList', displayName:'会员奖励点赎回', icon:'ember',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'retailStoreMemberAddressList', displayName:'零售店会员地址', icon:'store',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'retailStoreMemberGiftCardList', displayName:'零售店会员礼品卡', icon:'gift',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + name: '名称', + mobilePhone: '移动电话', + owner: '业主', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'retailStoreMember') }, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '7',render: (text, record)=>renderTextCell(text,record) }, - { title: '移动电话', debugtype: 'string_china_mobile_phone', dataIndex: 'mobilePhone', width: '15',render: (text, record)=>renderTextCell(text,record) }, - { title: '业主', dataIndex: 'owner', render: (text, record) => renderReferenceCell(text, record)}, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'retailStoreMember') , sorter: true }, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '7',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.mobilePhone, debugtype: 'string_china_mobile_phone', dataIndex: 'mobilePhone', width: '15',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.owner, dataIndex: 'owner', render: (text, record) => renderReferenceCell(text, record), sorter:true}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({retailStoreMember,targetComponent})=>{ -const fieldLabels = { - id: '序号', - name: '名称', - mobilePhone: '移动电话', - owner: '业主', + + + const {RetailStoreMemberService} = GlobalComponents + // const userContext = null + return ( + +{retailStoreMember.id} +{retailStoreMember.name} +{retailStoreMember.mobilePhone} + + {buildTransferModal(retailStoreMember,targetComponent)} + + ) } + + -const RetailStoreMemberBase={menuData,displayColumns,fieldLabels} +const RetailStoreMemberBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default RetailStoreMemberBase diff --git a/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.createform.js b/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.createform.js index 94aa99d50..57ddf45eb 100644 --- a/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.createform.js +++ b/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.createform.js @@ -208,7 +208,7 @@ class RetailStoreMemberCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -218,7 +218,7 @@ class RetailStoreMemberCreateForm extends Component { {getFieldDecorator('mobilePhone', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.dashboard.js b/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.dashboard.js index 8ebba00c9..f804b7985 100644 --- a/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.dashboard.js +++ b/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -143,6 +143,7 @@ class RetailStoreMemberDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -151,13 +152,17 @@ class RetailStoreMemberDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.model.js b/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.model.js index 4732cc0e4..2e3f8723d 100644 --- a/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.model.js +++ b/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreMember/${id}/list/\ConsumerOrderList/消费者订单+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreMember/${id}/list/ConsumerOrderList/消费者订单+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateConsumerOrder({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreMember/${id}/list/\ConsumerOrderList/消费者订单列表`, state: newPlayload } + const location = { pathname: `/retailStoreMember/${id}/list/ConsumerOrderList/消费者订单列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextConsumerOrderUpdateRow({ payload }, { call, put }) { @@ -206,7 +206,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreMember/${id}/list/\RetailStoreMemberCouponList/生超会员优惠券+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreMember/${id}/list/RetailStoreMemberCouponList/生超会员优惠券+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateRetailStoreMemberCoupon({ payload }, { call, put }) { @@ -228,7 +228,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreMember/${id}/list/\RetailStoreMemberCouponList/生超会员优惠券列表`, state: newPlayload } + const location = { pathname: `/retailStoreMember/${id}/list/RetailStoreMemberCouponList/生超会员优惠券列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextRetailStoreMemberCouponUpdateRow({ payload }, { call, put }) { @@ -275,7 +275,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreMember/${id}/list/\MemberWishlistList/会员收藏+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreMember/${id}/list/MemberWishlistList/会员收藏+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateMemberWishlist({ payload }, { call, put }) { @@ -297,7 +297,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreMember/${id}/list/\MemberWishlistList/会员收藏列表`, state: newPlayload } + const location = { pathname: `/retailStoreMember/${id}/list/MemberWishlistList/会员收藏列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextMemberWishlistUpdateRow({ payload }, { call, put }) { @@ -344,7 +344,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreMember/${id}/list/\MemberRewardPointList/会员奖励点+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreMember/${id}/list/MemberRewardPointList/会员奖励点+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateMemberRewardPoint({ payload }, { call, put }) { @@ -366,7 +366,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreMember/${id}/list/\MemberRewardPointList/会员奖励点列表`, state: newPlayload } + const location = { pathname: `/retailStoreMember/${id}/list/MemberRewardPointList/会员奖励点列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextMemberRewardPointUpdateRow({ payload }, { call, put }) { @@ -413,7 +413,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreMember/${id}/list/\MemberRewardPointRedemptionList/会员奖励点赎回+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreMember/${id}/list/MemberRewardPointRedemptionList/会员奖励点赎回+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateMemberRewardPointRedemption({ payload }, { call, put }) { @@ -435,7 +435,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreMember/${id}/list/\MemberRewardPointRedemptionList/会员奖励点赎回列表`, state: newPlayload } + const location = { pathname: `/retailStoreMember/${id}/list/MemberRewardPointRedemptionList/会员奖励点赎回列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextMemberRewardPointRedemptionUpdateRow({ payload }, { call, put }) { @@ -482,7 +482,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreMember/${id}/list/\RetailStoreMemberAddressList/零售店会员地址+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreMember/${id}/list/RetailStoreMemberAddressList/零售店会员地址+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateRetailStoreMemberAddress({ payload }, { call, put }) { @@ -504,7 +504,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreMember/${id}/list/\RetailStoreMemberAddressList/零售店会员地址列表`, state: newPlayload } + const location = { pathname: `/retailStoreMember/${id}/list/RetailStoreMemberAddressList/零售店会员地址列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextRetailStoreMemberAddressUpdateRow({ payload }, { call, put }) { @@ -551,7 +551,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreMember/${id}/list/\RetailStoreMemberGiftCardList/零售店会员礼品卡+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreMember/${id}/list/RetailStoreMemberGiftCardList/零售店会员礼品卡+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateRetailStoreMemberGiftCard({ payload }, { call, put }) { @@ -573,7 +573,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreMember/${id}/list/\RetailStoreMemberGiftCardList/零售店会员礼品卡列表`, state: newPlayload } + const location = { pathname: `/retailStoreMember/${id}/list/RetailStoreMemberGiftCardList/零售店会员礼品卡列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextRetailStoreMemberGiftCardUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.permission.js b/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.permission.js new file mode 100644 index 000000000..86db9bd9d --- /dev/null +++ b/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.permission.js @@ -0,0 +1,85 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './RetailStoreMember.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (retailStoreMember,targetComponent) =>{ + const userContext = null + return ( + +{retailStoreMember.id} +{retailStoreMember.name} +{retailStoreMember.mobilePhone} + + + ) +} + + +const renderPermissionSetting = retailStoreMember => { + const {RetailStoreMemberBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class RetailStoreMemberPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const retailStoreMember = this.props.retailStoreMember; + const { id,displayName, consumerOrderCount, retailStoreMemberCouponCount, memberWishlistCount, memberRewardPointCount, memberRewardPointRedemptionCount, retailStoreMemberAddressCount, retailStoreMemberGiftCardCount } = retailStoreMember + const cardsData = {cardsName:"生超会员",cardsFor: "retailStoreMember",cardsSource: retailStoreMember, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + retailStoreMember: state._retailStoreMember, +}))(Form.create()(RetailStoreMemberPermission)) + diff --git a/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.permission.less b/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.preference.js b/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.preference.js index edb9f692c..6cccfec52 100644 --- a/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.preference.js +++ b/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.preference.js @@ -300,8 +300,12 @@ class RetailStoreMemberPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, consumerOrderCount, retailStoreMemberCouponCount, memberWishlistCount, memberRewardPointCount, memberRewardPointRedemptionCount, retailStoreMemberAddressCount, retailStoreMemberGiftCardCount } = this.props.retailStoreMember - const cardsData = {cardsName:"生超会员",cardsFor: "retailStoreMember",cardsSource: this.props.retailStoreMember, + const retailStoreMember = this.props.retailStoreMember; + const { id,displayName, consumerOrderCount, retailStoreMemberCouponCount, memberWishlistCount, memberRewardPointCount, memberRewardPointRedemptionCount, retailStoreMemberAddressCount, retailStoreMemberGiftCardCount } = retailStoreMember + + + + const cardsData = {cardsName:"生超会员",cardsFor: "retailStoreMember",cardsSource: retailStoreMember, subItems: [ ], diff --git a/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.profile.js b/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.profile.js new file mode 100644 index 000000000..ea4f65e46 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.profile.js @@ -0,0 +1,92 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './RetailStoreMember.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (retailStoreMember,targetComponent) =>{ + const userContext = null + return ( + +{retailStoreMember.id} +{retailStoreMember.name} +{retailStoreMember.mobilePhone} + + + ) +} + + + +class RetailStoreMemberProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const retailStoreMember = this.props.retailStoreMember; + const { id,displayName, consumerOrderCount, retailStoreMemberCouponCount, memberWishlistCount, memberRewardPointCount, memberRewardPointRedemptionCount, retailStoreMemberAddressCount, retailStoreMemberGiftCardCount } = retailStoreMember + + const cardsData = {cardsName:"生超会员",cardsFor: "retailStoreMember",cardsSource: retailStoreMember, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + retailStoreMember: state._retailStoreMember, +}))(Form.create()(RetailStoreMemberProfile)) + diff --git a/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.profile.less b/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.search.js b/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.search.js index 81fbb50c7..3dcd54f64 100644 --- a/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.search.js +++ b/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.searchform.js b/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.searchform.js index 4e8a938c2..cbe54daa2 100644 --- a/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.searchform.js +++ b/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`retailStoreMemberList.searchField`] = fieldName - value[`retailStoreMemberList.searchVerb`] = searchVerb - value[`retailStoreMemberList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,12 +127,13 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'mobilePhone')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'owner')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'mobilePhone')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'owner')) console.log("the final parameter", paramList) @@ -148,11 +149,12 @@ componentDidMount() { } - params['retailStoreMemberList'] = 1 - params['retailStoreMemberList.orderBy.0'] = "id" - params['retailStoreMemberList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -207,8 +209,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -286,8 +288,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.table.js b/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.table.js index cb909303d..c1d75a841 100644 --- a/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.table.js +++ b/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.table.js @@ -40,24 +40,53 @@ class RetailStoreMemberTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = RetailStoreMemberBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class RetailStoreMemberTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class RetailStoreMemberTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.updateform.js b/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.updateform.js index 2fa55b126..3daf64d98 100644 --- a/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.updateform.js +++ b/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.updateform.js @@ -261,7 +261,7 @@ class RetailStoreMemberUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class RetailStoreMemberUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -285,7 +285,7 @@ class RetailStoreMemberUpdateForm extends Component { initialValue: selectedRow.mobilePhone, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.app.js b/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.app.js index f3db951bd..e91c98acf 100644 --- a/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.app.js +++ b/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class RetailStoreMemberAddressBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -157,12 +166,14 @@ class RetailStoreMemberAddressBizApp extends React.PureComponent { buildRouters = () =>{ const {RetailStoreMemberAddressDashboard} = GlobalComponents - const {RetailStoreMemberAddressPreference} = GlobalComponents + const {RetailStoreMemberAddressPermission} = GlobalComponents + const {RetailStoreMemberAddressProfile} = GlobalComponents const routers=[ {path:"/retailStoreMemberAddress/:id/dashboard", component: RetailStoreMemberAddressDashboard}, - {path:"/retailStoreMemberAddress/:id/preference", component: RetailStoreMemberAddressPreference}, + {path:"/retailStoreMemberAddress/:id/profile", component: RetailStoreMemberAddressProfile}, + {path:"/retailStoreMemberAddress/:id/permission", component: RetailStoreMemberAddressPermission}, diff --git a/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.associateform.js b/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.associateform.js index 1db133c9b..3e3a473c4 100644 --- a/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.associateform.js +++ b/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.associateform.js @@ -140,7 +140,7 @@ class RetailStoreMemberAddressAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -150,7 +150,7 @@ class RetailStoreMemberAddressAssociateForm extends Component { {getFieldDecorator('mobilePhone', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -160,7 +160,7 @@ class RetailStoreMemberAddressAssociateForm extends Component { {getFieldDecorator('address', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.associateform.less b/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.associateform.less +++ b/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.base.js b/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.base.js index 19190471d..d3de79991 100644 --- a/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.base.js +++ b/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.base.js @@ -1,10 +1,33 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"零售店会员地址", menuFor: "retailStoreMemberAddress", subItems: [ @@ -12,90 +35,53 @@ const menuData = {menuName:"零售店会员地址", menuFor: "retailStoreMemberA ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + name: '名称', + owner: '业主', + mobilePhone: '移动电话', + address: '地址', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record) }, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '10',render: (text, record)=>renderTextCell(text,record) }, - { title: '业主', dataIndex: 'owner', render: (text, record) => renderReferenceCell(text, record)}, - { title: '移动电话', debugtype: 'string_china_mobile_phone', dataIndex: 'mobilePhone', width: '15',render: (text, record)=>renderTextCell(text,record) }, - { title: '地址', debugtype: 'string', dataIndex: 'address', width: '18',render: (text, record)=>renderTextCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '10',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.owner, dataIndex: 'owner', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.mobilePhone, debugtype: 'string_china_mobile_phone', dataIndex: 'mobilePhone', width: '15',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.address, debugtype: 'string', dataIndex: 'address', width: '18',render: (text, record)=>renderTextCell(text,record)}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({retailStoreMemberAddress,targetComponent})=>{ -const fieldLabels = { - id: '序号', - name: '名称', - owner: '业主', - mobilePhone: '移动电话', - address: '地址', + + + const {RetailStoreMemberAddressService} = GlobalComponents + // const userContext = null + return ( + +{retailStoreMemberAddress.id} +{retailStoreMemberAddress.name} +{retailStoreMemberAddress.owner==null?appLocaleName(userContext,"NotAssigned"):`${retailStoreMemberAddress.owner.displayName}(${retailStoreMemberAddress.owner.id})`} + + showTransferModel(targetComponent,"业主","retailStoreMember",RetailStoreMemberAddressService.requestCandidateOwner, + RetailStoreMemberAddressService.transferToAnotherOwner,"anotherOwnerId",retailStoreMemberAddress.owner?retailStoreMemberAddress.owner.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{retailStoreMemberAddress.mobilePhone} +{retailStoreMemberAddress.address} + + {buildTransferModal(retailStoreMemberAddress,targetComponent)} + + ) } + + -const RetailStoreMemberAddressBase={menuData,displayColumns,fieldLabels} +const RetailStoreMemberAddressBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default RetailStoreMemberAddressBase diff --git a/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.createform.js b/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.createform.js index e436a43ef..97b639cca 100644 --- a/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.createform.js +++ b/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.createform.js @@ -209,7 +209,7 @@ class RetailStoreMemberAddressCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -219,7 +219,7 @@ class RetailStoreMemberAddressCreateForm extends Component { {getFieldDecorator('mobilePhone', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -229,7 +229,7 @@ class RetailStoreMemberAddressCreateForm extends Component { {getFieldDecorator('address', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.dashboard.js b/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.dashboard.js index 83fa7ac57..a614bd4ce 100644 --- a/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.dashboard.js +++ b/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -143,6 +143,7 @@ class RetailStoreMemberAddressDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -151,13 +152,17 @@ class RetailStoreMemberAddressDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.model.js b/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.model.js index 39e088c97..e309d4ac8 100644 --- a/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.model.js +++ b/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' diff --git a/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.permission.js b/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.permission.js new file mode 100644 index 000000000..21bc16b51 --- /dev/null +++ b/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.permission.js @@ -0,0 +1,86 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './RetailStoreMemberAddress.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (retailStoreMemberAddress,targetComponent) =>{ + const userContext = null + return ( + +{retailStoreMemberAddress.id} +{retailStoreMemberAddress.name} +{retailStoreMemberAddress.mobilePhone} +{retailStoreMemberAddress.address} + + + ) +} + + +const renderPermissionSetting = retailStoreMemberAddress => { + const {RetailStoreMemberAddressBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class RetailStoreMemberAddressPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const retailStoreMemberAddress = this.props.retailStoreMemberAddress; + const { id,displayName, } = retailStoreMemberAddress + const cardsData = {cardsName:"零售店会员地址",cardsFor: "retailStoreMemberAddress",cardsSource: retailStoreMemberAddress, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + retailStoreMemberAddress: state._retailStoreMemberAddress, +}))(Form.create()(RetailStoreMemberAddressPermission)) + diff --git a/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.permission.less b/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.preference.js b/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.preference.js index 29b461ef8..386ec3111 100644 --- a/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.preference.js +++ b/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.preference.js @@ -307,8 +307,12 @@ class RetailStoreMemberAddressPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, } = this.props.retailStoreMemberAddress - const cardsData = {cardsName:"零售店会员地址",cardsFor: "retailStoreMemberAddress",cardsSource: this.props.retailStoreMemberAddress, + const retailStoreMemberAddress = this.props.retailStoreMemberAddress; + const { id,displayName, } = retailStoreMemberAddress + + + + const cardsData = {cardsName:"零售店会员地址",cardsFor: "retailStoreMemberAddress",cardsSource: retailStoreMemberAddress, subItems: [ ], diff --git a/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.profile.js b/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.profile.js new file mode 100644 index 000000000..532e0abdc --- /dev/null +++ b/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.profile.js @@ -0,0 +1,93 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './RetailStoreMemberAddress.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (retailStoreMemberAddress,targetComponent) =>{ + const userContext = null + return ( + +{retailStoreMemberAddress.id} +{retailStoreMemberAddress.name} +{retailStoreMemberAddress.mobilePhone} +{retailStoreMemberAddress.address} + + + ) +} + + + +class RetailStoreMemberAddressProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const retailStoreMemberAddress = this.props.retailStoreMemberAddress; + const { id,displayName, } = retailStoreMemberAddress + + const cardsData = {cardsName:"零售店会员地址",cardsFor: "retailStoreMemberAddress",cardsSource: retailStoreMemberAddress, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + retailStoreMemberAddress: state._retailStoreMemberAddress, +}))(Form.create()(RetailStoreMemberAddressProfile)) + diff --git a/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.profile.less b/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.search.js b/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.search.js index f9e2e3a20..7a3763f37 100644 --- a/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.search.js +++ b/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.searchform.js b/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.searchform.js index f3943609d..46a9094a0 100644 --- a/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.searchform.js +++ b/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`retailStoreMemberAddressList.searchField`] = fieldName - value[`retailStoreMemberAddressList.searchVerb`] = searchVerb - value[`retailStoreMemberAddressList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,13 +127,14 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'owner')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'mobilePhone')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'address')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'owner')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'mobilePhone')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'address')) console.log("the final parameter", paramList) @@ -149,11 +150,12 @@ componentDidMount() { } - params['retailStoreMemberAddressList'] = 1 - params['retailStoreMemberAddressList.orderBy.0'] = "id" - params['retailStoreMemberAddressList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -208,8 +210,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -295,8 +297,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.table.js b/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.table.js index 669bf2792..97ffba75d 100644 --- a/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.table.js +++ b/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.table.js @@ -40,24 +40,53 @@ class RetailStoreMemberAddressTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = RetailStoreMemberAddressBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class RetailStoreMemberAddressTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class RetailStoreMemberAddressTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.updateform.js b/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.updateform.js index d2aed9ec0..3d46a77a9 100644 --- a/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.updateform.js +++ b/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.updateform.js @@ -261,7 +261,7 @@ class RetailStoreMemberAddressUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class RetailStoreMemberAddressUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -285,7 +285,7 @@ class RetailStoreMemberAddressUpdateForm extends Component { initialValue: selectedRow.mobilePhone, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -297,7 +297,7 @@ class RetailStoreMemberAddressUpdateForm extends Component { initialValue: selectedRow.address, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.app.js b/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.app.js index 6bd05d8a8..e6a7fd97e 100644 --- a/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.app.js +++ b/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class RetailStoreMemberCouponBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -157,12 +166,14 @@ class RetailStoreMemberCouponBizApp extends React.PureComponent { buildRouters = () =>{ const {RetailStoreMemberCouponDashboard} = GlobalComponents - const {RetailStoreMemberCouponPreference} = GlobalComponents + const {RetailStoreMemberCouponPermission} = GlobalComponents + const {RetailStoreMemberCouponProfile} = GlobalComponents const routers=[ {path:"/retailStoreMemberCoupon/:id/dashboard", component: RetailStoreMemberCouponDashboard}, - {path:"/retailStoreMemberCoupon/:id/preference", component: RetailStoreMemberCouponPreference}, + {path:"/retailStoreMemberCoupon/:id/profile", component: RetailStoreMemberCouponProfile}, + {path:"/retailStoreMemberCoupon/:id/permission", component: RetailStoreMemberCouponPermission}, diff --git a/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.associateform.js b/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.associateform.js index fca5e62dc..77fbf93d5 100644 --- a/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.associateform.js +++ b/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.associateform.js @@ -139,7 +139,7 @@ class RetailStoreMemberCouponAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -149,7 +149,7 @@ class RetailStoreMemberCouponAssociateForm extends Component { {getFieldDecorator('number', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.associateform.less b/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.associateform.less +++ b/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.base.js b/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.base.js index 4ec8c2b79..e13800766 100644 --- a/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.base.js +++ b/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.base.js @@ -1,10 +1,33 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"生超会员优惠券", menuFor: "retailStoreMemberCoupon", subItems: [ @@ -12,90 +35,53 @@ const menuData = {menuName:"生超会员优惠券", menuFor: "retailStoreMemberC ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + name: '名称', + owner: '业主', + number: '数', + lastUpdateTime: '最后更新时间', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record) }, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '7',render: (text, record)=>renderTextCell(text,record) }, - { title: '业主', dataIndex: 'owner', render: (text, record) => renderReferenceCell(text, record)}, - { title: '数', debugtype: 'string', dataIndex: 'number', width: '11',render: (text, record)=>renderTextCell(text,record) }, - { title: '最后更新时间', dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '7',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.owner, dataIndex: 'owner', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.number, debugtype: 'string', dataIndex: 'number', width: '11',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.lastUpdateTime, dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record), sorter: true}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({retailStoreMemberCoupon,targetComponent})=>{ -const fieldLabels = { - id: '序号', - name: '名称', - owner: '业主', - number: '数', - lastUpdateTime: '最后更新时间', + + + const {RetailStoreMemberCouponService} = GlobalComponents + // const userContext = null + return ( + +{retailStoreMemberCoupon.id} +{retailStoreMemberCoupon.name} +{retailStoreMemberCoupon.owner==null?appLocaleName(userContext,"NotAssigned"):`${retailStoreMemberCoupon.owner.displayName}(${retailStoreMemberCoupon.owner.id})`} + + showTransferModel(targetComponent,"业主","retailStoreMember",RetailStoreMemberCouponService.requestCandidateOwner, + RetailStoreMemberCouponService.transferToAnotherOwner,"anotherOwnerId",retailStoreMemberCoupon.owner?retailStoreMemberCoupon.owner.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{retailStoreMemberCoupon.number} +{ moment(retailStoreMemberCoupon.lastUpdateTime).format('YYYY-MM-DD')} + + {buildTransferModal(retailStoreMemberCoupon,targetComponent)} + + ) } + + -const RetailStoreMemberCouponBase={menuData,displayColumns,fieldLabels} +const RetailStoreMemberCouponBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default RetailStoreMemberCouponBase diff --git a/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.createform.js b/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.createform.js index 156dd8fe9..ec9e78288 100644 --- a/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.createform.js +++ b/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.createform.js @@ -208,7 +208,7 @@ class RetailStoreMemberCouponCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -218,7 +218,7 @@ class RetailStoreMemberCouponCreateForm extends Component { {getFieldDecorator('number', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.dashboard.js b/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.dashboard.js index 759e271cb..dfba896a5 100644 --- a/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.dashboard.js +++ b/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -143,6 +143,7 @@ class RetailStoreMemberCouponDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -151,13 +152,17 @@ class RetailStoreMemberCouponDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.model.js b/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.model.js index a84d52823..2b85ed3e4 100644 --- a/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.model.js +++ b/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' diff --git a/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.permission.js b/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.permission.js new file mode 100644 index 000000000..476690bca --- /dev/null +++ b/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.permission.js @@ -0,0 +1,86 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './RetailStoreMemberCoupon.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (retailStoreMemberCoupon,targetComponent) =>{ + const userContext = null + return ( + +{retailStoreMemberCoupon.id} +{retailStoreMemberCoupon.name} +{retailStoreMemberCoupon.number} +{ moment(retailStoreMemberCoupon.lastUpdateTime).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = retailStoreMemberCoupon => { + const {RetailStoreMemberCouponBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class RetailStoreMemberCouponPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const retailStoreMemberCoupon = this.props.retailStoreMemberCoupon; + const { id,displayName, } = retailStoreMemberCoupon + const cardsData = {cardsName:"生超会员优惠券",cardsFor: "retailStoreMemberCoupon",cardsSource: retailStoreMemberCoupon, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + retailStoreMemberCoupon: state._retailStoreMemberCoupon, +}))(Form.create()(RetailStoreMemberCouponPermission)) + diff --git a/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.permission.less b/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.preference.js b/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.preference.js index cb21341d1..5186a0ee3 100644 --- a/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.preference.js +++ b/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.preference.js @@ -307,8 +307,12 @@ class RetailStoreMemberCouponPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, } = this.props.retailStoreMemberCoupon - const cardsData = {cardsName:"生超会员优惠券",cardsFor: "retailStoreMemberCoupon",cardsSource: this.props.retailStoreMemberCoupon, + const retailStoreMemberCoupon = this.props.retailStoreMemberCoupon; + const { id,displayName, } = retailStoreMemberCoupon + + + + const cardsData = {cardsName:"生超会员优惠券",cardsFor: "retailStoreMemberCoupon",cardsSource: retailStoreMemberCoupon, subItems: [ ], diff --git a/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.profile.js b/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.profile.js new file mode 100644 index 000000000..3f5d0dc5d --- /dev/null +++ b/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.profile.js @@ -0,0 +1,93 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './RetailStoreMemberCoupon.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (retailStoreMemberCoupon,targetComponent) =>{ + const userContext = null + return ( + +{retailStoreMemberCoupon.id} +{retailStoreMemberCoupon.name} +{retailStoreMemberCoupon.number} +{ moment(retailStoreMemberCoupon.lastUpdateTime).format('YYYY-MM-DD')} + + + ) +} + + + +class RetailStoreMemberCouponProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const retailStoreMemberCoupon = this.props.retailStoreMemberCoupon; + const { id,displayName, } = retailStoreMemberCoupon + + const cardsData = {cardsName:"生超会员优惠券",cardsFor: "retailStoreMemberCoupon",cardsSource: retailStoreMemberCoupon, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + retailStoreMemberCoupon: state._retailStoreMemberCoupon, +}))(Form.create()(RetailStoreMemberCouponProfile)) + diff --git a/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.profile.less b/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.search.js b/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.search.js index abeb4f227..d5171e69b 100644 --- a/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.search.js +++ b/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.searchform.js b/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.searchform.js index 6fba6bfca..32c124c26 100644 --- a/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.searchform.js +++ b/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`retailStoreMemberCouponList.searchField`] = fieldName - value[`retailStoreMemberCouponList.searchVerb`] = searchVerb - value[`retailStoreMemberCouponList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,12 +127,13 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'owner')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'number')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'owner')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'number')) console.log("the final parameter", paramList) @@ -148,11 +149,12 @@ componentDidMount() { } - params['retailStoreMemberCouponList'] = 1 - params['retailStoreMemberCouponList.orderBy.0'] = "id" - params['retailStoreMemberCouponList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -207,8 +209,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -286,8 +288,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.table.js b/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.table.js index 10290c436..1dbcc847f 100644 --- a/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.table.js +++ b/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.table.js @@ -40,24 +40,53 @@ class RetailStoreMemberCouponTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = RetailStoreMemberCouponBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class RetailStoreMemberCouponTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class RetailStoreMemberCouponTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.updateform.js b/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.updateform.js index 300b3f3c9..506f952cd 100644 --- a/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.updateform.js +++ b/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.updateform.js @@ -262,7 +262,7 @@ class RetailStoreMemberCouponUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class RetailStoreMemberCouponUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class RetailStoreMemberCouponUpdateForm extends Component { initialValue: selectedRow.number, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.app.js b/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.app.js index 9194a90b7..4565aadc1 100644 --- a/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.app.js +++ b/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class RetailStoreMemberGiftCardBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class RetailStoreMemberGiftCardBizApp extends React.PureComponent { buildRouters = () =>{ const {RetailStoreMemberGiftCardDashboard} = GlobalComponents - const {RetailStoreMemberGiftCardPreference} = GlobalComponents + const {RetailStoreMemberGiftCardPermission} = GlobalComponents + const {RetailStoreMemberGiftCardProfile} = GlobalComponents const routers=[ {path:"/retailStoreMemberGiftCard/:id/dashboard", component: RetailStoreMemberGiftCardDashboard}, - {path:"/retailStoreMemberGiftCard/:id/preference", component: RetailStoreMemberGiftCardPreference}, + {path:"/retailStoreMemberGiftCard/:id/profile", component: RetailStoreMemberGiftCardProfile}, + {path:"/retailStoreMemberGiftCard/:id/permission", component: RetailStoreMemberGiftCardPermission}, diff --git a/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.associateform.js b/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.associateform.js index 2c7401fc0..921d8f5a5 100644 --- a/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.associateform.js +++ b/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.associateform.js @@ -20,7 +20,7 @@ const testValues = {}; const testValues = { name: '礼品卡', number: 'CP00001', - remain: '207.69', + remain: '167.36', ownerId: 'RSM000001', } */ @@ -141,7 +141,7 @@ class RetailStoreMemberGiftCardAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -151,7 +151,7 @@ class RetailStoreMemberGiftCardAssociateForm extends Component { {getFieldDecorator('number', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -161,7 +161,7 @@ class RetailStoreMemberGiftCardAssociateForm extends Component { {getFieldDecorator('remain', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.associateform.less b/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.associateform.less +++ b/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.base.js b/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.base.js index 9fe21aafd..b6ee095d0 100644 --- a/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.base.js +++ b/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.base.js @@ -1,102 +1,88 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"零售店会员礼品卡", menuFor: "retailStoreMemberGiftCard", subItems: [ - {name: 'retailStoreMemberGiftCardConsumeRecordList', displayName:'零售商店会员卡消费记录', icon:'gift',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'retailStoreMemberGiftCardConsumeRecordList', displayName:'零售商店会员卡消费记录', icon:'gift',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + name: '名称', + owner: '业主', + number: '数', + remain: '保持', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'retailStoreMemberGiftCard') }, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '7',render: (text, record)=>renderTextCell(text,record) }, - { title: '业主', dataIndex: 'owner', render: (text, record) => renderReferenceCell(text, record)}, - { title: '数', debugtype: 'string', dataIndex: 'number', width: '11',render: (text, record)=>renderTextCell(text,record) }, - { title: '保持', dataIndex: 'remain', className:'money', render: (text, record) => renderMoneyCell(text, record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'retailStoreMemberGiftCard') , sorter: true }, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '7',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.owner, dataIndex: 'owner', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.number, debugtype: 'string', dataIndex: 'number', width: '11',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.remain, dataIndex: 'remain', className:'money', render: (text, record) => renderMoneyCell(text, record), sorter: true }, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({retailStoreMemberGiftCard,targetComponent})=>{ -const fieldLabels = { - id: '序号', - name: '名称', - owner: '业主', - number: '数', - remain: '保持', + + + const {RetailStoreMemberGiftCardService} = GlobalComponents + // const userContext = null + return ( + +{retailStoreMemberGiftCard.id} +{retailStoreMemberGiftCard.name} +{retailStoreMemberGiftCard.owner==null?appLocaleName(userContext,"NotAssigned"):`${retailStoreMemberGiftCard.owner.displayName}(${retailStoreMemberGiftCard.owner.id})`} + + showTransferModel(targetComponent,"业主","retailStoreMember",RetailStoreMemberGiftCardService.requestCandidateOwner, + RetailStoreMemberGiftCardService.transferToAnotherOwner,"anotherOwnerId",retailStoreMemberGiftCard.owner?retailStoreMemberGiftCard.owner.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{retailStoreMemberGiftCard.number} +{retailStoreMemberGiftCard.remain} + + {buildTransferModal(retailStoreMemberGiftCard,targetComponent)} + + ) } + + -const RetailStoreMemberGiftCardBase={menuData,displayColumns,fieldLabels} +const RetailStoreMemberGiftCardBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default RetailStoreMemberGiftCardBase diff --git a/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.createform.js b/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.createform.js index d60e55180..825eb00a0 100644 --- a/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.createform.js +++ b/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.createform.js @@ -19,7 +19,7 @@ const testValues = {}; const testValues = { name: '礼品卡', number: 'CP00001', - remain: '196.42', + remain: '174.75', ownerId: 'RSM000001', } */ @@ -209,7 +209,7 @@ class RetailStoreMemberGiftCardCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -219,7 +219,7 @@ class RetailStoreMemberGiftCardCreateForm extends Component { {getFieldDecorator('number', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -229,7 +229,7 @@ class RetailStoreMemberGiftCardCreateForm extends Component { {getFieldDecorator('remain', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.dashboard.js b/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.dashboard.js index 0969ad72a..249dbddf7 100644 --- a/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.dashboard.js +++ b/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -144,6 +144,7 @@ class RetailStoreMemberGiftCardDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -152,13 +153,17 @@ class RetailStoreMemberGiftCardDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.model.js b/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.model.js index ebb36d52a..c41075589 100644 --- a/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.model.js +++ b/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreMemberGiftCard/${id}/list/\RetailStoreMemberGiftCardConsumeRecordList/零售商店会员卡消费记录+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreMemberGiftCard/${id}/list/RetailStoreMemberGiftCardConsumeRecordList/零售商店会员卡消费记录+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateRetailStoreMemberGiftCardConsumeRecord({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreMemberGiftCard/${id}/list/\RetailStoreMemberGiftCardConsumeRecordList/零售商店会员卡消费记录列表`, state: newPlayload } + const location = { pathname: `/retailStoreMemberGiftCard/${id}/list/RetailStoreMemberGiftCardConsumeRecordList/零售商店会员卡消费记录列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextRetailStoreMemberGiftCardConsumeRecordUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.permission.js b/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.permission.js new file mode 100644 index 000000000..04aa48e53 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.permission.js @@ -0,0 +1,86 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './RetailStoreMemberGiftCard.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (retailStoreMemberGiftCard,targetComponent) =>{ + const userContext = null + return ( + +{retailStoreMemberGiftCard.id} +{retailStoreMemberGiftCard.name} +{retailStoreMemberGiftCard.number} +{retailStoreMemberGiftCard.remain} + + + ) +} + + +const renderPermissionSetting = retailStoreMemberGiftCard => { + const {RetailStoreMemberGiftCardBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class RetailStoreMemberGiftCardPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const retailStoreMemberGiftCard = this.props.retailStoreMemberGiftCard; + const { id,displayName, retailStoreMemberGiftCardConsumeRecordCount } = retailStoreMemberGiftCard + const cardsData = {cardsName:"零售店会员礼品卡",cardsFor: "retailStoreMemberGiftCard",cardsSource: retailStoreMemberGiftCard, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + retailStoreMemberGiftCard: state._retailStoreMemberGiftCard, +}))(Form.create()(RetailStoreMemberGiftCardPermission)) + diff --git a/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.permission.less b/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.preference.js b/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.preference.js index 1f7339e27..ad66387f5 100644 --- a/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.preference.js +++ b/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.preference.js @@ -307,8 +307,12 @@ class RetailStoreMemberGiftCardPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, retailStoreMemberGiftCardConsumeRecordCount } = this.props.retailStoreMemberGiftCard - const cardsData = {cardsName:"零售店会员礼品卡",cardsFor: "retailStoreMemberGiftCard",cardsSource: this.props.retailStoreMemberGiftCard, + const retailStoreMemberGiftCard = this.props.retailStoreMemberGiftCard; + const { id,displayName, retailStoreMemberGiftCardConsumeRecordCount } = retailStoreMemberGiftCard + + + + const cardsData = {cardsName:"零售店会员礼品卡",cardsFor: "retailStoreMemberGiftCard",cardsSource: retailStoreMemberGiftCard, subItems: [ ], diff --git a/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.profile.js b/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.profile.js new file mode 100644 index 000000000..98c8157df --- /dev/null +++ b/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.profile.js @@ -0,0 +1,93 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './RetailStoreMemberGiftCard.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (retailStoreMemberGiftCard,targetComponent) =>{ + const userContext = null + return ( + +{retailStoreMemberGiftCard.id} +{retailStoreMemberGiftCard.name} +{retailStoreMemberGiftCard.number} +{retailStoreMemberGiftCard.remain} + + + ) +} + + + +class RetailStoreMemberGiftCardProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const retailStoreMemberGiftCard = this.props.retailStoreMemberGiftCard; + const { id,displayName, retailStoreMemberGiftCardConsumeRecordCount } = retailStoreMemberGiftCard + + const cardsData = {cardsName:"零售店会员礼品卡",cardsFor: "retailStoreMemberGiftCard",cardsSource: retailStoreMemberGiftCard, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + retailStoreMemberGiftCard: state._retailStoreMemberGiftCard, +}))(Form.create()(RetailStoreMemberGiftCardProfile)) + diff --git a/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.profile.less b/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.search.js b/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.search.js index 06dca09cc..fe5568f61 100644 --- a/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.search.js +++ b/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.searchform.js b/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.searchform.js index 100c6c553..26b6ec12d 100644 --- a/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.searchform.js +++ b/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`retailStoreMemberGiftCardList.searchField`] = fieldName - value[`retailStoreMemberGiftCardList.searchVerb`] = searchVerb - value[`retailStoreMemberGiftCardList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,12 +127,13 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'owner')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'number')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'owner')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'number')) console.log("the final parameter", paramList) @@ -148,11 +149,12 @@ componentDidMount() { } - params['retailStoreMemberGiftCardList'] = 1 - params['retailStoreMemberGiftCardList.orderBy.0'] = "id" - params['retailStoreMemberGiftCardList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -207,8 +209,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -286,8 +288,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.table.js b/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.table.js index ec7ca75fe..e5a4c0d45 100644 --- a/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.table.js +++ b/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.table.js @@ -40,24 +40,53 @@ class RetailStoreMemberGiftCardTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = RetailStoreMemberGiftCardBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class RetailStoreMemberGiftCardTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class RetailStoreMemberGiftCardTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.updateform.js b/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.updateform.js index 8c286dc15..91893f17c 100644 --- a/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.updateform.js +++ b/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.updateform.js @@ -261,7 +261,7 @@ class RetailStoreMemberGiftCardUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class RetailStoreMemberGiftCardUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -285,7 +285,7 @@ class RetailStoreMemberGiftCardUpdateForm extends Component { initialValue: selectedRow.number, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -297,7 +297,7 @@ class RetailStoreMemberGiftCardUpdateForm extends Component { initialValue: selectedRow.remain, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.app.js b/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.app.js index 1286f1d5d..db5ec1ad9 100644 --- a/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.app.js +++ b/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class RetailStoreMemberGiftCardConsumeRecordBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -157,12 +166,14 @@ class RetailStoreMemberGiftCardConsumeRecordBizApp extends React.PureComponent { buildRouters = () =>{ const {RetailStoreMemberGiftCardConsumeRecordDashboard} = GlobalComponents - const {RetailStoreMemberGiftCardConsumeRecordPreference} = GlobalComponents + const {RetailStoreMemberGiftCardConsumeRecordPermission} = GlobalComponents + const {RetailStoreMemberGiftCardConsumeRecordProfile} = GlobalComponents const routers=[ {path:"/retailStoreMemberGiftCardConsumeRecord/:id/dashboard", component: RetailStoreMemberGiftCardConsumeRecordDashboard}, - {path:"/retailStoreMemberGiftCardConsumeRecord/:id/preference", component: RetailStoreMemberGiftCardConsumeRecordPreference}, + {path:"/retailStoreMemberGiftCardConsumeRecord/:id/profile", component: RetailStoreMemberGiftCardConsumeRecordProfile}, + {path:"/retailStoreMemberGiftCardConsumeRecord/:id/permission", component: RetailStoreMemberGiftCardConsumeRecordPermission}, diff --git a/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.associateform.js b/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.associateform.js index 36407470e..d8a116d45 100644 --- a/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.associateform.js +++ b/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.associateform.js @@ -18,9 +18,9 @@ const { TextArea } = Input const testValues = {}; /* const testValues = { - occureTime: '2018-05-31', + occureTime: '2016-10-29', number: 'GF00001', - amount: '16.76', + amount: '20.02', ownerId: 'RSMGC000001', bizOrderId: 'CO000001', } @@ -141,7 +141,7 @@ class RetailStoreMemberGiftCardConsumeRecordAssociateForm extends Component { {getFieldDecorator('occureTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -151,7 +151,7 @@ class RetailStoreMemberGiftCardConsumeRecordAssociateForm extends Component { {getFieldDecorator('number', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -161,7 +161,7 @@ class RetailStoreMemberGiftCardConsumeRecordAssociateForm extends Component { {getFieldDecorator('amount', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.associateform.less b/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.associateform.less +++ b/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.base.js b/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.base.js index bb6674965..519b4eea1 100644 --- a/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.base.js +++ b/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.base.js @@ -1,10 +1,33 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"零售商店会员卡消费记录", menuFor: "retailStoreMemberGiftCardConsumeRecord", subItems: [ @@ -12,80 +35,6 @@ const menuData = {menuName:"零售商店会员卡消费记录", menuFor: "retail ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) - -} - -const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record) }, - { title: '发生时间', dataIndex: 'occureTime', render: (text, record) =>renderDateCell(text,record) }, - { title: '业主', dataIndex: 'owner', render: (text, record) => renderReferenceCell(text, record)}, - { title: '订单', dataIndex: 'bizOrder', render: (text, record) => renderReferenceCell(text, record)}, - { title: '数', debugtype: 'string', dataIndex: 'number', width: '11',render: (text, record)=>renderTextCell(text,record) }, - { title: '金额', dataIndex: 'amount', className:'money', render: (text, record) => renderMoneyCell(text, record) }, - -] - const fieldLabels = { id: '序号', occureTime: '发生时间', @@ -96,8 +45,51 @@ const fieldLabels = { } +const displayColumns = [ + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.occureTime, dataIndex: 'occureTime', render: (text, record) =>renderDateCell(text,record), sorter: true }, + { title: fieldLabels.owner, dataIndex: 'owner', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.bizOrder, dataIndex: 'bizOrder', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.number, debugtype: 'string', dataIndex: 'number', width: '11',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.amount, dataIndex: 'amount', className:'money', render: (text, record) => renderMoneyCell(text, record), sorter: true }, + +] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({retailStoreMemberGiftCardConsumeRecord,targetComponent})=>{ + + + + const {RetailStoreMemberGiftCardConsumeRecordService} = GlobalComponents + // const userContext = null + return ( + +{retailStoreMemberGiftCardConsumeRecord.id} +{ moment(retailStoreMemberGiftCardConsumeRecord.occureTime).format('YYYY-MM-DD')} +{retailStoreMemberGiftCardConsumeRecord.owner==null?appLocaleName(userContext,"NotAssigned"):`${retailStoreMemberGiftCardConsumeRecord.owner.displayName}(${retailStoreMemberGiftCardConsumeRecord.owner.id})`} + + showTransferModel(targetComponent,"业主","retailStoreMemberGiftCard",RetailStoreMemberGiftCardConsumeRecordService.requestCandidateOwner, + RetailStoreMemberGiftCardConsumeRecordService.transferToAnotherOwner,"anotherOwnerId",retailStoreMemberGiftCardConsumeRecord.owner?retailStoreMemberGiftCardConsumeRecord.owner.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{retailStoreMemberGiftCardConsumeRecord.bizOrder==null?appLocaleName(userContext,"NotAssigned"):`${retailStoreMemberGiftCardConsumeRecord.bizOrder.displayName}(${retailStoreMemberGiftCardConsumeRecord.bizOrder.id})`} + + showTransferModel(targetComponent,"订单","consumerOrder",RetailStoreMemberGiftCardConsumeRecordService.requestCandidateBizOrder, + RetailStoreMemberGiftCardConsumeRecordService.transferToAnotherBizOrder,"anotherBizOrderId",retailStoreMemberGiftCardConsumeRecord.bizOrder?retailStoreMemberGiftCardConsumeRecord.bizOrder.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{retailStoreMemberGiftCardConsumeRecord.number} +{retailStoreMemberGiftCardConsumeRecord.amount} + + {buildTransferModal(retailStoreMemberGiftCardConsumeRecord,targetComponent)} + + ) + +} + + + -const RetailStoreMemberGiftCardConsumeRecordBase={menuData,displayColumns,fieldLabels} +const RetailStoreMemberGiftCardConsumeRecordBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default RetailStoreMemberGiftCardConsumeRecordBase diff --git a/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.createform.js b/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.createform.js index e72bc0325..0ec601f19 100644 --- a/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.createform.js +++ b/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.createform.js @@ -17,9 +17,9 @@ const { TextArea } = Input const testValues = {}; /* const testValues = { - occureTime: '2017-08-23', + occureTime: '2016-05-28', number: 'GF00001', - amount: '17.11', + amount: '20.15', ownerId: 'RSMGC000001', bizOrderId: 'CO000001', } @@ -210,7 +210,7 @@ class RetailStoreMemberGiftCardConsumeRecordCreateForm extends Component { {getFieldDecorator('occureTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -220,7 +220,7 @@ class RetailStoreMemberGiftCardConsumeRecordCreateForm extends Component { {getFieldDecorator('number', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -230,7 +230,7 @@ class RetailStoreMemberGiftCardConsumeRecordCreateForm extends Component { {getFieldDecorator('amount', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.dashboard.js b/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.dashboard.js index c87e27eff..6a43404a6 100644 --- a/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.dashboard.js +++ b/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -149,6 +149,7 @@ class RetailStoreMemberGiftCardConsumeRecordDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -157,13 +158,17 @@ class RetailStoreMemberGiftCardConsumeRecordDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.model.js b/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.model.js index 01d1b61a7..6c234febd 100644 --- a/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.model.js +++ b/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' diff --git a/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.permission.js b/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.permission.js new file mode 100644 index 000000000..6af7c81ce --- /dev/null +++ b/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.permission.js @@ -0,0 +1,86 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './RetailStoreMemberGiftCardConsumeRecord.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (retailStoreMemberGiftCardConsumeRecord,targetComponent) =>{ + const userContext = null + return ( + +{retailStoreMemberGiftCardConsumeRecord.id} +{ moment(retailStoreMemberGiftCardConsumeRecord.occureTime).format('YYYY-MM-DD')} +{retailStoreMemberGiftCardConsumeRecord.number} +{retailStoreMemberGiftCardConsumeRecord.amount} + + + ) +} + + +const renderPermissionSetting = retailStoreMemberGiftCardConsumeRecord => { + const {RetailStoreMemberGiftCardConsumeRecordBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class RetailStoreMemberGiftCardConsumeRecordPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const retailStoreMemberGiftCardConsumeRecord = this.props.retailStoreMemberGiftCardConsumeRecord; + const { id,displayName, } = retailStoreMemberGiftCardConsumeRecord + const cardsData = {cardsName:"零售商店会员卡消费记录",cardsFor: "retailStoreMemberGiftCardConsumeRecord",cardsSource: retailStoreMemberGiftCardConsumeRecord, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + retailStoreMemberGiftCardConsumeRecord: state._retailStoreMemberGiftCardConsumeRecord, +}))(Form.create()(RetailStoreMemberGiftCardConsumeRecordPermission)) + diff --git a/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.permission.less b/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.preference.js b/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.preference.js index b984b84c1..8cafdd2e3 100644 --- a/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.preference.js +++ b/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.preference.js @@ -313,8 +313,12 @@ class RetailStoreMemberGiftCardConsumeRecordPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, } = this.props.retailStoreMemberGiftCardConsumeRecord - const cardsData = {cardsName:"零售商店会员卡消费记录",cardsFor: "retailStoreMemberGiftCardConsumeRecord",cardsSource: this.props.retailStoreMemberGiftCardConsumeRecord, + const retailStoreMemberGiftCardConsumeRecord = this.props.retailStoreMemberGiftCardConsumeRecord; + const { id,displayName, } = retailStoreMemberGiftCardConsumeRecord + + + + const cardsData = {cardsName:"零售商店会员卡消费记录",cardsFor: "retailStoreMemberGiftCardConsumeRecord",cardsSource: retailStoreMemberGiftCardConsumeRecord, subItems: [ ], diff --git a/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.profile.js b/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.profile.js new file mode 100644 index 000000000..ee083662d --- /dev/null +++ b/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.profile.js @@ -0,0 +1,93 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './RetailStoreMemberGiftCardConsumeRecord.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (retailStoreMemberGiftCardConsumeRecord,targetComponent) =>{ + const userContext = null + return ( + +{retailStoreMemberGiftCardConsumeRecord.id} +{ moment(retailStoreMemberGiftCardConsumeRecord.occureTime).format('YYYY-MM-DD')} +{retailStoreMemberGiftCardConsumeRecord.number} +{retailStoreMemberGiftCardConsumeRecord.amount} + + + ) +} + + + +class RetailStoreMemberGiftCardConsumeRecordProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const retailStoreMemberGiftCardConsumeRecord = this.props.retailStoreMemberGiftCardConsumeRecord; + const { id,displayName, } = retailStoreMemberGiftCardConsumeRecord + + const cardsData = {cardsName:"零售商店会员卡消费记录",cardsFor: "retailStoreMemberGiftCardConsumeRecord",cardsSource: retailStoreMemberGiftCardConsumeRecord, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + retailStoreMemberGiftCardConsumeRecord: state._retailStoreMemberGiftCardConsumeRecord, +}))(Form.create()(RetailStoreMemberGiftCardConsumeRecordProfile)) + diff --git a/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.profile.less b/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.search.js b/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.search.js index 44c925558..46b158c6e 100644 --- a/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.search.js +++ b/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.searchform.js b/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.searchform.js index f95d00c2e..c73f10629 100644 --- a/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.searchform.js +++ b/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`retailStoreMemberGiftCardConsumeRecordList.searchField`] = fieldName - value[`retailStoreMemberGiftCardConsumeRecordList.searchVerb`] = searchVerb - value[`retailStoreMemberGiftCardConsumeRecordList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,12 +127,13 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'owner')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'bizOrder')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'number')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'owner')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'bizOrder')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'number')) console.log("the final parameter", paramList) @@ -148,11 +149,12 @@ componentDidMount() { } - params['retailStoreMemberGiftCardConsumeRecordList'] = 1 - params['retailStoreMemberGiftCardConsumeRecordList.orderBy.0'] = "id" - params['retailStoreMemberGiftCardConsumeRecordList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -214,8 +216,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -300,8 +302,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.table.js b/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.table.js index 2fba41dbb..cff6ed497 100644 --- a/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.table.js +++ b/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.table.js @@ -40,24 +40,53 @@ class RetailStoreMemberGiftCardConsumeRecordTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = RetailStoreMemberGiftCardConsumeRecordBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class RetailStoreMemberGiftCardConsumeRecordTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class RetailStoreMemberGiftCardConsumeRecordTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.updateform.js b/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.updateform.js index e5618b4f6..1dd32b161 100644 --- a/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.updateform.js +++ b/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.updateform.js @@ -262,7 +262,7 @@ class RetailStoreMemberGiftCardConsumeRecordUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class RetailStoreMemberGiftCardConsumeRecordUpdateForm extends Component { initialValue: selectedRow.occureTime, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class RetailStoreMemberGiftCardConsumeRecordUpdateForm extends Component { initialValue: selectedRow.number, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -298,7 +298,7 @@ class RetailStoreMemberGiftCardConsumeRecordUpdateForm extends Component { initialValue: selectedRow.amount, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.app.js b/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.app.js index 5fe97fdac..69ed05d09 100644 --- a/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.app.js +++ b/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class RetailStoreOpeningBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class RetailStoreOpeningBizApp extends React.PureComponent { buildRouters = () =>{ const {RetailStoreOpeningDashboard} = GlobalComponents - const {RetailStoreOpeningPreference} = GlobalComponents + const {RetailStoreOpeningPermission} = GlobalComponents + const {RetailStoreOpeningProfile} = GlobalComponents const routers=[ {path:"/retailStoreOpening/:id/dashboard", component: RetailStoreOpeningDashboard}, - {path:"/retailStoreOpening/:id/preference", component: RetailStoreOpeningPreference}, + {path:"/retailStoreOpening/:id/profile", component: RetailStoreOpeningProfile}, + {path:"/retailStoreOpening/:id/permission", component: RetailStoreOpeningPermission}, diff --git a/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.associateform.js b/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.associateform.js index 32b440f2b..ca95fe57f 100644 --- a/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.associateform.js +++ b/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.associateform.js @@ -138,7 +138,7 @@ class RetailStoreOpeningAssociateForm extends Component { {getFieldDecorator('comment', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.associateform.less b/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.associateform.less +++ b/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.base.js b/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.base.js index 434896c5e..470da6acd 100644 --- a/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.base.js +++ b/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.base.js @@ -1,96 +1,74 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"生超开业", menuFor: "retailStoreOpening", subItems: [ - {name: 'retailStoreList', displayName:'双链小超', icon:'store',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'retailStoreList', displayName:'双链小超', icon:'store',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + comment: '评论', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'retailStoreOpening') }, - { title: '评论', debugtype: 'string', dataIndex: 'comment', width: '6',render: (text, record)=>renderTextCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'retailStoreOpening') , sorter: true }, + { title: fieldLabels.comment, debugtype: 'string', dataIndex: 'comment', width: '6',render: (text, record)=>renderTextCell(text,record)}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({retailStoreOpening,targetComponent})=>{ -const fieldLabels = { - id: '序号', - comment: '评论', + + + const {RetailStoreOpeningService} = GlobalComponents + // const userContext = null + return ( + +{retailStoreOpening.id} +{retailStoreOpening.comment} + + {buildTransferModal(retailStoreOpening,targetComponent)} + + ) } + + -const RetailStoreOpeningBase={menuData,displayColumns,fieldLabels} +const RetailStoreOpeningBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default RetailStoreOpeningBase diff --git a/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.createform.js b/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.createform.js index 5d76d18f7..324766991 100644 --- a/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.createform.js +++ b/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.createform.js @@ -206,7 +206,7 @@ class RetailStoreOpeningCreateForm extends Component { {getFieldDecorator('comment', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.dashboard.js b/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.dashboard.js index f1cca8721..af0ae343e 100644 --- a/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.dashboard.js +++ b/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -136,6 +136,7 @@ class RetailStoreOpeningDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -144,13 +145,17 @@ class RetailStoreOpeningDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.model.js b/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.model.js index aa0b894ac..ec071c596 100644 --- a/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.model.js +++ b/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreOpening/${id}/list/\RetailStoreList/双链小超+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreOpening/${id}/list/RetailStoreList/双链小超+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateRetailStore({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreOpening/${id}/list/\RetailStoreList/双链小超列表`, state: newPlayload } + const location = { pathname: `/retailStoreOpening/${id}/list/RetailStoreList/双链小超列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextRetailStoreUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.permission.js b/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.permission.js new file mode 100644 index 000000000..fc8b0bd1d --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.permission.js @@ -0,0 +1,84 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './RetailStoreOpening.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (retailStoreOpening,targetComponent) =>{ + const userContext = null + return ( + +{retailStoreOpening.id} +{retailStoreOpening.comment} + + + ) +} + + +const renderPermissionSetting = retailStoreOpening => { + const {RetailStoreOpeningBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class RetailStoreOpeningPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const retailStoreOpening = this.props.retailStoreOpening; + const { id,displayName, retailStoreCount } = retailStoreOpening + const cardsData = {cardsName:"生超开业",cardsFor: "retailStoreOpening",cardsSource: retailStoreOpening, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + retailStoreOpening: state._retailStoreOpening, +}))(Form.create()(RetailStoreOpeningPermission)) + diff --git a/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.permission.less b/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.preference.js b/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.preference.js index c91c557d8..5c396fbfa 100644 --- a/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.preference.js +++ b/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.preference.js @@ -299,8 +299,12 @@ class RetailStoreOpeningPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, retailStoreCount } = this.props.retailStoreOpening - const cardsData = {cardsName:"生超开业",cardsFor: "retailStoreOpening",cardsSource: this.props.retailStoreOpening, + const retailStoreOpening = this.props.retailStoreOpening; + const { id,displayName, retailStoreCount } = retailStoreOpening + + + + const cardsData = {cardsName:"生超开业",cardsFor: "retailStoreOpening",cardsSource: retailStoreOpening, subItems: [ ], diff --git a/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.profile.js b/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.profile.js new file mode 100644 index 000000000..d7d492743 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.profile.js @@ -0,0 +1,91 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './RetailStoreOpening.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (retailStoreOpening,targetComponent) =>{ + const userContext = null + return ( + +{retailStoreOpening.id} +{retailStoreOpening.comment} + + + ) +} + + + +class RetailStoreOpeningProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const retailStoreOpening = this.props.retailStoreOpening; + const { id,displayName, retailStoreCount } = retailStoreOpening + + const cardsData = {cardsName:"生超开业",cardsFor: "retailStoreOpening",cardsSource: retailStoreOpening, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + retailStoreOpening: state._retailStoreOpening, +}))(Form.create()(RetailStoreOpeningProfile)) + diff --git a/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.profile.less b/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.search.js b/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.search.js index 73d09753c..059e60e66 100644 --- a/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.search.js +++ b/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.searchform.js b/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.searchform.js index 655cae6ba..44c28dc7b 100644 --- a/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.searchform.js +++ b/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`retailStoreOpeningList.searchField`] = fieldName - value[`retailStoreOpeningList.searchVerb`] = searchVerb - value[`retailStoreOpeningList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,10 +127,11 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'comment')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'comment')) console.log("the final parameter", paramList) @@ -146,11 +147,12 @@ componentDidMount() { } - params['retailStoreOpeningList'] = 1 - params['retailStoreOpeningList.orderBy.0'] = "id" - params['retailStoreOpeningList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -205,8 +207,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -261,8 +263,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.table.js b/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.table.js index 3b5e24859..fa602cb62 100644 --- a/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.table.js +++ b/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.table.js @@ -40,24 +40,53 @@ class RetailStoreOpeningTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = RetailStoreOpeningBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class RetailStoreOpeningTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class RetailStoreOpeningTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.updateform.js b/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.updateform.js index 04a5b8d09..7457789e4 100644 --- a/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.updateform.js +++ b/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.updateform.js @@ -261,7 +261,7 @@ class RetailStoreOpeningUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class RetailStoreOpeningUpdateForm extends Component { initialValue: selectedRow.comment, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.app.js b/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.app.js index 6758e1f85..965bca1df 100644 --- a/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.app.js +++ b/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class RetailStoreOrderBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -353,12 +362,14 @@ class RetailStoreOrderBizApp extends React.PureComponent { buildRouters = () =>{ const {RetailStoreOrderDashboard} = GlobalComponents - const {RetailStoreOrderPreference} = GlobalComponents + const {RetailStoreOrderPermission} = GlobalComponents + const {RetailStoreOrderProfile} = GlobalComponents const routers=[ {path:"/retailStoreOrder/:id/dashboard", component: RetailStoreOrderDashboard}, - {path:"/retailStoreOrder/:id/preference", component: RetailStoreOrderPreference}, + {path:"/retailStoreOrder/:id/profile", component: RetailStoreOrderProfile}, + {path:"/retailStoreOrder/:id/permission", component: RetailStoreOrderPermission}, diff --git a/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.associateform.js b/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.associateform.js index 70f663572..7a61e9d1e 100644 --- a/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.associateform.js +++ b/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { title: '双链小超给双链供应链下的订单', - totalAmount: '2202248192.00', + totalAmount: '2480072448.00', buyerId: 'RS000001', sellerId: 'RSCC000001', } @@ -144,7 +144,7 @@ class RetailStoreOrderAssociateForm extends Component { {getFieldDecorator('title', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -154,7 +154,7 @@ class RetailStoreOrderAssociateForm extends Component { {getFieldDecorator('totalAmount', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.associateform.less b/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.associateform.less +++ b/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.base.js b/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.base.js index 1caab94a7..6e5bb2ddd 100644 --- a/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.base.js +++ b/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.base.js @@ -1,102 +1,44 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"生超的订单", menuFor: "retailStoreOrder", subItems: [ - {name: 'retailStoreOrderLineItemList', displayName:'双链小超订单行项目', icon:'line',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'retailStoreOrderShippingGroupList', displayName:'生超订单送货分组', icon:'store',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'retailStoreOrderPaymentGroupList', displayName:'生超订单付款组', icon:'store',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'goodsList', displayName:'货物', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'retailStoreOrderLineItemList', displayName:'双链小超订单行项目', icon:'line',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'retailStoreOrderShippingGroupList', displayName:'生超订单送货分组', icon:'store',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'retailStoreOrderPaymentGroupList', displayName:'生超订单付款组', icon:'store',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'goodsList', displayName:'货物', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) - -} - -const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'retailStoreOrder') }, - { title: '买方', dataIndex: 'buyer', render: (text, record) => renderReferenceCell(text, record)}, - { title: '卖方', dataIndex: 'seller', render: (text, record) => renderReferenceCell(text, record)}, - { title: '头衔', debugtype: 'string', dataIndex: 'title', width: '18',render: (text, record)=>renderTextCell(text,record) }, - { title: '总金额', dataIndex: 'totalAmount', className:'money', render: (text, record) => renderMoneyCell(text, record) }, - { title: '确认', dataIndex: 'confirmation', render: (text, record) => renderReferenceCell(text, record)}, - { title: '验收', dataIndex: 'approval', render: (text, record) => renderReferenceCell(text, record)}, - { title: '处理', dataIndex: 'processing', render: (text, record) => renderReferenceCell(text, record)}, - { title: '捡货', dataIndex: 'picking', render: (text, record) => renderReferenceCell(text, record)}, - { title: '装运', dataIndex: 'shipment', render: (text, record) => renderReferenceCell(text, record)}, - { title: '送货', dataIndex: 'delivery', render: (text, record) => renderReferenceCell(text, record)}, - { title: '最后更新时间', dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record) }, - { title: '当前状态', debugtype: 'string', dataIndex: 'currentStatus', width: '13',render: (text, record)=>renderTextCell(text,record) }, - -] - const fieldLabels = { id: '序号', buyer: '买方', @@ -114,8 +56,53 @@ const fieldLabels = { } +const displayColumns = [ + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'retailStoreOrder') , sorter: true }, + { title: fieldLabels.buyer, dataIndex: 'buyer', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.seller, dataIndex: 'seller', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.title, debugtype: 'string', dataIndex: 'title', width: '18',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.totalAmount, dataIndex: 'totalAmount', className:'money', render: (text, record) => renderMoneyCell(text, record), sorter: true }, + { title: fieldLabels.confirmation, dataIndex: 'confirmation', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.approval, dataIndex: 'approval', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.processing, dataIndex: 'processing', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.picking, dataIndex: 'picking', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.shipment, dataIndex: 'shipment', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.delivery, dataIndex: 'delivery', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.lastUpdateTime, dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record), sorter: true}, + { title: fieldLabels.currentStatus, debugtype: 'string', dataIndex: 'currentStatus', width: '13',render: (text, record)=>renderTextCell(text,record)}, + +] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({retailStoreOrder,targetComponent})=>{ + + + + const {RetailStoreOrderService} = GlobalComponents + // const userContext = null + return ( + +{retailStoreOrder.id} +{retailStoreOrder.buyer==null?appLocaleName(userContext,"NotAssigned"):`${retailStoreOrder.buyer.displayName}(${retailStoreOrder.buyer.id})`} + + showTransferModel(targetComponent,"买方","retailStore",RetailStoreOrderService.requestCandidateBuyer, + RetailStoreOrderService.transferToAnotherBuyer,"anotherBuyerId",retailStoreOrder.buyer?retailStoreOrder.buyer.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{retailStoreOrder.title} +{retailStoreOrder.totalAmount} +{ moment(retailStoreOrder.lastUpdateTime).format('YYYY-MM-DD')} +{retailStoreOrder.currentStatus} + + {buildTransferModal(retailStoreOrder,targetComponent)} + + ) + +} + + + -const RetailStoreOrderBase={menuData,displayColumns,fieldLabels} +const RetailStoreOrderBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default RetailStoreOrderBase diff --git a/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.createform.js b/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.createform.js index 2161b27a6..750fb82a8 100644 --- a/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.createform.js +++ b/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { title: '双链小超给双链供应链下的订单', - totalAmount: '2865984512.00', + totalAmount: '2704005120.00', buyerId: 'RS000001', sellerId: 'RSCC000001', } @@ -209,7 +209,7 @@ class RetailStoreOrderCreateForm extends Component { {getFieldDecorator('title', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -219,7 +219,7 @@ class RetailStoreOrderCreateForm extends Component { {getFieldDecorator('totalAmount', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.dashboard.js b/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.dashboard.js index c852b261f..e781ae317 100644 --- a/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.dashboard.js +++ b/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -148,6 +148,7 @@ class RetailStoreOrderDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -156,13 +157,17 @@ class RetailStoreOrderDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.model.js b/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.model.js index 20c323e3e..5ca4247f1 100644 --- a/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.model.js +++ b/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreOrder/${id}/list/\RetailStoreOrderLineItemList/双链小超订单行项目+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreOrder/${id}/list/RetailStoreOrderLineItemList/双链小超订单行项目+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateRetailStoreOrderLineItem({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreOrder/${id}/list/\RetailStoreOrderLineItemList/双链小超订单行项目列表`, state: newPlayload } + const location = { pathname: `/retailStoreOrder/${id}/list/RetailStoreOrderLineItemList/双链小超订单行项目列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextRetailStoreOrderLineItemUpdateRow({ payload }, { call, put }) { @@ -206,7 +206,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreOrder/${id}/list/\RetailStoreOrderShippingGroupList/生超订单送货分组+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreOrder/${id}/list/RetailStoreOrderShippingGroupList/生超订单送货分组+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateRetailStoreOrderShippingGroup({ payload }, { call, put }) { @@ -228,7 +228,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreOrder/${id}/list/\RetailStoreOrderShippingGroupList/生超订单送货分组列表`, state: newPlayload } + const location = { pathname: `/retailStoreOrder/${id}/list/RetailStoreOrderShippingGroupList/生超订单送货分组列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextRetailStoreOrderShippingGroupUpdateRow({ payload }, { call, put }) { @@ -275,7 +275,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreOrder/${id}/list/\RetailStoreOrderPaymentGroupList/生超订单付款组+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreOrder/${id}/list/RetailStoreOrderPaymentGroupList/生超订单付款组+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateRetailStoreOrderPaymentGroup({ payload }, { call, put }) { @@ -297,7 +297,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreOrder/${id}/list/\RetailStoreOrderPaymentGroupList/生超订单付款组列表`, state: newPlayload } + const location = { pathname: `/retailStoreOrder/${id}/list/RetailStoreOrderPaymentGroupList/生超订单付款组列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextRetailStoreOrderPaymentGroupUpdateRow({ payload }, { call, put }) { @@ -344,7 +344,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreOrder/${id}/list/\GoodsList/货物+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreOrder/${id}/list/GoodsList/货物+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateGoods({ payload }, { call, put }) { @@ -366,7 +366,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreOrder/${id}/list/\GoodsList/货物列表`, state: newPlayload } + const location = { pathname: `/retailStoreOrder/${id}/list/GoodsList/货物列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextGoodsUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.permission.js b/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.permission.js new file mode 100644 index 000000000..eabae0784 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.permission.js @@ -0,0 +1,87 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './RetailStoreOrder.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (retailStoreOrder,targetComponent) =>{ + const userContext = null + return ( + +{retailStoreOrder.id} +{retailStoreOrder.title} +{retailStoreOrder.totalAmount} +{ moment(retailStoreOrder.lastUpdateTime).format('YYYY-MM-DD')} +{retailStoreOrder.currentStatus} + + + ) +} + + +const renderPermissionSetting = retailStoreOrder => { + const {RetailStoreOrderBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class RetailStoreOrderPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const retailStoreOrder = this.props.retailStoreOrder; + const { id,displayName, retailStoreOrderLineItemCount, retailStoreOrderShippingGroupCount, retailStoreOrderPaymentGroupCount, goodsCount } = retailStoreOrder + const cardsData = {cardsName:"生超的订单",cardsFor: "retailStoreOrder",cardsSource: retailStoreOrder, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + retailStoreOrder: state._retailStoreOrder, +}))(Form.create()(RetailStoreOrderPermission)) + diff --git a/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.permission.less b/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.preference.js b/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.preference.js index bb42e301a..eef6761be 100644 --- a/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.preference.js +++ b/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.preference.js @@ -308,8 +308,12 @@ class RetailStoreOrderPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, retailStoreOrderLineItemCount, retailStoreOrderShippingGroupCount, retailStoreOrderPaymentGroupCount, goodsCount } = this.props.retailStoreOrder - const cardsData = {cardsName:"生超的订单",cardsFor: "retailStoreOrder",cardsSource: this.props.retailStoreOrder, + const retailStoreOrder = this.props.retailStoreOrder; + const { id,displayName, retailStoreOrderLineItemCount, retailStoreOrderShippingGroupCount, retailStoreOrderPaymentGroupCount, goodsCount } = retailStoreOrder + + + + const cardsData = {cardsName:"生超的订单",cardsFor: "retailStoreOrder",cardsSource: retailStoreOrder, subItems: [ ], diff --git a/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.profile.js b/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.profile.js new file mode 100644 index 000000000..6e0a8e406 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.profile.js @@ -0,0 +1,94 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './RetailStoreOrder.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (retailStoreOrder,targetComponent) =>{ + const userContext = null + return ( + +{retailStoreOrder.id} +{retailStoreOrder.title} +{retailStoreOrder.totalAmount} +{ moment(retailStoreOrder.lastUpdateTime).format('YYYY-MM-DD')} +{retailStoreOrder.currentStatus} + + + ) +} + + + +class RetailStoreOrderProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const retailStoreOrder = this.props.retailStoreOrder; + const { id,displayName, retailStoreOrderLineItemCount, retailStoreOrderShippingGroupCount, retailStoreOrderPaymentGroupCount, goodsCount } = retailStoreOrder + + const cardsData = {cardsName:"生超的订单",cardsFor: "retailStoreOrder",cardsSource: retailStoreOrder, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + retailStoreOrder: state._retailStoreOrder, +}))(Form.create()(RetailStoreOrderProfile)) + diff --git a/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.profile.less b/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.search.js b/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.search.js index b8c7bc29b..54810ba98 100644 --- a/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.search.js +++ b/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.searchform.js b/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.searchform.js index 8e57cb811..6b113d80e 100644 --- a/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.searchform.js +++ b/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`retailStoreOrderList.searchField`] = fieldName - value[`retailStoreOrderList.searchVerb`] = searchVerb - value[`retailStoreOrderList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,13 +127,14 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'buyer')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'seller')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'title')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'currentStatus')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'buyer')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'seller')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'title')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'currentStatus')) console.log("the final parameter", paramList) @@ -149,11 +150,12 @@ componentDidMount() { } - params['retailStoreOrderList'] = 1 - params['retailStoreOrderList.orderBy.0'] = "id" - params['retailStoreOrderList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -215,8 +217,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -309,8 +311,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.table.js b/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.table.js index 7a93c5a24..fa7a04915 100644 --- a/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.table.js +++ b/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.table.js @@ -40,24 +40,53 @@ class RetailStoreOrderTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = RetailStoreOrderBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class RetailStoreOrderTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class RetailStoreOrderTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.updateform.js b/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.updateform.js index c6aef0ac2..abccd84b2 100644 --- a/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.updateform.js +++ b/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.updateform.js @@ -262,7 +262,7 @@ class RetailStoreOrderUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class RetailStoreOrderUpdateForm extends Component { initialValue: selectedRow.title, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class RetailStoreOrderUpdateForm extends Component { initialValue: selectedRow.totalAmount, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.app.js b/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.app.js index 7d3cdb45b..7e29fec36 100644 --- a/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.app.js +++ b/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class RetailStoreOrderApprovalBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class RetailStoreOrderApprovalBizApp extends React.PureComponent { buildRouters = () =>{ const {RetailStoreOrderApprovalDashboard} = GlobalComponents - const {RetailStoreOrderApprovalPreference} = GlobalComponents + const {RetailStoreOrderApprovalPermission} = GlobalComponents + const {RetailStoreOrderApprovalProfile} = GlobalComponents const routers=[ {path:"/retailStoreOrderApproval/:id/dashboard", component: RetailStoreOrderApprovalDashboard}, - {path:"/retailStoreOrderApproval/:id/preference", component: RetailStoreOrderApprovalPreference}, + {path:"/retailStoreOrderApproval/:id/profile", component: RetailStoreOrderApprovalProfile}, + {path:"/retailStoreOrderApproval/:id/permission", component: RetailStoreOrderApprovalPermission}, diff --git a/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.associateform.js b/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.associateform.js index d3a3cdb33..f82d409e7 100644 --- a/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.associateform.js +++ b/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { who: '批准者', - approveTime: '2018-02-25', + approveTime: '2018-02-22', } */ @@ -139,7 +139,7 @@ class RetailStoreOrderApprovalAssociateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -149,7 +149,7 @@ class RetailStoreOrderApprovalAssociateForm extends Component { {getFieldDecorator('approveTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.associateform.less b/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.associateform.less +++ b/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.base.js b/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.base.js index 98ad64ab3..05be3dafc 100644 --- a/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.base.js +++ b/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.base.js @@ -1,98 +1,77 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"生超订单批准", menuFor: "retailStoreOrderApproval", subItems: [ - {name: 'retailStoreOrderList', displayName:'生超的订单', icon:'store',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'retailStoreOrderList', displayName:'生超的订单', icon:'store',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + who: '谁', + approveTime: '批准时间', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'retailStoreOrderApproval') }, - { title: '谁', debugtype: 'string', dataIndex: 'who', width: '7',render: (text, record)=>renderTextCell(text,record) }, - { title: '批准时间', dataIndex: 'approveTime', render: (text, record) =>renderDateCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'retailStoreOrderApproval') , sorter: true }, + { title: fieldLabels.who, debugtype: 'string', dataIndex: 'who', width: '7',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.approveTime, dataIndex: 'approveTime', render: (text, record) =>renderDateCell(text,record), sorter: true }, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({retailStoreOrderApproval,targetComponent})=>{ -const fieldLabels = { - id: '序号', - who: '谁', - approveTime: '批准时间', + + + const {RetailStoreOrderApprovalService} = GlobalComponents + // const userContext = null + return ( + +{retailStoreOrderApproval.id} +{retailStoreOrderApproval.who} +{ moment(retailStoreOrderApproval.approveTime).format('YYYY-MM-DD')} + + {buildTransferModal(retailStoreOrderApproval,targetComponent)} + + ) } + + -const RetailStoreOrderApprovalBase={menuData,displayColumns,fieldLabels} +const RetailStoreOrderApprovalBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default RetailStoreOrderApprovalBase diff --git a/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.createform.js b/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.createform.js index 0fcea8933..e965624c2 100644 --- a/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.createform.js +++ b/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { who: '批准者', - approveTime: '2019-01-02', + approveTime: '2017-06-02', } */ @@ -207,7 +207,7 @@ class RetailStoreOrderApprovalCreateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -217,7 +217,7 @@ class RetailStoreOrderApprovalCreateForm extends Component { {getFieldDecorator('approveTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.dashboard.js b/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.dashboard.js index baa0a2be7..d090b0398 100644 --- a/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.dashboard.js +++ b/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -137,6 +137,7 @@ class RetailStoreOrderApprovalDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -145,13 +146,17 @@ class RetailStoreOrderApprovalDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.model.js b/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.model.js index d936ab4bb..47e1ddaa4 100644 --- a/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.model.js +++ b/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreOrderApproval/${id}/list/\RetailStoreOrderList/生超的订单+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreOrderApproval/${id}/list/RetailStoreOrderList/生超的订单+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateRetailStoreOrder({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreOrderApproval/${id}/list/\RetailStoreOrderList/生超的订单列表`, state: newPlayload } + const location = { pathname: `/retailStoreOrderApproval/${id}/list/RetailStoreOrderList/生超的订单列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextRetailStoreOrderUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.permission.js b/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.permission.js new file mode 100644 index 000000000..938435f4e --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.permission.js @@ -0,0 +1,85 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './RetailStoreOrderApproval.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (retailStoreOrderApproval,targetComponent) =>{ + const userContext = null + return ( + +{retailStoreOrderApproval.id} +{retailStoreOrderApproval.who} +{ moment(retailStoreOrderApproval.approveTime).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = retailStoreOrderApproval => { + const {RetailStoreOrderApprovalBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class RetailStoreOrderApprovalPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const retailStoreOrderApproval = this.props.retailStoreOrderApproval; + const { id,displayName, retailStoreOrderCount } = retailStoreOrderApproval + const cardsData = {cardsName:"生超订单批准",cardsFor: "retailStoreOrderApproval",cardsSource: retailStoreOrderApproval, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + retailStoreOrderApproval: state._retailStoreOrderApproval, +}))(Form.create()(RetailStoreOrderApprovalPermission)) + diff --git a/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.permission.less b/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.preference.js b/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.preference.js index 1c9654c5c..f37d6bef4 100644 --- a/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.preference.js +++ b/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.preference.js @@ -300,8 +300,12 @@ class RetailStoreOrderApprovalPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, retailStoreOrderCount } = this.props.retailStoreOrderApproval - const cardsData = {cardsName:"生超订单批准",cardsFor: "retailStoreOrderApproval",cardsSource: this.props.retailStoreOrderApproval, + const retailStoreOrderApproval = this.props.retailStoreOrderApproval; + const { id,displayName, retailStoreOrderCount } = retailStoreOrderApproval + + + + const cardsData = {cardsName:"生超订单批准",cardsFor: "retailStoreOrderApproval",cardsSource: retailStoreOrderApproval, subItems: [ ], diff --git a/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.profile.js b/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.profile.js new file mode 100644 index 000000000..528975280 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.profile.js @@ -0,0 +1,92 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './RetailStoreOrderApproval.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (retailStoreOrderApproval,targetComponent) =>{ + const userContext = null + return ( + +{retailStoreOrderApproval.id} +{retailStoreOrderApproval.who} +{ moment(retailStoreOrderApproval.approveTime).format('YYYY-MM-DD')} + + + ) +} + + + +class RetailStoreOrderApprovalProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const retailStoreOrderApproval = this.props.retailStoreOrderApproval; + const { id,displayName, retailStoreOrderCount } = retailStoreOrderApproval + + const cardsData = {cardsName:"生超订单批准",cardsFor: "retailStoreOrderApproval",cardsSource: retailStoreOrderApproval, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + retailStoreOrderApproval: state._retailStoreOrderApproval, +}))(Form.create()(RetailStoreOrderApprovalProfile)) + diff --git a/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.profile.less b/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.search.js b/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.search.js index ddb6a7b5c..99e67aad0 100644 --- a/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.search.js +++ b/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.searchform.js b/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.searchform.js index fcc97c204..5fe370be8 100644 --- a/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.searchform.js +++ b/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`retailStoreOrderApprovalList.searchField`] = fieldName - value[`retailStoreOrderApprovalList.searchVerb`] = searchVerb - value[`retailStoreOrderApprovalList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,10 +127,11 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'who')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'who')) console.log("the final parameter", paramList) @@ -146,11 +147,12 @@ componentDidMount() { } - params['retailStoreOrderApprovalList'] = 1 - params['retailStoreOrderApprovalList.orderBy.0'] = "id" - params['retailStoreOrderApprovalList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -205,8 +207,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -261,8 +263,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.table.js b/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.table.js index 0674ca1f9..45d76d051 100644 --- a/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.table.js +++ b/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.table.js @@ -40,24 +40,53 @@ class RetailStoreOrderApprovalTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = RetailStoreOrderApprovalBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class RetailStoreOrderApprovalTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class RetailStoreOrderApprovalTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.updateform.js b/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.updateform.js index 342d0bd56..c87c6d9fc 100644 --- a/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.updateform.js +++ b/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.updateform.js @@ -262,7 +262,7 @@ class RetailStoreOrderApprovalUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class RetailStoreOrderApprovalUpdateForm extends Component { initialValue: selectedRow.who, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class RetailStoreOrderApprovalUpdateForm extends Component { initialValue: selectedRow.approveTime, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.app.js b/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.app.js index ef4511849..6fb1b300f 100644 --- a/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.app.js +++ b/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class RetailStoreOrderConfirmationBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class RetailStoreOrderConfirmationBizApp extends React.PureComponent { buildRouters = () =>{ const {RetailStoreOrderConfirmationDashboard} = GlobalComponents - const {RetailStoreOrderConfirmationPreference} = GlobalComponents + const {RetailStoreOrderConfirmationPermission} = GlobalComponents + const {RetailStoreOrderConfirmationProfile} = GlobalComponents const routers=[ {path:"/retailStoreOrderConfirmation/:id/dashboard", component: RetailStoreOrderConfirmationDashboard}, - {path:"/retailStoreOrderConfirmation/:id/preference", component: RetailStoreOrderConfirmationPreference}, + {path:"/retailStoreOrderConfirmation/:id/profile", component: RetailStoreOrderConfirmationProfile}, + {path:"/retailStoreOrderConfirmation/:id/permission", component: RetailStoreOrderConfirmationPermission}, diff --git a/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.associateform.js b/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.associateform.js index 13e1a18eb..d6da8957f 100644 --- a/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.associateform.js +++ b/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { who: '确认者', - confirmTime: '2018-08-01', + confirmTime: '2018-06-23', } */ @@ -139,7 +139,7 @@ class RetailStoreOrderConfirmationAssociateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -149,7 +149,7 @@ class RetailStoreOrderConfirmationAssociateForm extends Component { {getFieldDecorator('confirmTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.associateform.less b/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.associateform.less +++ b/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.base.js b/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.base.js index 1857b0ed0..7b45009b8 100644 --- a/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.base.js +++ b/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.base.js @@ -1,98 +1,77 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"生超订单确认", menuFor: "retailStoreOrderConfirmation", subItems: [ - {name: 'retailStoreOrderList', displayName:'生超的订单', icon:'store',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'retailStoreOrderList', displayName:'生超的订单', icon:'store',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + who: '谁', + confirmTime: '确认时间', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'retailStoreOrderConfirmation') }, - { title: '谁', debugtype: 'string', dataIndex: 'who', width: '7',render: (text, record)=>renderTextCell(text,record) }, - { title: '确认时间', dataIndex: 'confirmTime', render: (text, record) =>renderDateCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'retailStoreOrderConfirmation') , sorter: true }, + { title: fieldLabels.who, debugtype: 'string', dataIndex: 'who', width: '7',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.confirmTime, dataIndex: 'confirmTime', render: (text, record) =>renderDateCell(text,record), sorter: true }, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({retailStoreOrderConfirmation,targetComponent})=>{ -const fieldLabels = { - id: '序号', - who: '谁', - confirmTime: '确认时间', + + + const {RetailStoreOrderConfirmationService} = GlobalComponents + // const userContext = null + return ( + +{retailStoreOrderConfirmation.id} +{retailStoreOrderConfirmation.who} +{ moment(retailStoreOrderConfirmation.confirmTime).format('YYYY-MM-DD')} + + {buildTransferModal(retailStoreOrderConfirmation,targetComponent)} + + ) } + + -const RetailStoreOrderConfirmationBase={menuData,displayColumns,fieldLabels} +const RetailStoreOrderConfirmationBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default RetailStoreOrderConfirmationBase diff --git a/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.createform.js b/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.createform.js index bd1138806..320354883 100644 --- a/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.createform.js +++ b/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { who: '确认者', - confirmTime: '2017-01-15', + confirmTime: '2016-09-07', } */ @@ -207,7 +207,7 @@ class RetailStoreOrderConfirmationCreateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -217,7 +217,7 @@ class RetailStoreOrderConfirmationCreateForm extends Component { {getFieldDecorator('confirmTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.dashboard.js b/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.dashboard.js index a65baed4f..9c1e7bab9 100644 --- a/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.dashboard.js +++ b/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -137,6 +137,7 @@ class RetailStoreOrderConfirmationDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -145,13 +146,17 @@ class RetailStoreOrderConfirmationDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.model.js b/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.model.js index 1814fb32f..aeacd5137 100644 --- a/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.model.js +++ b/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreOrderConfirmation/${id}/list/\RetailStoreOrderList/生超的订单+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreOrderConfirmation/${id}/list/RetailStoreOrderList/生超的订单+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateRetailStoreOrder({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreOrderConfirmation/${id}/list/\RetailStoreOrderList/生超的订单列表`, state: newPlayload } + const location = { pathname: `/retailStoreOrderConfirmation/${id}/list/RetailStoreOrderList/生超的订单列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextRetailStoreOrderUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.permission.js b/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.permission.js new file mode 100644 index 000000000..95b4e78e2 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.permission.js @@ -0,0 +1,85 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './RetailStoreOrderConfirmation.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (retailStoreOrderConfirmation,targetComponent) =>{ + const userContext = null + return ( + +{retailStoreOrderConfirmation.id} +{retailStoreOrderConfirmation.who} +{ moment(retailStoreOrderConfirmation.confirmTime).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = retailStoreOrderConfirmation => { + const {RetailStoreOrderConfirmationBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class RetailStoreOrderConfirmationPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const retailStoreOrderConfirmation = this.props.retailStoreOrderConfirmation; + const { id,displayName, retailStoreOrderCount } = retailStoreOrderConfirmation + const cardsData = {cardsName:"生超订单确认",cardsFor: "retailStoreOrderConfirmation",cardsSource: retailStoreOrderConfirmation, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + retailStoreOrderConfirmation: state._retailStoreOrderConfirmation, +}))(Form.create()(RetailStoreOrderConfirmationPermission)) + diff --git a/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.permission.less b/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.preference.js b/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.preference.js index 75ce49cfd..f488f92c0 100644 --- a/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.preference.js +++ b/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.preference.js @@ -300,8 +300,12 @@ class RetailStoreOrderConfirmationPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, retailStoreOrderCount } = this.props.retailStoreOrderConfirmation - const cardsData = {cardsName:"生超订单确认",cardsFor: "retailStoreOrderConfirmation",cardsSource: this.props.retailStoreOrderConfirmation, + const retailStoreOrderConfirmation = this.props.retailStoreOrderConfirmation; + const { id,displayName, retailStoreOrderCount } = retailStoreOrderConfirmation + + + + const cardsData = {cardsName:"生超订单确认",cardsFor: "retailStoreOrderConfirmation",cardsSource: retailStoreOrderConfirmation, subItems: [ ], diff --git a/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.profile.js b/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.profile.js new file mode 100644 index 000000000..f33595d10 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.profile.js @@ -0,0 +1,92 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './RetailStoreOrderConfirmation.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (retailStoreOrderConfirmation,targetComponent) =>{ + const userContext = null + return ( + +{retailStoreOrderConfirmation.id} +{retailStoreOrderConfirmation.who} +{ moment(retailStoreOrderConfirmation.confirmTime).format('YYYY-MM-DD')} + + + ) +} + + + +class RetailStoreOrderConfirmationProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const retailStoreOrderConfirmation = this.props.retailStoreOrderConfirmation; + const { id,displayName, retailStoreOrderCount } = retailStoreOrderConfirmation + + const cardsData = {cardsName:"生超订单确认",cardsFor: "retailStoreOrderConfirmation",cardsSource: retailStoreOrderConfirmation, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + retailStoreOrderConfirmation: state._retailStoreOrderConfirmation, +}))(Form.create()(RetailStoreOrderConfirmationProfile)) + diff --git a/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.profile.less b/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.search.js b/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.search.js index f97715892..053d00dc7 100644 --- a/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.search.js +++ b/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.searchform.js b/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.searchform.js index cbe2ab1af..07adfc780 100644 --- a/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.searchform.js +++ b/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`retailStoreOrderConfirmationList.searchField`] = fieldName - value[`retailStoreOrderConfirmationList.searchVerb`] = searchVerb - value[`retailStoreOrderConfirmationList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,10 +127,11 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'who')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'who')) console.log("the final parameter", paramList) @@ -146,11 +147,12 @@ componentDidMount() { } - params['retailStoreOrderConfirmationList'] = 1 - params['retailStoreOrderConfirmationList.orderBy.0'] = "id" - params['retailStoreOrderConfirmationList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -205,8 +207,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -261,8 +263,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.table.js b/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.table.js index 71d306ebb..bdfc83094 100644 --- a/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.table.js +++ b/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.table.js @@ -40,24 +40,53 @@ class RetailStoreOrderConfirmationTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = RetailStoreOrderConfirmationBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class RetailStoreOrderConfirmationTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class RetailStoreOrderConfirmationTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.updateform.js b/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.updateform.js index 875e0a7f8..8ec43f469 100644 --- a/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.updateform.js +++ b/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.updateform.js @@ -262,7 +262,7 @@ class RetailStoreOrderConfirmationUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class RetailStoreOrderConfirmationUpdateForm extends Component { initialValue: selectedRow.who, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class RetailStoreOrderConfirmationUpdateForm extends Component { initialValue: selectedRow.confirmTime, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.app.js b/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.app.js index a5931c2eb..08fd0c593 100644 --- a/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.app.js +++ b/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class RetailStoreOrderDeliveryBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class RetailStoreOrderDeliveryBizApp extends React.PureComponent { buildRouters = () =>{ const {RetailStoreOrderDeliveryDashboard} = GlobalComponents - const {RetailStoreOrderDeliveryPreference} = GlobalComponents + const {RetailStoreOrderDeliveryPermission} = GlobalComponents + const {RetailStoreOrderDeliveryProfile} = GlobalComponents const routers=[ {path:"/retailStoreOrderDelivery/:id/dashboard", component: RetailStoreOrderDeliveryDashboard}, - {path:"/retailStoreOrderDelivery/:id/preference", component: RetailStoreOrderDeliveryPreference}, + {path:"/retailStoreOrderDelivery/:id/profile", component: RetailStoreOrderDeliveryProfile}, + {path:"/retailStoreOrderDelivery/:id/permission", component: RetailStoreOrderDeliveryPermission}, diff --git a/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.associateform.js b/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.associateform.js index 5cf5e38c3..8080716cf 100644 --- a/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.associateform.js +++ b/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { who: '送货者', - deliveryTime: '2018-11-30', + deliveryTime: '2018-02-27', } */ @@ -139,7 +139,7 @@ class RetailStoreOrderDeliveryAssociateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -149,7 +149,7 @@ class RetailStoreOrderDeliveryAssociateForm extends Component { {getFieldDecorator('deliveryTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.associateform.less b/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.associateform.less +++ b/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.base.js b/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.base.js index 2a6fc57ca..33549ac0f 100644 --- a/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.base.js +++ b/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.base.js @@ -1,98 +1,77 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"生超订单交付", menuFor: "retailStoreOrderDelivery", subItems: [ - {name: 'retailStoreOrderList', displayName:'生超的订单', icon:'store',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'retailStoreOrderList', displayName:'生超的订单', icon:'store',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + who: '谁', + deliveryTime: '交货时间', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'retailStoreOrderDelivery') }, - { title: '谁', debugtype: 'string', dataIndex: 'who', width: '7',render: (text, record)=>renderTextCell(text,record) }, - { title: '交货时间', dataIndex: 'deliveryTime', render: (text, record) =>renderDateCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'retailStoreOrderDelivery') , sorter: true }, + { title: fieldLabels.who, debugtype: 'string', dataIndex: 'who', width: '7',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.deliveryTime, dataIndex: 'deliveryTime', render: (text, record) =>renderDateCell(text,record), sorter: true }, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({retailStoreOrderDelivery,targetComponent})=>{ -const fieldLabels = { - id: '序号', - who: '谁', - deliveryTime: '交货时间', + + + const {RetailStoreOrderDeliveryService} = GlobalComponents + // const userContext = null + return ( + +{retailStoreOrderDelivery.id} +{retailStoreOrderDelivery.who} +{ moment(retailStoreOrderDelivery.deliveryTime).format('YYYY-MM-DD')} + + {buildTransferModal(retailStoreOrderDelivery,targetComponent)} + + ) } + + -const RetailStoreOrderDeliveryBase={menuData,displayColumns,fieldLabels} +const RetailStoreOrderDeliveryBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default RetailStoreOrderDeliveryBase diff --git a/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.createform.js b/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.createform.js index 5e2178b2d..7ca2222c4 100644 --- a/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.createform.js +++ b/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { who: '送货者', - deliveryTime: '2018-05-06', + deliveryTime: '2018-06-12', } */ @@ -207,7 +207,7 @@ class RetailStoreOrderDeliveryCreateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -217,7 +217,7 @@ class RetailStoreOrderDeliveryCreateForm extends Component { {getFieldDecorator('deliveryTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.dashboard.js b/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.dashboard.js index 022fd8d89..f2d30fa21 100644 --- a/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.dashboard.js +++ b/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -137,6 +137,7 @@ class RetailStoreOrderDeliveryDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -145,13 +146,17 @@ class RetailStoreOrderDeliveryDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.model.js b/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.model.js index 1d71a11a7..064e43284 100644 --- a/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.model.js +++ b/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreOrderDelivery/${id}/list/\RetailStoreOrderList/生超的订单+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreOrderDelivery/${id}/list/RetailStoreOrderList/生超的订单+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateRetailStoreOrder({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreOrderDelivery/${id}/list/\RetailStoreOrderList/生超的订单列表`, state: newPlayload } + const location = { pathname: `/retailStoreOrderDelivery/${id}/list/RetailStoreOrderList/生超的订单列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextRetailStoreOrderUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.permission.js b/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.permission.js new file mode 100644 index 000000000..4868f76b2 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.permission.js @@ -0,0 +1,85 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './RetailStoreOrderDelivery.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (retailStoreOrderDelivery,targetComponent) =>{ + const userContext = null + return ( + +{retailStoreOrderDelivery.id} +{retailStoreOrderDelivery.who} +{ moment(retailStoreOrderDelivery.deliveryTime).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = retailStoreOrderDelivery => { + const {RetailStoreOrderDeliveryBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class RetailStoreOrderDeliveryPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const retailStoreOrderDelivery = this.props.retailStoreOrderDelivery; + const { id,displayName, retailStoreOrderCount } = retailStoreOrderDelivery + const cardsData = {cardsName:"生超订单交付",cardsFor: "retailStoreOrderDelivery",cardsSource: retailStoreOrderDelivery, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + retailStoreOrderDelivery: state._retailStoreOrderDelivery, +}))(Form.create()(RetailStoreOrderDeliveryPermission)) + diff --git a/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.permission.less b/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.preference.js b/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.preference.js index d2108f950..e6dec6668 100644 --- a/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.preference.js +++ b/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.preference.js @@ -300,8 +300,12 @@ class RetailStoreOrderDeliveryPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, retailStoreOrderCount } = this.props.retailStoreOrderDelivery - const cardsData = {cardsName:"生超订单交付",cardsFor: "retailStoreOrderDelivery",cardsSource: this.props.retailStoreOrderDelivery, + const retailStoreOrderDelivery = this.props.retailStoreOrderDelivery; + const { id,displayName, retailStoreOrderCount } = retailStoreOrderDelivery + + + + const cardsData = {cardsName:"生超订单交付",cardsFor: "retailStoreOrderDelivery",cardsSource: retailStoreOrderDelivery, subItems: [ ], diff --git a/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.profile.js b/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.profile.js new file mode 100644 index 000000000..a66699750 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.profile.js @@ -0,0 +1,92 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './RetailStoreOrderDelivery.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (retailStoreOrderDelivery,targetComponent) =>{ + const userContext = null + return ( + +{retailStoreOrderDelivery.id} +{retailStoreOrderDelivery.who} +{ moment(retailStoreOrderDelivery.deliveryTime).format('YYYY-MM-DD')} + + + ) +} + + + +class RetailStoreOrderDeliveryProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const retailStoreOrderDelivery = this.props.retailStoreOrderDelivery; + const { id,displayName, retailStoreOrderCount } = retailStoreOrderDelivery + + const cardsData = {cardsName:"生超订单交付",cardsFor: "retailStoreOrderDelivery",cardsSource: retailStoreOrderDelivery, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + retailStoreOrderDelivery: state._retailStoreOrderDelivery, +}))(Form.create()(RetailStoreOrderDeliveryProfile)) + diff --git a/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.profile.less b/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.search.js b/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.search.js index 56baffd3a..dcc3e1bc5 100644 --- a/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.search.js +++ b/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.searchform.js b/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.searchform.js index 559a5a0f1..e0b1b93b9 100644 --- a/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.searchform.js +++ b/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`retailStoreOrderDeliveryList.searchField`] = fieldName - value[`retailStoreOrderDeliveryList.searchVerb`] = searchVerb - value[`retailStoreOrderDeliveryList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,10 +127,11 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'who')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'who')) console.log("the final parameter", paramList) @@ -146,11 +147,12 @@ componentDidMount() { } - params['retailStoreOrderDeliveryList'] = 1 - params['retailStoreOrderDeliveryList.orderBy.0'] = "id" - params['retailStoreOrderDeliveryList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -205,8 +207,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -261,8 +263,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.table.js b/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.table.js index a7c2782c5..b691d06e4 100644 --- a/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.table.js +++ b/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.table.js @@ -40,24 +40,53 @@ class RetailStoreOrderDeliveryTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = RetailStoreOrderDeliveryBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class RetailStoreOrderDeliveryTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class RetailStoreOrderDeliveryTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.updateform.js b/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.updateform.js index d1b855d1d..affd4b78b 100644 --- a/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.updateform.js +++ b/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.updateform.js @@ -262,7 +262,7 @@ class RetailStoreOrderDeliveryUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class RetailStoreOrderDeliveryUpdateForm extends Component { initialValue: selectedRow.who, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class RetailStoreOrderDeliveryUpdateForm extends Component { initialValue: selectedRow.deliveryTime, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.app.js b/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.app.js index 1bd00a660..548422499 100644 --- a/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.app.js +++ b/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class RetailStoreOrderLineItemBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -157,12 +166,14 @@ class RetailStoreOrderLineItemBizApp extends React.PureComponent { buildRouters = () =>{ const {RetailStoreOrderLineItemDashboard} = GlobalComponents - const {RetailStoreOrderLineItemPreference} = GlobalComponents + const {RetailStoreOrderLineItemPermission} = GlobalComponents + const {RetailStoreOrderLineItemProfile} = GlobalComponents const routers=[ {path:"/retailStoreOrderLineItem/:id/dashboard", component: RetailStoreOrderLineItemDashboard}, - {path:"/retailStoreOrderLineItem/:id/preference", component: RetailStoreOrderLineItemPreference}, + {path:"/retailStoreOrderLineItem/:id/profile", component: RetailStoreOrderLineItemProfile}, + {path:"/retailStoreOrderLineItem/:id/permission", component: RetailStoreOrderLineItemPermission}, diff --git a/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.associateform.js b/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.associateform.js index 450c583e4..ce9608694 100644 --- a/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.associateform.js +++ b/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.associateform.js @@ -20,8 +20,8 @@ const testValues = {}; const testValues = { skuId: 'SKU', skuName: '大瓶可乐', - amount: '3.90', - quantity: '7440', + amount: '3.63', + quantity: '9605', unitOfMeasurement: '件', bizOrderId: 'RSO000001', } @@ -142,7 +142,7 @@ class RetailStoreOrderLineItemAssociateForm extends Component { {getFieldDecorator('skuId', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -152,7 +152,7 @@ class RetailStoreOrderLineItemAssociateForm extends Component { {getFieldDecorator('skuName', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -162,7 +162,7 @@ class RetailStoreOrderLineItemAssociateForm extends Component { {getFieldDecorator('amount', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -172,7 +172,7 @@ class RetailStoreOrderLineItemAssociateForm extends Component { {getFieldDecorator('quantity', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -182,7 +182,7 @@ class RetailStoreOrderLineItemAssociateForm extends Component { {getFieldDecorator('unitOfMeasurement', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.associateform.less b/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.associateform.less +++ b/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.base.js b/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.base.js index aeebb5ca6..e3a043c21 100644 --- a/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.base.js +++ b/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.base.js @@ -1,10 +1,33 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"双链小超订单行项目", menuFor: "retailStoreOrderLineItem", subItems: [ @@ -12,81 +35,6 @@ const menuData = {menuName:"双链小超订单行项目", menuFor: "retailStoreO ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) - -} - -const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record) }, - { title: '订单', dataIndex: 'bizOrder', render: (text, record) => renderReferenceCell(text, record)}, - { title: '产品ID', debugtype: 'string', dataIndex: 'skuId', width: '7',render: (text, record)=>renderTextCell(text,record) }, - { title: '产品名称', debugtype: 'string', dataIndex: 'skuName', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: '金额', dataIndex: 'amount', className:'money', render: (text, record) => renderMoneyCell(text, record) }, - { title: '数量', debugtype: 'int', dataIndex: 'quantity', width: '9',render: (text, record)=>renderTextCell(text,record) }, - { title: '测量单位', debugtype: 'string', dataIndex: 'unitOfMeasurement', width: '6',render: (text, record)=>renderTextCell(text,record) }, - -] - const fieldLabels = { id: '序号', bizOrder: '订单', @@ -98,8 +46,48 @@ const fieldLabels = { } +const displayColumns = [ + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.bizOrder, dataIndex: 'bizOrder', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.skuId, debugtype: 'string', dataIndex: 'skuId', width: '7',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.skuName, debugtype: 'string', dataIndex: 'skuName', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.amount, dataIndex: 'amount', className:'money', render: (text, record) => renderMoneyCell(text, record), sorter: true }, + { title: fieldLabels.quantity, debugtype: 'int', dataIndex: 'quantity', width: '9',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.unitOfMeasurement, debugtype: 'string', dataIndex: 'unitOfMeasurement', width: '6',render: (text, record)=>renderTextCell(text,record)}, + +] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({retailStoreOrderLineItem,targetComponent})=>{ + + + + const {RetailStoreOrderLineItemService} = GlobalComponents + // const userContext = null + return ( + +{retailStoreOrderLineItem.id} +{retailStoreOrderLineItem.bizOrder==null?appLocaleName(userContext,"NotAssigned"):`${retailStoreOrderLineItem.bizOrder.displayName}(${retailStoreOrderLineItem.bizOrder.id})`} + + showTransferModel(targetComponent,"订单","retailStoreOrder",RetailStoreOrderLineItemService.requestCandidateBizOrder, + RetailStoreOrderLineItemService.transferToAnotherBizOrder,"anotherBizOrderId",retailStoreOrderLineItem.bizOrder?retailStoreOrderLineItem.bizOrder.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{retailStoreOrderLineItem.skuId} +{retailStoreOrderLineItem.skuName} +{retailStoreOrderLineItem.amount} +{retailStoreOrderLineItem.quantity} +{retailStoreOrderLineItem.unitOfMeasurement} + + {buildTransferModal(retailStoreOrderLineItem,targetComponent)} + + ) + +} + + + -const RetailStoreOrderLineItemBase={menuData,displayColumns,fieldLabels} +const RetailStoreOrderLineItemBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default RetailStoreOrderLineItemBase diff --git a/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.createform.js b/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.createform.js index a51c4a630..1e24736b4 100644 --- a/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.createform.js +++ b/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.createform.js @@ -19,8 +19,8 @@ const testValues = {}; const testValues = { skuId: 'SKU', skuName: '大瓶可乐', - amount: '3.61', - quantity: '9137', + amount: '3.27', + quantity: '9258', unitOfMeasurement: '件', bizOrderId: 'RSO000001', } @@ -211,7 +211,7 @@ class RetailStoreOrderLineItemCreateForm extends Component { {getFieldDecorator('skuId', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -221,7 +221,7 @@ class RetailStoreOrderLineItemCreateForm extends Component { {getFieldDecorator('skuName', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -231,7 +231,7 @@ class RetailStoreOrderLineItemCreateForm extends Component { {getFieldDecorator('amount', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -241,7 +241,7 @@ class RetailStoreOrderLineItemCreateForm extends Component { {getFieldDecorator('quantity', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -251,7 +251,7 @@ class RetailStoreOrderLineItemCreateForm extends Component { {getFieldDecorator('unitOfMeasurement', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.dashboard.js b/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.dashboard.js index 0cf68bd9d..bc093c144 100644 --- a/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.dashboard.js +++ b/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -145,6 +145,7 @@ class RetailStoreOrderLineItemDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -153,13 +154,17 @@ class RetailStoreOrderLineItemDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.model.js b/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.model.js index 57775491e..5cb2ca7a1 100644 --- a/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.model.js +++ b/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' diff --git a/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.permission.js b/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.permission.js new file mode 100644 index 000000000..2d51d372e --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.permission.js @@ -0,0 +1,88 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './RetailStoreOrderLineItem.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (retailStoreOrderLineItem,targetComponent) =>{ + const userContext = null + return ( + +{retailStoreOrderLineItem.id} +{retailStoreOrderLineItem.skuId} +{retailStoreOrderLineItem.skuName} +{retailStoreOrderLineItem.amount} +{retailStoreOrderLineItem.quantity} +{retailStoreOrderLineItem.unitOfMeasurement} + + + ) +} + + +const renderPermissionSetting = retailStoreOrderLineItem => { + const {RetailStoreOrderLineItemBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class RetailStoreOrderLineItemPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const retailStoreOrderLineItem = this.props.retailStoreOrderLineItem; + const { id,displayName, } = retailStoreOrderLineItem + const cardsData = {cardsName:"双链小超订单行项目",cardsFor: "retailStoreOrderLineItem",cardsSource: retailStoreOrderLineItem, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + retailStoreOrderLineItem: state._retailStoreOrderLineItem, +}))(Form.create()(RetailStoreOrderLineItemPermission)) + diff --git a/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.permission.less b/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.preference.js b/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.preference.js index 7b2c2b524..5b0cab6ff 100644 --- a/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.preference.js +++ b/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.preference.js @@ -309,8 +309,12 @@ class RetailStoreOrderLineItemPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, } = this.props.retailStoreOrderLineItem - const cardsData = {cardsName:"双链小超订单行项目",cardsFor: "retailStoreOrderLineItem",cardsSource: this.props.retailStoreOrderLineItem, + const retailStoreOrderLineItem = this.props.retailStoreOrderLineItem; + const { id,displayName, } = retailStoreOrderLineItem + + + + const cardsData = {cardsName:"双链小超订单行项目",cardsFor: "retailStoreOrderLineItem",cardsSource: retailStoreOrderLineItem, subItems: [ ], diff --git a/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.profile.js b/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.profile.js new file mode 100644 index 000000000..147e14f74 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.profile.js @@ -0,0 +1,95 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './RetailStoreOrderLineItem.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (retailStoreOrderLineItem,targetComponent) =>{ + const userContext = null + return ( + +{retailStoreOrderLineItem.id} +{retailStoreOrderLineItem.skuId} +{retailStoreOrderLineItem.skuName} +{retailStoreOrderLineItem.amount} +{retailStoreOrderLineItem.quantity} +{retailStoreOrderLineItem.unitOfMeasurement} + + + ) +} + + + +class RetailStoreOrderLineItemProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const retailStoreOrderLineItem = this.props.retailStoreOrderLineItem; + const { id,displayName, } = retailStoreOrderLineItem + + const cardsData = {cardsName:"双链小超订单行项目",cardsFor: "retailStoreOrderLineItem",cardsSource: retailStoreOrderLineItem, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + retailStoreOrderLineItem: state._retailStoreOrderLineItem, +}))(Form.create()(RetailStoreOrderLineItemProfile)) + diff --git a/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.profile.less b/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.search.js b/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.search.js index de81fde1d..ddb5e4542 100644 --- a/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.search.js +++ b/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.searchform.js b/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.searchform.js index 845057e68..cc853abb2 100644 --- a/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.searchform.js +++ b/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`retailStoreOrderLineItemList.searchField`] = fieldName - value[`retailStoreOrderLineItemList.searchVerb`] = searchVerb - value[`retailStoreOrderLineItemList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,13 +127,14 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'bizOrder')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'skuId')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'skuName')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'unitOfMeasurement')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'bizOrder')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'skuId')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'skuName')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'unitOfMeasurement')) console.log("the final parameter", paramList) @@ -149,11 +150,12 @@ componentDidMount() { } - params['retailStoreOrderLineItemList'] = 1 - params['retailStoreOrderLineItemList.orderBy.0'] = "id" - params['retailStoreOrderLineItemList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -215,8 +217,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -302,8 +304,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.table.js b/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.table.js index b0d791b08..454a473c0 100644 --- a/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.table.js +++ b/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.table.js @@ -40,24 +40,53 @@ class RetailStoreOrderLineItemTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = RetailStoreOrderLineItemBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class RetailStoreOrderLineItemTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class RetailStoreOrderLineItemTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.updateform.js b/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.updateform.js index 9a1b3fd5a..8d554a0f6 100644 --- a/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.updateform.js +++ b/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.updateform.js @@ -261,7 +261,7 @@ class RetailStoreOrderLineItemUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class RetailStoreOrderLineItemUpdateForm extends Component { initialValue: selectedRow.skuId, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -285,7 +285,7 @@ class RetailStoreOrderLineItemUpdateForm extends Component { initialValue: selectedRow.skuName, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -297,7 +297,7 @@ class RetailStoreOrderLineItemUpdateForm extends Component { initialValue: selectedRow.amount, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -309,7 +309,7 @@ class RetailStoreOrderLineItemUpdateForm extends Component { initialValue: selectedRow.quantity, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -321,7 +321,7 @@ class RetailStoreOrderLineItemUpdateForm extends Component { initialValue: selectedRow.unitOfMeasurement, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.app.js b/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.app.js index 708040055..e02f0dfe6 100644 --- a/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.app.js +++ b/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class RetailStoreOrderPaymentGroupBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -157,12 +166,14 @@ class RetailStoreOrderPaymentGroupBizApp extends React.PureComponent { buildRouters = () =>{ const {RetailStoreOrderPaymentGroupDashboard} = GlobalComponents - const {RetailStoreOrderPaymentGroupPreference} = GlobalComponents + const {RetailStoreOrderPaymentGroupPermission} = GlobalComponents + const {RetailStoreOrderPaymentGroupProfile} = GlobalComponents const routers=[ {path:"/retailStoreOrderPaymentGroup/:id/dashboard", component: RetailStoreOrderPaymentGroupDashboard}, - {path:"/retailStoreOrderPaymentGroup/:id/preference", component: RetailStoreOrderPaymentGroupPreference}, + {path:"/retailStoreOrderPaymentGroup/:id/profile", component: RetailStoreOrderPaymentGroupProfile}, + {path:"/retailStoreOrderPaymentGroup/:id/permission", component: RetailStoreOrderPaymentGroupPermission}, diff --git a/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.associateform.js b/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.associateform.js index 9c1860383..f3baf090c 100644 --- a/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.associateform.js +++ b/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.associateform.js @@ -139,7 +139,7 @@ class RetailStoreOrderPaymentGroupAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -149,7 +149,7 @@ class RetailStoreOrderPaymentGroupAssociateForm extends Component { {getFieldDecorator('cardNumber', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.associateform.less b/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.associateform.less +++ b/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.base.js b/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.base.js index ce94af637..9a36fc2f3 100644 --- a/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.base.js +++ b/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.base.js @@ -1,10 +1,33 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"生超订单付款组", menuFor: "retailStoreOrderPaymentGroup", subItems: [ @@ -12,88 +35,50 @@ const menuData = {menuName:"生超订单付款组", menuFor: "retailStoreOrderPa ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + name: '名称', + bizOrder: '订单', + cardNumber: '卡号码', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record) }, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: '订单', dataIndex: 'bizOrder', render: (text, record) => renderReferenceCell(text, record)}, - { title: '卡号码', debugtype: 'string', dataIndex: 'cardNumber', width: '21',render: (text, record)=>renderTextCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.bizOrder, dataIndex: 'bizOrder', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.cardNumber, debugtype: 'string', dataIndex: 'cardNumber', width: '21',render: (text, record)=>renderTextCell(text,record)}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({retailStoreOrderPaymentGroup,targetComponent})=>{ -const fieldLabels = { - id: '序号', - name: '名称', - bizOrder: '订单', - cardNumber: '卡号码', + + + const {RetailStoreOrderPaymentGroupService} = GlobalComponents + // const userContext = null + return ( + +{retailStoreOrderPaymentGroup.id} +{retailStoreOrderPaymentGroup.name} +{retailStoreOrderPaymentGroup.bizOrder==null?appLocaleName(userContext,"NotAssigned"):`${retailStoreOrderPaymentGroup.bizOrder.displayName}(${retailStoreOrderPaymentGroup.bizOrder.id})`} + + showTransferModel(targetComponent,"订单","retailStoreOrder",RetailStoreOrderPaymentGroupService.requestCandidateBizOrder, + RetailStoreOrderPaymentGroupService.transferToAnotherBizOrder,"anotherBizOrderId",retailStoreOrderPaymentGroup.bizOrder?retailStoreOrderPaymentGroup.bizOrder.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{retailStoreOrderPaymentGroup.cardNumber} + + {buildTransferModal(retailStoreOrderPaymentGroup,targetComponent)} + + ) } + + -const RetailStoreOrderPaymentGroupBase={menuData,displayColumns,fieldLabels} +const RetailStoreOrderPaymentGroupBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default RetailStoreOrderPaymentGroupBase diff --git a/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.createform.js b/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.createform.js index 9415c17a4..d91ce33d8 100644 --- a/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.createform.js +++ b/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.createform.js @@ -208,7 +208,7 @@ class RetailStoreOrderPaymentGroupCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -218,7 +218,7 @@ class RetailStoreOrderPaymentGroupCreateForm extends Component { {getFieldDecorator('cardNumber', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.dashboard.js b/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.dashboard.js index f15bb060b..ec958e245 100644 --- a/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.dashboard.js +++ b/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -142,6 +142,7 @@ class RetailStoreOrderPaymentGroupDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -150,13 +151,17 @@ class RetailStoreOrderPaymentGroupDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.model.js b/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.model.js index c69eaf360..b99d6482b 100644 --- a/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.model.js +++ b/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' diff --git a/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.permission.js b/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.permission.js new file mode 100644 index 000000000..761cd37d5 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.permission.js @@ -0,0 +1,85 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './RetailStoreOrderPaymentGroup.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (retailStoreOrderPaymentGroup,targetComponent) =>{ + const userContext = null + return ( + +{retailStoreOrderPaymentGroup.id} +{retailStoreOrderPaymentGroup.name} +{retailStoreOrderPaymentGroup.cardNumber} + + + ) +} + + +const renderPermissionSetting = retailStoreOrderPaymentGroup => { + const {RetailStoreOrderPaymentGroupBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class RetailStoreOrderPaymentGroupPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const retailStoreOrderPaymentGroup = this.props.retailStoreOrderPaymentGroup; + const { id,displayName, } = retailStoreOrderPaymentGroup + const cardsData = {cardsName:"生超订单付款组",cardsFor: "retailStoreOrderPaymentGroup",cardsSource: retailStoreOrderPaymentGroup, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + retailStoreOrderPaymentGroup: state._retailStoreOrderPaymentGroup, +}))(Form.create()(RetailStoreOrderPaymentGroupPermission)) + diff --git a/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.permission.less b/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.preference.js b/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.preference.js index b6a05fbec..21f5c4352 100644 --- a/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.preference.js +++ b/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.preference.js @@ -306,8 +306,12 @@ class RetailStoreOrderPaymentGroupPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, } = this.props.retailStoreOrderPaymentGroup - const cardsData = {cardsName:"生超订单付款组",cardsFor: "retailStoreOrderPaymentGroup",cardsSource: this.props.retailStoreOrderPaymentGroup, + const retailStoreOrderPaymentGroup = this.props.retailStoreOrderPaymentGroup; + const { id,displayName, } = retailStoreOrderPaymentGroup + + + + const cardsData = {cardsName:"生超订单付款组",cardsFor: "retailStoreOrderPaymentGroup",cardsSource: retailStoreOrderPaymentGroup, subItems: [ ], diff --git a/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.profile.js b/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.profile.js new file mode 100644 index 000000000..1670b30e4 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.profile.js @@ -0,0 +1,92 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './RetailStoreOrderPaymentGroup.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (retailStoreOrderPaymentGroup,targetComponent) =>{ + const userContext = null + return ( + +{retailStoreOrderPaymentGroup.id} +{retailStoreOrderPaymentGroup.name} +{retailStoreOrderPaymentGroup.cardNumber} + + + ) +} + + + +class RetailStoreOrderPaymentGroupProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const retailStoreOrderPaymentGroup = this.props.retailStoreOrderPaymentGroup; + const { id,displayName, } = retailStoreOrderPaymentGroup + + const cardsData = {cardsName:"生超订单付款组",cardsFor: "retailStoreOrderPaymentGroup",cardsSource: retailStoreOrderPaymentGroup, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + retailStoreOrderPaymentGroup: state._retailStoreOrderPaymentGroup, +}))(Form.create()(RetailStoreOrderPaymentGroupProfile)) + diff --git a/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.profile.less b/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.search.js b/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.search.js index b3ba9fc39..c44d70124 100644 --- a/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.search.js +++ b/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.searchform.js b/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.searchform.js index 0ebf13675..f22876306 100644 --- a/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.searchform.js +++ b/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`retailStoreOrderPaymentGroupList.searchField`] = fieldName - value[`retailStoreOrderPaymentGroupList.searchVerb`] = searchVerb - value[`retailStoreOrderPaymentGroupList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,12 +127,13 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'bizOrder')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'cardNumber')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'bizOrder')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'cardNumber')) console.log("the final parameter", paramList) @@ -148,11 +149,12 @@ componentDidMount() { } - params['retailStoreOrderPaymentGroupList'] = 1 - params['retailStoreOrderPaymentGroupList.orderBy.0'] = "id" - params['retailStoreOrderPaymentGroupList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -207,8 +209,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -286,8 +288,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.table.js b/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.table.js index 4444060c4..43994128b 100644 --- a/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.table.js +++ b/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.table.js @@ -40,24 +40,53 @@ class RetailStoreOrderPaymentGroupTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = RetailStoreOrderPaymentGroupBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class RetailStoreOrderPaymentGroupTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class RetailStoreOrderPaymentGroupTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.updateform.js b/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.updateform.js index 3e704892a..73a40070b 100644 --- a/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.updateform.js +++ b/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.updateform.js @@ -261,7 +261,7 @@ class RetailStoreOrderPaymentGroupUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class RetailStoreOrderPaymentGroupUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -285,7 +285,7 @@ class RetailStoreOrderPaymentGroupUpdateForm extends Component { initialValue: selectedRow.cardNumber, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.app.js b/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.app.js index 826a6e659..a4fd796d5 100644 --- a/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.app.js +++ b/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class RetailStoreOrderPickingBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class RetailStoreOrderPickingBizApp extends React.PureComponent { buildRouters = () =>{ const {RetailStoreOrderPickingDashboard} = GlobalComponents - const {RetailStoreOrderPickingPreference} = GlobalComponents + const {RetailStoreOrderPickingPermission} = GlobalComponents + const {RetailStoreOrderPickingProfile} = GlobalComponents const routers=[ {path:"/retailStoreOrderPicking/:id/dashboard", component: RetailStoreOrderPickingDashboard}, - {path:"/retailStoreOrderPicking/:id/preference", component: RetailStoreOrderPickingPreference}, + {path:"/retailStoreOrderPicking/:id/profile", component: RetailStoreOrderPickingProfile}, + {path:"/retailStoreOrderPicking/:id/permission", component: RetailStoreOrderPickingPermission}, diff --git a/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.associateform.js b/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.associateform.js index ac41f6d08..e9428dc39 100644 --- a/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.associateform.js +++ b/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { who: '处理者', - processTime: '2018-04-24', + processTime: '2018-09-01', } */ @@ -139,7 +139,7 @@ class RetailStoreOrderPickingAssociateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -149,7 +149,7 @@ class RetailStoreOrderPickingAssociateForm extends Component { {getFieldDecorator('processTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.associateform.less b/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.associateform.less +++ b/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.base.js b/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.base.js index 00965d414..ce828b815 100644 --- a/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.base.js +++ b/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.base.js @@ -1,98 +1,77 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"生超订单拣货", menuFor: "retailStoreOrderPicking", subItems: [ - {name: 'retailStoreOrderList', displayName:'生超的订单', icon:'store',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'retailStoreOrderList', displayName:'生超的订单', icon:'store',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + who: '谁', + processTime: '过程的时间', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'retailStoreOrderPicking') }, - { title: '谁', debugtype: 'string', dataIndex: 'who', width: '7',render: (text, record)=>renderTextCell(text,record) }, - { title: '过程的时间', dataIndex: 'processTime', render: (text, record) =>renderDateCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'retailStoreOrderPicking') , sorter: true }, + { title: fieldLabels.who, debugtype: 'string', dataIndex: 'who', width: '7',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.processTime, dataIndex: 'processTime', render: (text, record) =>renderDateCell(text,record), sorter: true }, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({retailStoreOrderPicking,targetComponent})=>{ -const fieldLabels = { - id: '序号', - who: '谁', - processTime: '过程的时间', + + + const {RetailStoreOrderPickingService} = GlobalComponents + // const userContext = null + return ( + +{retailStoreOrderPicking.id} +{retailStoreOrderPicking.who} +{ moment(retailStoreOrderPicking.processTime).format('YYYY-MM-DD')} + + {buildTransferModal(retailStoreOrderPicking,targetComponent)} + + ) } + + -const RetailStoreOrderPickingBase={menuData,displayColumns,fieldLabels} +const RetailStoreOrderPickingBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default RetailStoreOrderPickingBase diff --git a/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.createform.js b/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.createform.js index 67996e068..ddcaa4c95 100644 --- a/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.createform.js +++ b/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { who: '处理者', - processTime: '2016-09-12', + processTime: '2016-07-27', } */ @@ -207,7 +207,7 @@ class RetailStoreOrderPickingCreateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -217,7 +217,7 @@ class RetailStoreOrderPickingCreateForm extends Component { {getFieldDecorator('processTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.dashboard.js b/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.dashboard.js index f3c6859aa..211591f42 100644 --- a/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.dashboard.js +++ b/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -137,6 +137,7 @@ class RetailStoreOrderPickingDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -145,13 +146,17 @@ class RetailStoreOrderPickingDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.model.js b/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.model.js index e9aa474a9..0b4eb39ff 100644 --- a/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.model.js +++ b/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreOrderPicking/${id}/list/\RetailStoreOrderList/生超的订单+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreOrderPicking/${id}/list/RetailStoreOrderList/生超的订单+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateRetailStoreOrder({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreOrderPicking/${id}/list/\RetailStoreOrderList/生超的订单列表`, state: newPlayload } + const location = { pathname: `/retailStoreOrderPicking/${id}/list/RetailStoreOrderList/生超的订单列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextRetailStoreOrderUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.permission.js b/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.permission.js new file mode 100644 index 000000000..1e20f9df8 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.permission.js @@ -0,0 +1,85 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './RetailStoreOrderPicking.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (retailStoreOrderPicking,targetComponent) =>{ + const userContext = null + return ( + +{retailStoreOrderPicking.id} +{retailStoreOrderPicking.who} +{ moment(retailStoreOrderPicking.processTime).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = retailStoreOrderPicking => { + const {RetailStoreOrderPickingBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class RetailStoreOrderPickingPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const retailStoreOrderPicking = this.props.retailStoreOrderPicking; + const { id,displayName, retailStoreOrderCount } = retailStoreOrderPicking + const cardsData = {cardsName:"生超订单拣货",cardsFor: "retailStoreOrderPicking",cardsSource: retailStoreOrderPicking, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + retailStoreOrderPicking: state._retailStoreOrderPicking, +}))(Form.create()(RetailStoreOrderPickingPermission)) + diff --git a/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.permission.less b/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.preference.js b/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.preference.js index d84e5e97e..6ae6eb56c 100644 --- a/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.preference.js +++ b/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.preference.js @@ -300,8 +300,12 @@ class RetailStoreOrderPickingPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, retailStoreOrderCount } = this.props.retailStoreOrderPicking - const cardsData = {cardsName:"生超订单拣货",cardsFor: "retailStoreOrderPicking",cardsSource: this.props.retailStoreOrderPicking, + const retailStoreOrderPicking = this.props.retailStoreOrderPicking; + const { id,displayName, retailStoreOrderCount } = retailStoreOrderPicking + + + + const cardsData = {cardsName:"生超订单拣货",cardsFor: "retailStoreOrderPicking",cardsSource: retailStoreOrderPicking, subItems: [ ], diff --git a/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.profile.js b/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.profile.js new file mode 100644 index 000000000..ce583aa01 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.profile.js @@ -0,0 +1,92 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './RetailStoreOrderPicking.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (retailStoreOrderPicking,targetComponent) =>{ + const userContext = null + return ( + +{retailStoreOrderPicking.id} +{retailStoreOrderPicking.who} +{ moment(retailStoreOrderPicking.processTime).format('YYYY-MM-DD')} + + + ) +} + + + +class RetailStoreOrderPickingProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const retailStoreOrderPicking = this.props.retailStoreOrderPicking; + const { id,displayName, retailStoreOrderCount } = retailStoreOrderPicking + + const cardsData = {cardsName:"生超订单拣货",cardsFor: "retailStoreOrderPicking",cardsSource: retailStoreOrderPicking, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + retailStoreOrderPicking: state._retailStoreOrderPicking, +}))(Form.create()(RetailStoreOrderPickingProfile)) + diff --git a/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.profile.less b/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.search.js b/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.search.js index 1d136aca8..68e0bb84e 100644 --- a/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.search.js +++ b/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.searchform.js b/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.searchform.js index b421b4467..9c18d3b9c 100644 --- a/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.searchform.js +++ b/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`retailStoreOrderPickingList.searchField`] = fieldName - value[`retailStoreOrderPickingList.searchVerb`] = searchVerb - value[`retailStoreOrderPickingList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,10 +127,11 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'who')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'who')) console.log("the final parameter", paramList) @@ -146,11 +147,12 @@ componentDidMount() { } - params['retailStoreOrderPickingList'] = 1 - params['retailStoreOrderPickingList.orderBy.0'] = "id" - params['retailStoreOrderPickingList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -205,8 +207,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -261,8 +263,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.table.js b/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.table.js index a362ddf61..e651a35e7 100644 --- a/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.table.js +++ b/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.table.js @@ -40,24 +40,53 @@ class RetailStoreOrderPickingTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = RetailStoreOrderPickingBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class RetailStoreOrderPickingTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class RetailStoreOrderPickingTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.updateform.js b/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.updateform.js index fd442a2ef..4f5abfb14 100644 --- a/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.updateform.js +++ b/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.updateform.js @@ -262,7 +262,7 @@ class RetailStoreOrderPickingUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class RetailStoreOrderPickingUpdateForm extends Component { initialValue: selectedRow.who, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class RetailStoreOrderPickingUpdateForm extends Component { initialValue: selectedRow.processTime, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.app.js b/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.app.js index 2753c3320..32d789019 100644 --- a/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.app.js +++ b/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class RetailStoreOrderProcessingBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class RetailStoreOrderProcessingBizApp extends React.PureComponent { buildRouters = () =>{ const {RetailStoreOrderProcessingDashboard} = GlobalComponents - const {RetailStoreOrderProcessingPreference} = GlobalComponents + const {RetailStoreOrderProcessingPermission} = GlobalComponents + const {RetailStoreOrderProcessingProfile} = GlobalComponents const routers=[ {path:"/retailStoreOrderProcessing/:id/dashboard", component: RetailStoreOrderProcessingDashboard}, - {path:"/retailStoreOrderProcessing/:id/preference", component: RetailStoreOrderProcessingPreference}, + {path:"/retailStoreOrderProcessing/:id/profile", component: RetailStoreOrderProcessingProfile}, + {path:"/retailStoreOrderProcessing/:id/permission", component: RetailStoreOrderProcessingPermission}, diff --git a/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.associateform.js b/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.associateform.js index 20c0c04d2..d119784b6 100644 --- a/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.associateform.js +++ b/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { who: '处理者', - processTime: '2018-04-26', + processTime: '2018-08-28', } */ @@ -139,7 +139,7 @@ class RetailStoreOrderProcessingAssociateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -149,7 +149,7 @@ class RetailStoreOrderProcessingAssociateForm extends Component { {getFieldDecorator('processTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.associateform.less b/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.associateform.less +++ b/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.base.js b/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.base.js index b0337d66b..a862cbd2b 100644 --- a/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.base.js +++ b/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.base.js @@ -1,98 +1,77 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"生超订单处理", menuFor: "retailStoreOrderProcessing", subItems: [ - {name: 'retailStoreOrderList', displayName:'生超的订单', icon:'store',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'retailStoreOrderList', displayName:'生超的订单', icon:'store',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + who: '谁', + processTime: '过程的时间', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'retailStoreOrderProcessing') }, - { title: '谁', debugtype: 'string', dataIndex: 'who', width: '7',render: (text, record)=>renderTextCell(text,record) }, - { title: '过程的时间', dataIndex: 'processTime', render: (text, record) =>renderDateCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'retailStoreOrderProcessing') , sorter: true }, + { title: fieldLabels.who, debugtype: 'string', dataIndex: 'who', width: '7',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.processTime, dataIndex: 'processTime', render: (text, record) =>renderDateCell(text,record), sorter: true }, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({retailStoreOrderProcessing,targetComponent})=>{ -const fieldLabels = { - id: '序号', - who: '谁', - processTime: '过程的时间', + + + const {RetailStoreOrderProcessingService} = GlobalComponents + // const userContext = null + return ( + +{retailStoreOrderProcessing.id} +{retailStoreOrderProcessing.who} +{ moment(retailStoreOrderProcessing.processTime).format('YYYY-MM-DD')} + + {buildTransferModal(retailStoreOrderProcessing,targetComponent)} + + ) } + + -const RetailStoreOrderProcessingBase={menuData,displayColumns,fieldLabels} +const RetailStoreOrderProcessingBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default RetailStoreOrderProcessingBase diff --git a/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.createform.js b/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.createform.js index 198899701..af3298cbb 100644 --- a/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.createform.js +++ b/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { who: '处理者', - processTime: '2017-03-19', + processTime: '2018-03-26', } */ @@ -207,7 +207,7 @@ class RetailStoreOrderProcessingCreateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -217,7 +217,7 @@ class RetailStoreOrderProcessingCreateForm extends Component { {getFieldDecorator('processTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.dashboard.js b/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.dashboard.js index b8046dd9e..d5a7afd83 100644 --- a/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.dashboard.js +++ b/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -137,6 +137,7 @@ class RetailStoreOrderProcessingDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -145,13 +146,17 @@ class RetailStoreOrderProcessingDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.model.js b/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.model.js index 6d313c79e..332bbec47 100644 --- a/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.model.js +++ b/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreOrderProcessing/${id}/list/\RetailStoreOrderList/生超的订单+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreOrderProcessing/${id}/list/RetailStoreOrderList/生超的订单+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateRetailStoreOrder({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreOrderProcessing/${id}/list/\RetailStoreOrderList/生超的订单列表`, state: newPlayload } + const location = { pathname: `/retailStoreOrderProcessing/${id}/list/RetailStoreOrderList/生超的订单列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextRetailStoreOrderUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.permission.js b/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.permission.js new file mode 100644 index 000000000..9c89344f3 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.permission.js @@ -0,0 +1,85 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './RetailStoreOrderProcessing.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (retailStoreOrderProcessing,targetComponent) =>{ + const userContext = null + return ( + +{retailStoreOrderProcessing.id} +{retailStoreOrderProcessing.who} +{ moment(retailStoreOrderProcessing.processTime).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = retailStoreOrderProcessing => { + const {RetailStoreOrderProcessingBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class RetailStoreOrderProcessingPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const retailStoreOrderProcessing = this.props.retailStoreOrderProcessing; + const { id,displayName, retailStoreOrderCount } = retailStoreOrderProcessing + const cardsData = {cardsName:"生超订单处理",cardsFor: "retailStoreOrderProcessing",cardsSource: retailStoreOrderProcessing, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + retailStoreOrderProcessing: state._retailStoreOrderProcessing, +}))(Form.create()(RetailStoreOrderProcessingPermission)) + diff --git a/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.permission.less b/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.preference.js b/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.preference.js index 8534ca59d..882aa0173 100644 --- a/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.preference.js +++ b/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.preference.js @@ -300,8 +300,12 @@ class RetailStoreOrderProcessingPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, retailStoreOrderCount } = this.props.retailStoreOrderProcessing - const cardsData = {cardsName:"生超订单处理",cardsFor: "retailStoreOrderProcessing",cardsSource: this.props.retailStoreOrderProcessing, + const retailStoreOrderProcessing = this.props.retailStoreOrderProcessing; + const { id,displayName, retailStoreOrderCount } = retailStoreOrderProcessing + + + + const cardsData = {cardsName:"生超订单处理",cardsFor: "retailStoreOrderProcessing",cardsSource: retailStoreOrderProcessing, subItems: [ ], diff --git a/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.profile.js b/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.profile.js new file mode 100644 index 000000000..b165eed79 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.profile.js @@ -0,0 +1,92 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './RetailStoreOrderProcessing.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (retailStoreOrderProcessing,targetComponent) =>{ + const userContext = null + return ( + +{retailStoreOrderProcessing.id} +{retailStoreOrderProcessing.who} +{ moment(retailStoreOrderProcessing.processTime).format('YYYY-MM-DD')} + + + ) +} + + + +class RetailStoreOrderProcessingProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const retailStoreOrderProcessing = this.props.retailStoreOrderProcessing; + const { id,displayName, retailStoreOrderCount } = retailStoreOrderProcessing + + const cardsData = {cardsName:"生超订单处理",cardsFor: "retailStoreOrderProcessing",cardsSource: retailStoreOrderProcessing, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + retailStoreOrderProcessing: state._retailStoreOrderProcessing, +}))(Form.create()(RetailStoreOrderProcessingProfile)) + diff --git a/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.profile.less b/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.search.js b/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.search.js index 315d84322..fa4612ddb 100644 --- a/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.search.js +++ b/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.searchform.js b/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.searchform.js index 4d68f3648..2f66dcb09 100644 --- a/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.searchform.js +++ b/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`retailStoreOrderProcessingList.searchField`] = fieldName - value[`retailStoreOrderProcessingList.searchVerb`] = searchVerb - value[`retailStoreOrderProcessingList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,10 +127,11 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'who')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'who')) console.log("the final parameter", paramList) @@ -146,11 +147,12 @@ componentDidMount() { } - params['retailStoreOrderProcessingList'] = 1 - params['retailStoreOrderProcessingList.orderBy.0'] = "id" - params['retailStoreOrderProcessingList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -205,8 +207,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -261,8 +263,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.table.js b/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.table.js index a16ae5add..e58f3f3b8 100644 --- a/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.table.js +++ b/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.table.js @@ -40,24 +40,53 @@ class RetailStoreOrderProcessingTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = RetailStoreOrderProcessingBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class RetailStoreOrderProcessingTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class RetailStoreOrderProcessingTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.updateform.js b/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.updateform.js index 90f2c4588..33a0e0230 100644 --- a/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.updateform.js +++ b/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.updateform.js @@ -262,7 +262,7 @@ class RetailStoreOrderProcessingUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class RetailStoreOrderProcessingUpdateForm extends Component { initialValue: selectedRow.who, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class RetailStoreOrderProcessingUpdateForm extends Component { initialValue: selectedRow.processTime, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.app.js b/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.app.js index 069c5a666..72cfcbcbc 100644 --- a/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.app.js +++ b/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class RetailStoreOrderShipmentBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class RetailStoreOrderShipmentBizApp extends React.PureComponent { buildRouters = () =>{ const {RetailStoreOrderShipmentDashboard} = GlobalComponents - const {RetailStoreOrderShipmentPreference} = GlobalComponents + const {RetailStoreOrderShipmentPermission} = GlobalComponents + const {RetailStoreOrderShipmentProfile} = GlobalComponents const routers=[ {path:"/retailStoreOrderShipment/:id/dashboard", component: RetailStoreOrderShipmentDashboard}, - {path:"/retailStoreOrderShipment/:id/preference", component: RetailStoreOrderShipmentPreference}, + {path:"/retailStoreOrderShipment/:id/profile", component: RetailStoreOrderShipmentProfile}, + {path:"/retailStoreOrderShipment/:id/permission", component: RetailStoreOrderShipmentPermission}, diff --git a/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.associateform.js b/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.associateform.js index a9673e72d..879c127df 100644 --- a/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.associateform.js +++ b/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { who: '运货者', - shipTime: '2019-03-10', + shipTime: '2018-11-12', } */ @@ -139,7 +139,7 @@ class RetailStoreOrderShipmentAssociateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -149,7 +149,7 @@ class RetailStoreOrderShipmentAssociateForm extends Component { {getFieldDecorator('shipTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.associateform.less b/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.associateform.less +++ b/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.base.js b/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.base.js index 42fe89e00..f36f71943 100644 --- a/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.base.js +++ b/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.base.js @@ -1,98 +1,77 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"生超订单出货", menuFor: "retailStoreOrderShipment", subItems: [ - {name: 'retailStoreOrderList', displayName:'生超的订单', icon:'store',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'retailStoreOrderList', displayName:'生超的订单', icon:'store',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + who: '谁', + shipTime: '船的时间', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'retailStoreOrderShipment') }, - { title: '谁', debugtype: 'string', dataIndex: 'who', width: '7',render: (text, record)=>renderTextCell(text,record) }, - { title: '船的时间', dataIndex: 'shipTime', render: (text, record) =>renderDateCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'retailStoreOrderShipment') , sorter: true }, + { title: fieldLabels.who, debugtype: 'string', dataIndex: 'who', width: '7',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.shipTime, dataIndex: 'shipTime', render: (text, record) =>renderDateCell(text,record), sorter: true }, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({retailStoreOrderShipment,targetComponent})=>{ -const fieldLabels = { - id: '序号', - who: '谁', - shipTime: '船的时间', + + + const {RetailStoreOrderShipmentService} = GlobalComponents + // const userContext = null + return ( + +{retailStoreOrderShipment.id} +{retailStoreOrderShipment.who} +{ moment(retailStoreOrderShipment.shipTime).format('YYYY-MM-DD')} + + {buildTransferModal(retailStoreOrderShipment,targetComponent)} + + ) } + + -const RetailStoreOrderShipmentBase={menuData,displayColumns,fieldLabels} +const RetailStoreOrderShipmentBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default RetailStoreOrderShipmentBase diff --git a/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.createform.js b/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.createform.js index 64ad13d5f..d58728c84 100644 --- a/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.createform.js +++ b/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { who: '运货者', - shipTime: '2018-03-06', + shipTime: '2016-12-23', } */ @@ -207,7 +207,7 @@ class RetailStoreOrderShipmentCreateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -217,7 +217,7 @@ class RetailStoreOrderShipmentCreateForm extends Component { {getFieldDecorator('shipTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.dashboard.js b/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.dashboard.js index 09523a4b0..d03eea1bb 100644 --- a/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.dashboard.js +++ b/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -137,6 +137,7 @@ class RetailStoreOrderShipmentDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -145,13 +146,17 @@ class RetailStoreOrderShipmentDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.model.js b/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.model.js index cffb4f254..196df3950 100644 --- a/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.model.js +++ b/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreOrderShipment/${id}/list/\RetailStoreOrderList/生超的订单+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreOrderShipment/${id}/list/RetailStoreOrderList/生超的订单+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateRetailStoreOrder({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreOrderShipment/${id}/list/\RetailStoreOrderList/生超的订单列表`, state: newPlayload } + const location = { pathname: `/retailStoreOrderShipment/${id}/list/RetailStoreOrderList/生超的订单列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextRetailStoreOrderUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.permission.js b/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.permission.js new file mode 100644 index 000000000..0d50477b9 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.permission.js @@ -0,0 +1,85 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './RetailStoreOrderShipment.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (retailStoreOrderShipment,targetComponent) =>{ + const userContext = null + return ( + +{retailStoreOrderShipment.id} +{retailStoreOrderShipment.who} +{ moment(retailStoreOrderShipment.shipTime).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = retailStoreOrderShipment => { + const {RetailStoreOrderShipmentBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class RetailStoreOrderShipmentPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const retailStoreOrderShipment = this.props.retailStoreOrderShipment; + const { id,displayName, retailStoreOrderCount } = retailStoreOrderShipment + const cardsData = {cardsName:"生超订单出货",cardsFor: "retailStoreOrderShipment",cardsSource: retailStoreOrderShipment, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + retailStoreOrderShipment: state._retailStoreOrderShipment, +}))(Form.create()(RetailStoreOrderShipmentPermission)) + diff --git a/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.permission.less b/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.preference.js b/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.preference.js index 80fe69b71..f25b7842a 100644 --- a/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.preference.js +++ b/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.preference.js @@ -300,8 +300,12 @@ class RetailStoreOrderShipmentPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, retailStoreOrderCount } = this.props.retailStoreOrderShipment - const cardsData = {cardsName:"生超订单出货",cardsFor: "retailStoreOrderShipment",cardsSource: this.props.retailStoreOrderShipment, + const retailStoreOrderShipment = this.props.retailStoreOrderShipment; + const { id,displayName, retailStoreOrderCount } = retailStoreOrderShipment + + + + const cardsData = {cardsName:"生超订单出货",cardsFor: "retailStoreOrderShipment",cardsSource: retailStoreOrderShipment, subItems: [ ], diff --git a/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.profile.js b/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.profile.js new file mode 100644 index 000000000..5e2647a0f --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.profile.js @@ -0,0 +1,92 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './RetailStoreOrderShipment.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (retailStoreOrderShipment,targetComponent) =>{ + const userContext = null + return ( + +{retailStoreOrderShipment.id} +{retailStoreOrderShipment.who} +{ moment(retailStoreOrderShipment.shipTime).format('YYYY-MM-DD')} + + + ) +} + + + +class RetailStoreOrderShipmentProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const retailStoreOrderShipment = this.props.retailStoreOrderShipment; + const { id,displayName, retailStoreOrderCount } = retailStoreOrderShipment + + const cardsData = {cardsName:"生超订单出货",cardsFor: "retailStoreOrderShipment",cardsSource: retailStoreOrderShipment, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + retailStoreOrderShipment: state._retailStoreOrderShipment, +}))(Form.create()(RetailStoreOrderShipmentProfile)) + diff --git a/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.profile.less b/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.search.js b/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.search.js index 1c60277b3..e49c4e7ee 100644 --- a/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.search.js +++ b/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.searchform.js b/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.searchform.js index 65eeee4d0..310dfdce3 100644 --- a/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.searchform.js +++ b/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`retailStoreOrderShipmentList.searchField`] = fieldName - value[`retailStoreOrderShipmentList.searchVerb`] = searchVerb - value[`retailStoreOrderShipmentList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,10 +127,11 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'who')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'who')) console.log("the final parameter", paramList) @@ -146,11 +147,12 @@ componentDidMount() { } - params['retailStoreOrderShipmentList'] = 1 - params['retailStoreOrderShipmentList.orderBy.0'] = "id" - params['retailStoreOrderShipmentList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -205,8 +207,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -261,8 +263,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.table.js b/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.table.js index c99798089..a656acdbf 100644 --- a/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.table.js +++ b/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.table.js @@ -40,24 +40,53 @@ class RetailStoreOrderShipmentTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = RetailStoreOrderShipmentBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class RetailStoreOrderShipmentTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class RetailStoreOrderShipmentTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.updateform.js b/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.updateform.js index 9bbfbd0fd..75090f7cb 100644 --- a/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.updateform.js +++ b/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.updateform.js @@ -262,7 +262,7 @@ class RetailStoreOrderShipmentUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class RetailStoreOrderShipmentUpdateForm extends Component { initialValue: selectedRow.who, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class RetailStoreOrderShipmentUpdateForm extends Component { initialValue: selectedRow.shipTime, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.app.js b/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.app.js index 4436fc9e9..6548e76b1 100644 --- a/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.app.js +++ b/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class RetailStoreOrderShippingGroupBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -157,12 +166,14 @@ class RetailStoreOrderShippingGroupBizApp extends React.PureComponent { buildRouters = () =>{ const {RetailStoreOrderShippingGroupDashboard} = GlobalComponents - const {RetailStoreOrderShippingGroupPreference} = GlobalComponents + const {RetailStoreOrderShippingGroupPermission} = GlobalComponents + const {RetailStoreOrderShippingGroupProfile} = GlobalComponents const routers=[ {path:"/retailStoreOrderShippingGroup/:id/dashboard", component: RetailStoreOrderShippingGroupDashboard}, - {path:"/retailStoreOrderShippingGroup/:id/preference", component: RetailStoreOrderShippingGroupPreference}, + {path:"/retailStoreOrderShippingGroup/:id/profile", component: RetailStoreOrderShippingGroupProfile}, + {path:"/retailStoreOrderShippingGroup/:id/permission", component: RetailStoreOrderShippingGroupPermission}, diff --git a/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.associateform.js b/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.associateform.js index 80d063439..41a5e3d76 100644 --- a/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.associateform.js +++ b/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { name: '送货到双链中和社区店', - amount: '5.90', + amount: '4.42', bizOrderId: 'RSO000001', } */ @@ -139,7 +139,7 @@ class RetailStoreOrderShippingGroupAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -149,7 +149,7 @@ class RetailStoreOrderShippingGroupAssociateForm extends Component { {getFieldDecorator('amount', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.associateform.less b/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.associateform.less +++ b/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.base.js b/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.base.js index fe0e7e83f..de7b89b47 100644 --- a/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.base.js +++ b/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.base.js @@ -1,10 +1,33 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"生超订单送货分组", menuFor: "retailStoreOrderShippingGroup", subItems: [ @@ -12,88 +35,50 @@ const menuData = {menuName:"生超订单送货分组", menuFor: "retailStoreOrde ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + name: '名称', + bizOrder: '订单', + amount: '金额', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record) }, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '14',render: (text, record)=>renderTextCell(text,record) }, - { title: '订单', dataIndex: 'bizOrder', render: (text, record) => renderReferenceCell(text, record)}, - { title: '金额', dataIndex: 'amount', className:'money', render: (text, record) => renderMoneyCell(text, record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '14',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.bizOrder, dataIndex: 'bizOrder', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.amount, dataIndex: 'amount', className:'money', render: (text, record) => renderMoneyCell(text, record), sorter: true }, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({retailStoreOrderShippingGroup,targetComponent})=>{ -const fieldLabels = { - id: '序号', - name: '名称', - bizOrder: '订单', - amount: '金额', + + + const {RetailStoreOrderShippingGroupService} = GlobalComponents + // const userContext = null + return ( + +{retailStoreOrderShippingGroup.id} +{retailStoreOrderShippingGroup.name} +{retailStoreOrderShippingGroup.bizOrder==null?appLocaleName(userContext,"NotAssigned"):`${retailStoreOrderShippingGroup.bizOrder.displayName}(${retailStoreOrderShippingGroup.bizOrder.id})`} + + showTransferModel(targetComponent,"订单","retailStoreOrder",RetailStoreOrderShippingGroupService.requestCandidateBizOrder, + RetailStoreOrderShippingGroupService.transferToAnotherBizOrder,"anotherBizOrderId",retailStoreOrderShippingGroup.bizOrder?retailStoreOrderShippingGroup.bizOrder.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{retailStoreOrderShippingGroup.amount} + + {buildTransferModal(retailStoreOrderShippingGroup,targetComponent)} + + ) } + + -const RetailStoreOrderShippingGroupBase={menuData,displayColumns,fieldLabels} +const RetailStoreOrderShippingGroupBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default RetailStoreOrderShippingGroupBase diff --git a/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.createform.js b/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.createform.js index bbf742a5e..a7fb9384e 100644 --- a/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.createform.js +++ b/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { name: '送货到双链中和社区店', - amount: '5.34', + amount: '5.84', bizOrderId: 'RSO000001', } */ @@ -208,7 +208,7 @@ class RetailStoreOrderShippingGroupCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -218,7 +218,7 @@ class RetailStoreOrderShippingGroupCreateForm extends Component { {getFieldDecorator('amount', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.dashboard.js b/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.dashboard.js index f5315b214..d01dbe827 100644 --- a/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.dashboard.js +++ b/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -142,6 +142,7 @@ class RetailStoreOrderShippingGroupDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -150,13 +151,17 @@ class RetailStoreOrderShippingGroupDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.model.js b/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.model.js index 1da34c6f7..d759f7f41 100644 --- a/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.model.js +++ b/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' diff --git a/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.permission.js b/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.permission.js new file mode 100644 index 000000000..b80fa854b --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.permission.js @@ -0,0 +1,85 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './RetailStoreOrderShippingGroup.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (retailStoreOrderShippingGroup,targetComponent) =>{ + const userContext = null + return ( + +{retailStoreOrderShippingGroup.id} +{retailStoreOrderShippingGroup.name} +{retailStoreOrderShippingGroup.amount} + + + ) +} + + +const renderPermissionSetting = retailStoreOrderShippingGroup => { + const {RetailStoreOrderShippingGroupBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class RetailStoreOrderShippingGroupPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const retailStoreOrderShippingGroup = this.props.retailStoreOrderShippingGroup; + const { id,displayName, } = retailStoreOrderShippingGroup + const cardsData = {cardsName:"生超订单送货分组",cardsFor: "retailStoreOrderShippingGroup",cardsSource: retailStoreOrderShippingGroup, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + retailStoreOrderShippingGroup: state._retailStoreOrderShippingGroup, +}))(Form.create()(RetailStoreOrderShippingGroupPermission)) + diff --git a/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.permission.less b/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.preference.js b/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.preference.js index 2fe07ecf1..9edc3b2e0 100644 --- a/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.preference.js +++ b/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.preference.js @@ -306,8 +306,12 @@ class RetailStoreOrderShippingGroupPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, } = this.props.retailStoreOrderShippingGroup - const cardsData = {cardsName:"生超订单送货分组",cardsFor: "retailStoreOrderShippingGroup",cardsSource: this.props.retailStoreOrderShippingGroup, + const retailStoreOrderShippingGroup = this.props.retailStoreOrderShippingGroup; + const { id,displayName, } = retailStoreOrderShippingGroup + + + + const cardsData = {cardsName:"生超订单送货分组",cardsFor: "retailStoreOrderShippingGroup",cardsSource: retailStoreOrderShippingGroup, subItems: [ ], diff --git a/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.profile.js b/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.profile.js new file mode 100644 index 000000000..59065d58f --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.profile.js @@ -0,0 +1,92 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './RetailStoreOrderShippingGroup.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (retailStoreOrderShippingGroup,targetComponent) =>{ + const userContext = null + return ( + +{retailStoreOrderShippingGroup.id} +{retailStoreOrderShippingGroup.name} +{retailStoreOrderShippingGroup.amount} + + + ) +} + + + +class RetailStoreOrderShippingGroupProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const retailStoreOrderShippingGroup = this.props.retailStoreOrderShippingGroup; + const { id,displayName, } = retailStoreOrderShippingGroup + + const cardsData = {cardsName:"生超订单送货分组",cardsFor: "retailStoreOrderShippingGroup",cardsSource: retailStoreOrderShippingGroup, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + retailStoreOrderShippingGroup: state._retailStoreOrderShippingGroup, +}))(Form.create()(RetailStoreOrderShippingGroupProfile)) + diff --git a/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.profile.less b/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.search.js b/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.search.js index 511931deb..2b311e956 100644 --- a/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.search.js +++ b/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.searchform.js b/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.searchform.js index 446d82058..45606503f 100644 --- a/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.searchform.js +++ b/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`retailStoreOrderShippingGroupList.searchField`] = fieldName - value[`retailStoreOrderShippingGroupList.searchVerb`] = searchVerb - value[`retailStoreOrderShippingGroupList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,11 +127,12 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'bizOrder')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'bizOrder')) console.log("the final parameter", paramList) @@ -147,11 +148,12 @@ componentDidMount() { } - params['retailStoreOrderShippingGroupList'] = 1 - params['retailStoreOrderShippingGroupList.orderBy.0'] = "id" - params['retailStoreOrderShippingGroupList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -206,8 +208,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -277,8 +279,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.table.js b/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.table.js index 8cf13cb1e..20264fec9 100644 --- a/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.table.js +++ b/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.table.js @@ -40,24 +40,53 @@ class RetailStoreOrderShippingGroupTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = RetailStoreOrderShippingGroupBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class RetailStoreOrderShippingGroupTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class RetailStoreOrderShippingGroupTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.updateform.js b/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.updateform.js index 2b05d8395..8c4d6c8b8 100644 --- a/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.updateform.js +++ b/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.updateform.js @@ -261,7 +261,7 @@ class RetailStoreOrderShippingGroupUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class RetailStoreOrderShippingGroupUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -285,7 +285,7 @@ class RetailStoreOrderShippingGroupUpdateForm extends Component { initialValue: selectedRow.amount, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.app.js b/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.app.js index 04252edee..4e091f23e 100644 --- a/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.app.js +++ b/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class RetailStoreProvinceCenterBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -304,12 +313,14 @@ class RetailStoreProvinceCenterBizApp extends React.PureComponent { buildRouters = () =>{ const {RetailStoreProvinceCenterDashboard} = GlobalComponents - const {RetailStoreProvinceCenterPreference} = GlobalComponents + const {RetailStoreProvinceCenterPermission} = GlobalComponents + const {RetailStoreProvinceCenterProfile} = GlobalComponents const routers=[ {path:"/retailStoreProvinceCenter/:id/dashboard", component: RetailStoreProvinceCenterDashboard}, - {path:"/retailStoreProvinceCenter/:id/preference", component: RetailStoreProvinceCenterPreference}, + {path:"/retailStoreProvinceCenter/:id/profile", component: RetailStoreProvinceCenterProfile}, + {path:"/retailStoreProvinceCenter/:id/permission", component: RetailStoreProvinceCenterPermission}, diff --git a/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.associateform.js b/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.associateform.js index f3b97eaa2..2c8f057bf 100644 --- a/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.associateform.js +++ b/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { name: '双链小超四川省运营中心', - founded: '2018-04-30', + founded: '2016-12-26', countryId: 'RSCC000001', } */ @@ -142,7 +142,7 @@ class RetailStoreProvinceCenterAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -152,7 +152,7 @@ class RetailStoreProvinceCenterAssociateForm extends Component { {getFieldDecorator('founded', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.associateform.less b/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.associateform.less +++ b/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.base.js b/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.base.js index 487d0dc9d..db01a0027 100644 --- a/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.base.js +++ b/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.base.js @@ -1,103 +1,83 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"双链小超省中心", menuFor: "retailStoreProvinceCenter", subItems: [ - {name: 'provinceCenterEmployeeList', displayName:'省中心员工', icon:'align-center',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'retailStoreCityServiceCenterList', displayName:'双链小超城市服务中心', icon:'city',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'provinceCenterEmployeeList', displayName:'省中心员工', icon:'align-center',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'retailStoreCityServiceCenterList', displayName:'双链小超城市服务中心', icon:'city',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + name: '名称', + founded: '成立', + country: '国', + lastUpdateTime: '最后更新时间', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'retailStoreProvinceCenter') }, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '15',render: (text, record)=>renderTextCell(text,record) }, - { title: '成立', dataIndex: 'founded', render: (text, record) =>renderDateCell(text,record) }, - { title: '国', dataIndex: 'country', render: (text, record) => renderReferenceCell(text, record)}, - { title: '最后更新时间', dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'retailStoreProvinceCenter') , sorter: true }, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '15',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.founded, dataIndex: 'founded', render: (text, record) =>renderDateCell(text,record), sorter: true }, + { title: fieldLabels.country, dataIndex: 'country', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.lastUpdateTime, dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record), sorter: true}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({retailStoreProvinceCenter,targetComponent})=>{ -const fieldLabels = { - id: '序号', - name: '名称', - founded: '成立', - country: '国', - lastUpdateTime: '最后更新时间', + + + const {RetailStoreProvinceCenterService} = GlobalComponents + // const userContext = null + return ( + +{retailStoreProvinceCenter.id} +{retailStoreProvinceCenter.name} +{ moment(retailStoreProvinceCenter.founded).format('YYYY-MM-DD')} +{ moment(retailStoreProvinceCenter.lastUpdateTime).format('YYYY-MM-DD')} + + {buildTransferModal(retailStoreProvinceCenter,targetComponent)} + + ) } + + -const RetailStoreProvinceCenterBase={menuData,displayColumns,fieldLabels} +const RetailStoreProvinceCenterBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default RetailStoreProvinceCenterBase diff --git a/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.createform.js b/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.createform.js index 837a8569d..4ec46ee44 100644 --- a/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.createform.js +++ b/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { name: '双链小超四川省运营中心', - founded: '2016-10-03', + founded: '2017-02-02', countryId: 'RSCC000001', } */ @@ -208,7 +208,7 @@ class RetailStoreProvinceCenterCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -218,7 +218,7 @@ class RetailStoreProvinceCenterCreateForm extends Component { {getFieldDecorator('founded', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.dashboard.js b/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.dashboard.js index 8c62419d5..58a2fb17c 100644 --- a/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.dashboard.js +++ b/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -139,6 +139,7 @@ class RetailStoreProvinceCenterDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -147,13 +148,17 @@ class RetailStoreProvinceCenterDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.model.js b/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.model.js index 6d7e74454..fe23301dd 100644 --- a/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.model.js +++ b/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreProvinceCenter/${id}/list/\ProvinceCenterDepartmentList/省中心+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreProvinceCenter/${id}/list/ProvinceCenterDepartmentList/省中心+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateProvinceCenterDepartment({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreProvinceCenter/${id}/list/\ProvinceCenterDepartmentList/省中心列表`, state: newPlayload } + const location = { pathname: `/retailStoreProvinceCenter/${id}/list/ProvinceCenterDepartmentList/省中心列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextProvinceCenterDepartmentUpdateRow({ payload }, { call, put }) { @@ -206,7 +206,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreProvinceCenter/${id}/list/\ProvinceCenterEmployeeList/省中心员工+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreProvinceCenter/${id}/list/ProvinceCenterEmployeeList/省中心员工+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateProvinceCenterEmployee({ payload }, { call, put }) { @@ -228,7 +228,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreProvinceCenter/${id}/list/\ProvinceCenterEmployeeList/省中心员工列表`, state: newPlayload } + const location = { pathname: `/retailStoreProvinceCenter/${id}/list/ProvinceCenterEmployeeList/省中心员工列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextProvinceCenterEmployeeUpdateRow({ payload }, { call, put }) { @@ -275,7 +275,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/retailStoreProvinceCenter/${id}/list/\RetailStoreCityServiceCenterList/双链小超城市服务中心+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/retailStoreProvinceCenter/${id}/list/RetailStoreCityServiceCenterList/双链小超城市服务中心+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateRetailStoreCityServiceCenter({ payload }, { call, put }) { @@ -297,7 +297,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/retailStoreProvinceCenter/${id}/list/\RetailStoreCityServiceCenterList/双链小超城市服务中心列表`, state: newPlayload } + const location = { pathname: `/retailStoreProvinceCenter/${id}/list/RetailStoreCityServiceCenterList/双链小超城市服务中心列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextRetailStoreCityServiceCenterUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.permission.js b/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.permission.js new file mode 100644 index 000000000..e36d00481 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.permission.js @@ -0,0 +1,87 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './RetailStoreProvinceCenter.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (retailStoreProvinceCenter,targetComponent) =>{ + const userContext = null + return ( + +{retailStoreProvinceCenter.id} +{retailStoreProvinceCenter.name} +{ moment(retailStoreProvinceCenter.founded).format('YYYY-MM-DD')} +{ moment(retailStoreProvinceCenter.lastUpdateTime).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = retailStoreProvinceCenter => { + const {RetailStoreProvinceCenterBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class RetailStoreProvinceCenterPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const retailStoreProvinceCenter = this.props.retailStoreProvinceCenter; + const { id,displayName, provinceCenterDepartmentCount, provinceCenterEmployeeCount, retailStoreCityServiceCenterCount } = retailStoreProvinceCenter + const cardsData = {cardsName:"双链小超省中心",cardsFor: "retailStoreProvinceCenter",cardsSource: retailStoreProvinceCenter, + subItems: [ +{name: 'provinceCenterDepartmentList', displayName:'省中心',type:'provinceCenterDepartment',count:provinceCenterDepartmentCount,addFunction: true, role: 'provinceCenterDepartment', data: retailStoreProvinceCenter.provinceCenterDepartmentList}, + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + retailStoreProvinceCenter: state._retailStoreProvinceCenter, +}))(Form.create()(RetailStoreProvinceCenterPermission)) + diff --git a/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.permission.less b/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.preference.js b/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.preference.js index b8aac126a..65b292529 100644 --- a/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.preference.js +++ b/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.preference.js @@ -301,10 +301,14 @@ class RetailStoreProvinceCenterPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, provinceCenterDepartmentCount, provinceCenterEmployeeCount, retailStoreCityServiceCenterCount } = this.props.retailStoreProvinceCenter - const cardsData = {cardsName:"双链小超省中心",cardsFor: "retailStoreProvinceCenter",cardsSource: this.props.retailStoreProvinceCenter, + const retailStoreProvinceCenter = this.props.retailStoreProvinceCenter; + const { id,displayName, provinceCenterDepartmentCount, provinceCenterEmployeeCount, retailStoreCityServiceCenterCount } = retailStoreProvinceCenter + + + + const cardsData = {cardsName:"双链小超省中心",cardsFor: "retailStoreProvinceCenter",cardsSource: retailStoreProvinceCenter, subItems: [ -{name: 'provinceCenterDepartmentList', displayName:'省中心',type:'provinceCenterDepartment',count:provinceCenterDepartmentCount,addFunction: true, role: 'provinceCenterDepartment'}, +{name: 'provinceCenterDepartmentList', displayName:'省中心',type:'provinceCenterDepartment',count:provinceCenterDepartmentCount,addFunction: true, role: 'provinceCenterDepartment', data: retailStoreProvinceCenter.provinceCenterDepartmentList}, ], }; diff --git a/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.profile.js b/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.profile.js new file mode 100644 index 000000000..4a1b37cf4 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.profile.js @@ -0,0 +1,94 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './RetailStoreProvinceCenter.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (retailStoreProvinceCenter,targetComponent) =>{ + const userContext = null + return ( + +{retailStoreProvinceCenter.id} +{retailStoreProvinceCenter.name} +{ moment(retailStoreProvinceCenter.founded).format('YYYY-MM-DD')} +{ moment(retailStoreProvinceCenter.lastUpdateTime).format('YYYY-MM-DD')} + + + ) +} + + + +class RetailStoreProvinceCenterProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const retailStoreProvinceCenter = this.props.retailStoreProvinceCenter; + const { id,displayName, provinceCenterDepartmentCount, provinceCenterEmployeeCount, retailStoreCityServiceCenterCount } = retailStoreProvinceCenter + + const cardsData = {cardsName:"双链小超省中心",cardsFor: "retailStoreProvinceCenter",cardsSource: retailStoreProvinceCenter, + subItems: [ +{name: 'provinceCenterDepartmentList', displayName:'省中心',type:'provinceCenterDepartment',count:provinceCenterDepartmentCount,addFunction: true, role: 'provinceCenterDepartment', data: retailStoreProvinceCenter.provinceCenterDepartmentList}, + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + retailStoreProvinceCenter: state._retailStoreProvinceCenter, +}))(Form.create()(RetailStoreProvinceCenterProfile)) + diff --git a/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.profile.less b/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.search.js b/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.search.js index ca86b1935..f8e2d75a3 100644 --- a/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.search.js +++ b/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.searchform.js b/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.searchform.js index 5d84a51b1..104e9304c 100644 --- a/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.searchform.js +++ b/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`retailStoreProvinceCenterList.searchField`] = fieldName - value[`retailStoreProvinceCenterList.searchVerb`] = searchVerb - value[`retailStoreProvinceCenterList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,11 +127,12 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'country')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'country')) console.log("the final parameter", paramList) @@ -147,11 +148,12 @@ componentDidMount() { } - params['retailStoreProvinceCenterList'] = 1 - params['retailStoreProvinceCenterList.orderBy.0'] = "id" - params['retailStoreProvinceCenterList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -206,8 +208,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -277,8 +279,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.table.js b/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.table.js index 09b767ce7..7084e13a1 100644 --- a/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.table.js +++ b/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.table.js @@ -40,24 +40,53 @@ class RetailStoreProvinceCenterTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = RetailStoreProvinceCenterBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class RetailStoreProvinceCenterTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class RetailStoreProvinceCenterTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.updateform.js b/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.updateform.js index ea6634c58..ea6f2f9e5 100644 --- a/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.updateform.js +++ b/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.updateform.js @@ -263,7 +263,7 @@ class RetailStoreProvinceCenterUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -275,7 +275,7 @@ class RetailStoreProvinceCenterUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -287,7 +287,7 @@ class RetailStoreProvinceCenterUpdateForm extends Component { initialValue: selectedRow.founded, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/salarygrade/SalaryGrade.app.js b/bizui/src/bizcomponents/salarygrade/SalaryGrade.app.js index 6883456b9..f710df19c 100644 --- a/bizui/src/bizcomponents/salarygrade/SalaryGrade.app.js +++ b/bizui/src/bizcomponents/salarygrade/SalaryGrade.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class SalaryGradeBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -255,12 +264,14 @@ class SalaryGradeBizApp extends React.PureComponent { buildRouters = () =>{ const {SalaryGradeDashboard} = GlobalComponents - const {SalaryGradePreference} = GlobalComponents + const {SalaryGradePermission} = GlobalComponents + const {SalaryGradeProfile} = GlobalComponents const routers=[ {path:"/salaryGrade/:id/dashboard", component: SalaryGradeDashboard}, - {path:"/salaryGrade/:id/preference", component: SalaryGradePreference}, + {path:"/salaryGrade/:id/profile", component: SalaryGradeProfile}, + {path:"/salaryGrade/:id/permission", component: SalaryGradePermission}, diff --git a/bizui/src/bizcomponents/salarygrade/SalaryGrade.associateform.js b/bizui/src/bizcomponents/salarygrade/SalaryGrade.associateform.js index 081cc6cf0..16bf0fadf 100644 --- a/bizui/src/bizcomponents/salarygrade/SalaryGrade.associateform.js +++ b/bizui/src/bizcomponents/salarygrade/SalaryGrade.associateform.js @@ -142,7 +142,7 @@ class SalaryGradeAssociateForm extends Component { {getFieldDecorator('code', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -152,7 +152,7 @@ class SalaryGradeAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -162,7 +162,7 @@ class SalaryGradeAssociateForm extends Component { {getFieldDecorator('detailDescription', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/salarygrade/SalaryGrade.associateform.less b/bizui/src/bizcomponents/salarygrade/SalaryGrade.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/salarygrade/SalaryGrade.associateform.less +++ b/bizui/src/bizcomponents/salarygrade/SalaryGrade.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/salarygrade/SalaryGrade.base.js b/bizui/src/bizcomponents/salarygrade/SalaryGrade.base.js index 9e31c1bbc..6af18051d 100644 --- a/bizui/src/bizcomponents/salarygrade/SalaryGrade.base.js +++ b/bizui/src/bizcomponents/salarygrade/SalaryGrade.base.js @@ -1,103 +1,83 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"工资等级", menuFor: "salaryGrade", subItems: [ - {name: 'employeeList', displayName:'员工', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'employeeSalarySheetList', displayName:'工资单', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'employeeList', displayName:'员工', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'employeeSalarySheetList', displayName:'工资单', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + code: '代码', + company: '公司', + name: '名称', + detailDescription: '详细描述', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'salaryGrade') }, - { title: '代码', debugtype: 'string', dataIndex: 'code', width: '10',render: (text, record)=>renderTextCell(text,record) }, - { title: '公司', dataIndex: 'company', render: (text, record) => renderReferenceCell(text, record)}, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: '详细描述', debugtype: 'string', dataIndex: 'detailDescription', width: '65',render: (text, record)=>renderTextCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'salaryGrade') , sorter: true }, + { title: fieldLabels.code, debugtype: 'string', dataIndex: 'code', width: '10',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.company, dataIndex: 'company', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.detailDescription, debugtype: 'string', dataIndex: 'detailDescription', width: '65',render: (text, record)=>renderTextCell(text,record)}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({salaryGrade,targetComponent})=>{ -const fieldLabels = { - id: '序号', - code: '代码', - company: '公司', - name: '名称', - detailDescription: '详细描述', + + + const {SalaryGradeService} = GlobalComponents + // const userContext = null + return ( + +{salaryGrade.id} +{salaryGrade.code} +{salaryGrade.name} +{salaryGrade.detailDescription} + + {buildTransferModal(salaryGrade,targetComponent)} + + ) } + + -const SalaryGradeBase={menuData,displayColumns,fieldLabels} +const SalaryGradeBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default SalaryGradeBase diff --git a/bizui/src/bizcomponents/salarygrade/SalaryGrade.createform.js b/bizui/src/bizcomponents/salarygrade/SalaryGrade.createform.js index c860098b7..b1c5f54a8 100644 --- a/bizui/src/bizcomponents/salarygrade/SalaryGrade.createform.js +++ b/bizui/src/bizcomponents/salarygrade/SalaryGrade.createform.js @@ -209,7 +209,7 @@ class SalaryGradeCreateForm extends Component { {getFieldDecorator('code', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -219,7 +219,7 @@ class SalaryGradeCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -229,7 +229,7 @@ class SalaryGradeCreateForm extends Component { {getFieldDecorator('detailDescription', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/salarygrade/SalaryGrade.dashboard.js b/bizui/src/bizcomponents/salarygrade/SalaryGrade.dashboard.js index e519e9645..b69853d40 100644 --- a/bizui/src/bizcomponents/salarygrade/SalaryGrade.dashboard.js +++ b/bizui/src/bizcomponents/salarygrade/SalaryGrade.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -139,6 +139,7 @@ class SalaryGradeDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -147,13 +148,17 @@ class SalaryGradeDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/salarygrade/SalaryGrade.model.js b/bizui/src/bizcomponents/salarygrade/SalaryGrade.model.js index ae8eb2b50..8c8146b92 100644 --- a/bizui/src/bizcomponents/salarygrade/SalaryGrade.model.js +++ b/bizui/src/bizcomponents/salarygrade/SalaryGrade.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/salaryGrade/${id}/list/\EmployeeList/员工+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/salaryGrade/${id}/list/EmployeeList/员工+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateEmployee({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/salaryGrade/${id}/list/\EmployeeList/员工列表`, state: newPlayload } + const location = { pathname: `/salaryGrade/${id}/list/EmployeeList/员工列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextEmployeeUpdateRow({ payload }, { call, put }) { @@ -206,7 +206,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/salaryGrade/${id}/list/\EmployeeSalarySheetList/工资单+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/salaryGrade/${id}/list/EmployeeSalarySheetList/工资单+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateEmployeeSalarySheet({ payload }, { call, put }) { @@ -228,7 +228,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/salaryGrade/${id}/list/\EmployeeSalarySheetList/工资单列表`, state: newPlayload } + const location = { pathname: `/salaryGrade/${id}/list/EmployeeSalarySheetList/工资单列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextEmployeeSalarySheetUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/salarygrade/SalaryGrade.permission.js b/bizui/src/bizcomponents/salarygrade/SalaryGrade.permission.js new file mode 100644 index 000000000..2ef00d21a --- /dev/null +++ b/bizui/src/bizcomponents/salarygrade/SalaryGrade.permission.js @@ -0,0 +1,86 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './SalaryGrade.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (salaryGrade,targetComponent) =>{ + const userContext = null + return ( + +{salaryGrade.id} +{salaryGrade.code} +{salaryGrade.name} +{salaryGrade.detailDescription} + + + ) +} + + +const renderPermissionSetting = salaryGrade => { + const {SalaryGradeBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class SalaryGradePermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const salaryGrade = this.props.salaryGrade; + const { id,displayName, employeeCount, employeeSalarySheetCount } = salaryGrade + const cardsData = {cardsName:"工资等级",cardsFor: "salaryGrade",cardsSource: salaryGrade, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + salaryGrade: state._salaryGrade, +}))(Form.create()(SalaryGradePermission)) + diff --git a/bizui/src/bizcomponents/salarygrade/SalaryGrade.permission.less b/bizui/src/bizcomponents/salarygrade/SalaryGrade.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/salarygrade/SalaryGrade.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/salarygrade/SalaryGrade.preference.js b/bizui/src/bizcomponents/salarygrade/SalaryGrade.preference.js index 164c6c366..05951b4d9 100644 --- a/bizui/src/bizcomponents/salarygrade/SalaryGrade.preference.js +++ b/bizui/src/bizcomponents/salarygrade/SalaryGrade.preference.js @@ -301,8 +301,12 @@ class SalaryGradePreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, employeeCount, employeeSalarySheetCount } = this.props.salaryGrade - const cardsData = {cardsName:"工资等级",cardsFor: "salaryGrade",cardsSource: this.props.salaryGrade, + const salaryGrade = this.props.salaryGrade; + const { id,displayName, employeeCount, employeeSalarySheetCount } = salaryGrade + + + + const cardsData = {cardsName:"工资等级",cardsFor: "salaryGrade",cardsSource: salaryGrade, subItems: [ ], diff --git a/bizui/src/bizcomponents/salarygrade/SalaryGrade.profile.js b/bizui/src/bizcomponents/salarygrade/SalaryGrade.profile.js new file mode 100644 index 000000000..9c4cfb35f --- /dev/null +++ b/bizui/src/bizcomponents/salarygrade/SalaryGrade.profile.js @@ -0,0 +1,93 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './SalaryGrade.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (salaryGrade,targetComponent) =>{ + const userContext = null + return ( + +{salaryGrade.id} +{salaryGrade.code} +{salaryGrade.name} +{salaryGrade.detailDescription} + + + ) +} + + + +class SalaryGradeProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const salaryGrade = this.props.salaryGrade; + const { id,displayName, employeeCount, employeeSalarySheetCount } = salaryGrade + + const cardsData = {cardsName:"工资等级",cardsFor: "salaryGrade",cardsSource: salaryGrade, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + salaryGrade: state._salaryGrade, +}))(Form.create()(SalaryGradeProfile)) + diff --git a/bizui/src/bizcomponents/salarygrade/SalaryGrade.profile.less b/bizui/src/bizcomponents/salarygrade/SalaryGrade.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/salarygrade/SalaryGrade.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/salarygrade/SalaryGrade.search.js b/bizui/src/bizcomponents/salarygrade/SalaryGrade.search.js index 861e797a9..343061555 100644 --- a/bizui/src/bizcomponents/salarygrade/SalaryGrade.search.js +++ b/bizui/src/bizcomponents/salarygrade/SalaryGrade.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/salarygrade/SalaryGrade.searchform.js b/bizui/src/bizcomponents/salarygrade/SalaryGrade.searchform.js index 2ecc3fd38..45af97285 100644 --- a/bizui/src/bizcomponents/salarygrade/SalaryGrade.searchform.js +++ b/bizui/src/bizcomponents/salarygrade/SalaryGrade.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`salaryGradeList.searchField`] = fieldName - value[`salaryGradeList.searchVerb`] = searchVerb - value[`salaryGradeList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,13 +127,14 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'code')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'company')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'detailDescription')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'code')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'company')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'detailDescription')) console.log("the final parameter", paramList) @@ -149,11 +150,12 @@ componentDidMount() { } - params['salaryGradeList'] = 1 - params['salaryGradeList.orderBy.0'] = "id" - params['salaryGradeList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -208,8 +210,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -295,8 +297,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/salarygrade/SalaryGrade.table.js b/bizui/src/bizcomponents/salarygrade/SalaryGrade.table.js index 863787786..368807efb 100644 --- a/bizui/src/bizcomponents/salarygrade/SalaryGrade.table.js +++ b/bizui/src/bizcomponents/salarygrade/SalaryGrade.table.js @@ -40,24 +40,53 @@ class SalaryGradeTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = SalaryGradeBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class SalaryGradeTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class SalaryGradeTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/salarygrade/SalaryGrade.updateform.js b/bizui/src/bizcomponents/salarygrade/SalaryGrade.updateform.js index b3fe78525..b9be35aca 100644 --- a/bizui/src/bizcomponents/salarygrade/SalaryGrade.updateform.js +++ b/bizui/src/bizcomponents/salarygrade/SalaryGrade.updateform.js @@ -261,7 +261,7 @@ class SalaryGradeUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class SalaryGradeUpdateForm extends Component { initialValue: selectedRow.code, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -285,7 +285,7 @@ class SalaryGradeUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -297,7 +297,7 @@ class SalaryGradeUpdateForm extends Component { initialValue: selectedRow.detailDescription, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/scoring/Scoring.app.js b/bizui/src/bizcomponents/scoring/Scoring.app.js index f97acc9d8..8078c9b1c 100644 --- a/bizui/src/bizcomponents/scoring/Scoring.app.js +++ b/bizui/src/bizcomponents/scoring/Scoring.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class ScoringBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class ScoringBizApp extends React.PureComponent { buildRouters = () =>{ const {ScoringDashboard} = GlobalComponents - const {ScoringPreference} = GlobalComponents + const {ScoringPermission} = GlobalComponents + const {ScoringProfile} = GlobalComponents const routers=[ {path:"/scoring/:id/dashboard", component: ScoringDashboard}, - {path:"/scoring/:id/preference", component: ScoringPreference}, + {path:"/scoring/:id/profile", component: ScoringProfile}, + {path:"/scoring/:id/permission", component: ScoringPermission}, diff --git a/bizui/src/bizcomponents/scoring/Scoring.associateform.js b/bizui/src/bizcomponents/scoring/Scoring.associateform.js index 788294c6b..43bd1c836 100644 --- a/bizui/src/bizcomponents/scoring/Scoring.associateform.js +++ b/bizui/src/bizcomponents/scoring/Scoring.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { scoredBy: '王志文', - score: '94', + score: '75', comment: '这个题做的真不错啊', } */ @@ -140,7 +140,7 @@ class ScoringAssociateForm extends Component { {getFieldDecorator('scoredBy', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -150,7 +150,7 @@ class ScoringAssociateForm extends Component { {getFieldDecorator('score', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -160,7 +160,7 @@ class ScoringAssociateForm extends Component { {getFieldDecorator('comment', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/scoring/Scoring.associateform.less b/bizui/src/bizcomponents/scoring/Scoring.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/scoring/Scoring.associateform.less +++ b/bizui/src/bizcomponents/scoring/Scoring.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/scoring/Scoring.base.js b/bizui/src/bizcomponents/scoring/Scoring.base.js index e28277a0f..c26e50314 100644 --- a/bizui/src/bizcomponents/scoring/Scoring.base.js +++ b/bizui/src/bizcomponents/scoring/Scoring.base.js @@ -1,100 +1,80 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"评分", menuFor: "scoring", subItems: [ - {name: 'employeeCompanyTrainingList', displayName:'员工参与的公司培训', icon:'om',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'employeeCompanyTrainingList', displayName:'员工参与的公司培训', icon:'om',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + scoredBy: '由谁打分', + score: '分数', + comment: '评论', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'scoring') }, - { title: '由谁打分', debugtype: 'string', dataIndex: 'scoredBy', width: '7',render: (text, record)=>renderTextCell(text,record) }, - { title: '分数', debugtype: 'int', dataIndex: 'score', width: '7',render: (text, record)=>renderTextCell(text,record) }, - { title: '评论', debugtype: 'string', dataIndex: 'comment', width: '13',render: (text, record)=>renderTextCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'scoring') , sorter: true }, + { title: fieldLabels.scoredBy, debugtype: 'string', dataIndex: 'scoredBy', width: '7',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.score, debugtype: 'int', dataIndex: 'score', width: '7',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.comment, debugtype: 'string', dataIndex: 'comment', width: '13',render: (text, record)=>renderTextCell(text,record)}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({scoring,targetComponent})=>{ -const fieldLabels = { - id: '序号', - scoredBy: '由谁打分', - score: '分数', - comment: '评论', + + + const {ScoringService} = GlobalComponents + // const userContext = null + return ( + +{scoring.id} +{scoring.scoredBy} +{scoring.score} +{scoring.comment} + + {buildTransferModal(scoring,targetComponent)} + + ) } + + -const ScoringBase={menuData,displayColumns,fieldLabels} +const ScoringBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default ScoringBase diff --git a/bizui/src/bizcomponents/scoring/Scoring.createform.js b/bizui/src/bizcomponents/scoring/Scoring.createform.js index b7dd65821..110e5fce9 100644 --- a/bizui/src/bizcomponents/scoring/Scoring.createform.js +++ b/bizui/src/bizcomponents/scoring/Scoring.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { scoredBy: '王志文', - score: '72', + score: '100', comment: '这个题做的真不错啊', } */ @@ -208,7 +208,7 @@ class ScoringCreateForm extends Component { {getFieldDecorator('scoredBy', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -218,7 +218,7 @@ class ScoringCreateForm extends Component { {getFieldDecorator('score', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -228,7 +228,7 @@ class ScoringCreateForm extends Component { {getFieldDecorator('comment', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/scoring/Scoring.dashboard.js b/bizui/src/bizcomponents/scoring/Scoring.dashboard.js index a80416b67..c7886d78d 100644 --- a/bizui/src/bizcomponents/scoring/Scoring.dashboard.js +++ b/bizui/src/bizcomponents/scoring/Scoring.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -138,6 +138,7 @@ class ScoringDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -146,13 +147,17 @@ class ScoringDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/scoring/Scoring.model.js b/bizui/src/bizcomponents/scoring/Scoring.model.js index 5c39697e5..72f2bdc44 100644 --- a/bizui/src/bizcomponents/scoring/Scoring.model.js +++ b/bizui/src/bizcomponents/scoring/Scoring.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/scoring/${id}/list/\EmployeeCompanyTrainingList/员工参与的公司培训+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/scoring/${id}/list/EmployeeCompanyTrainingList/员工参与的公司培训+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateEmployeeCompanyTraining({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/scoring/${id}/list/\EmployeeCompanyTrainingList/员工参与的公司培训列表`, state: newPlayload } + const location = { pathname: `/scoring/${id}/list/EmployeeCompanyTrainingList/员工参与的公司培训列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextEmployeeCompanyTrainingUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/scoring/Scoring.permission.js b/bizui/src/bizcomponents/scoring/Scoring.permission.js new file mode 100644 index 000000000..8e524fac6 --- /dev/null +++ b/bizui/src/bizcomponents/scoring/Scoring.permission.js @@ -0,0 +1,86 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './Scoring.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (scoring,targetComponent) =>{ + const userContext = null + return ( + +{scoring.id} +{scoring.scoredBy} +{scoring.score} +{scoring.comment} + + + ) +} + + +const renderPermissionSetting = scoring => { + const {ScoringBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class ScoringPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const scoring = this.props.scoring; + const { id,displayName, employeeCompanyTrainingCount } = scoring + const cardsData = {cardsName:"评分",cardsFor: "scoring",cardsSource: scoring, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + scoring: state._scoring, +}))(Form.create()(ScoringPermission)) + diff --git a/bizui/src/bizcomponents/scoring/Scoring.permission.less b/bizui/src/bizcomponents/scoring/Scoring.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/scoring/Scoring.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/scoring/Scoring.preference.js b/bizui/src/bizcomponents/scoring/Scoring.preference.js index 3d35e9420..e5e49f130 100644 --- a/bizui/src/bizcomponents/scoring/Scoring.preference.js +++ b/bizui/src/bizcomponents/scoring/Scoring.preference.js @@ -301,8 +301,12 @@ class ScoringPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, employeeCompanyTrainingCount } = this.props.scoring - const cardsData = {cardsName:"评分",cardsFor: "scoring",cardsSource: this.props.scoring, + const scoring = this.props.scoring; + const { id,displayName, employeeCompanyTrainingCount } = scoring + + + + const cardsData = {cardsName:"评分",cardsFor: "scoring",cardsSource: scoring, subItems: [ ], diff --git a/bizui/src/bizcomponents/scoring/Scoring.profile.js b/bizui/src/bizcomponents/scoring/Scoring.profile.js new file mode 100644 index 000000000..aade47a71 --- /dev/null +++ b/bizui/src/bizcomponents/scoring/Scoring.profile.js @@ -0,0 +1,93 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './Scoring.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (scoring,targetComponent) =>{ + const userContext = null + return ( + +{scoring.id} +{scoring.scoredBy} +{scoring.score} +{scoring.comment} + + + ) +} + + + +class ScoringProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const scoring = this.props.scoring; + const { id,displayName, employeeCompanyTrainingCount } = scoring + + const cardsData = {cardsName:"评分",cardsFor: "scoring",cardsSource: scoring, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + scoring: state._scoring, +}))(Form.create()(ScoringProfile)) + diff --git a/bizui/src/bizcomponents/scoring/Scoring.profile.less b/bizui/src/bizcomponents/scoring/Scoring.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/scoring/Scoring.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/scoring/Scoring.search.js b/bizui/src/bizcomponents/scoring/Scoring.search.js index 2f44cea0d..8195af458 100644 --- a/bizui/src/bizcomponents/scoring/Scoring.search.js +++ b/bizui/src/bizcomponents/scoring/Scoring.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/scoring/Scoring.searchform.js b/bizui/src/bizcomponents/scoring/Scoring.searchform.js index 70d5c5589..e9cd387bb 100644 --- a/bizui/src/bizcomponents/scoring/Scoring.searchform.js +++ b/bizui/src/bizcomponents/scoring/Scoring.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`scoringList.searchField`] = fieldName - value[`scoringList.searchVerb`] = searchVerb - value[`scoringList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,11 +127,12 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'scoredBy')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'comment')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'scoredBy')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'comment')) console.log("the final parameter", paramList) @@ -147,11 +148,12 @@ componentDidMount() { } - params['scoringList'] = 1 - params['scoringList.orderBy.0'] = "id" - params['scoringList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -206,8 +208,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -270,8 +272,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/scoring/Scoring.table.js b/bizui/src/bizcomponents/scoring/Scoring.table.js index f9891b38d..4552f9bfb 100644 --- a/bizui/src/bizcomponents/scoring/Scoring.table.js +++ b/bizui/src/bizcomponents/scoring/Scoring.table.js @@ -40,24 +40,53 @@ class ScoringTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = ScoringBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class ScoringTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class ScoringTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/scoring/Scoring.updateform.js b/bizui/src/bizcomponents/scoring/Scoring.updateform.js index b0125f4ad..56f3914c0 100644 --- a/bizui/src/bizcomponents/scoring/Scoring.updateform.js +++ b/bizui/src/bizcomponents/scoring/Scoring.updateform.js @@ -261,7 +261,7 @@ class ScoringUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class ScoringUpdateForm extends Component { initialValue: selectedRow.scoredBy, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -285,7 +285,7 @@ class ScoringUpdateForm extends Component { initialValue: selectedRow.score, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -297,7 +297,7 @@ class ScoringUpdateForm extends Component { initialValue: selectedRow.comment, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/secuser/SecUser.app.js b/bizui/src/bizcomponents/secuser/SecUser.app.js index cbe20b212..5edc4cfab 100644 --- a/bizui/src/bizcomponents/secuser/SecUser.app.js +++ b/bizui/src/bizcomponents/secuser/SecUser.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class SecUserBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -255,12 +264,14 @@ class SecUserBizApp extends React.PureComponent { buildRouters = () =>{ const {SecUserDashboard} = GlobalComponents - const {SecUserPreference} = GlobalComponents + const {SecUserPermission} = GlobalComponents + const {SecUserProfile} = GlobalComponents const routers=[ {path:"/secUser/:id/dashboard", component: SecUserDashboard}, - {path:"/secUser/:id/preference", component: SecUserPreference}, + {path:"/secUser/:id/profile", component: SecUserProfile}, + {path:"/secUser/:id/permission", component: SecUserPermission}, diff --git a/bizui/src/bizcomponents/secuser/SecUser.associateform.js b/bizui/src/bizcomponents/secuser/SecUser.associateform.js index 10908e447..435fb7e84 100644 --- a/bizui/src/bizcomponents/secuser/SecUser.associateform.js +++ b/bizui/src/bizcomponents/secuser/SecUser.associateform.js @@ -23,8 +23,8 @@ const testValues = { email: '', pwd: 'C183EC89F92A462CF45B95504792EC4625E847C90536EEFE512D1C9DB8602E95', verificationCode: '0', - verificationCodeExpire: '2019-03-16 14:25:02', - lastLoginTime: '2019-03-23 15:26:12', + verificationCodeExpire: '2019-05-13 16:28:11', + lastLoginTime: '2019-05-15 19:43:41', domainId: 'UD000001', } */ @@ -146,7 +146,7 @@ class SecUserAssociateForm extends Component { {getFieldDecorator('login', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -156,7 +156,7 @@ class SecUserAssociateForm extends Component { {getFieldDecorator('mobile', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -166,7 +166,7 @@ class SecUserAssociateForm extends Component { {getFieldDecorator('email', { rules: [{ required: false, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -176,7 +176,7 @@ class SecUserAssociateForm extends Component { {getFieldDecorator('pwd', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -186,7 +186,7 @@ class SecUserAssociateForm extends Component { {getFieldDecorator('verificationCode', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -196,7 +196,7 @@ class SecUserAssociateForm extends Component { {getFieldDecorator('verificationCodeExpire', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -206,7 +206,7 @@ class SecUserAssociateForm extends Component { {getFieldDecorator('lastLoginTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/secuser/SecUser.associateform.less b/bizui/src/bizcomponents/secuser/SecUser.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/secuser/SecUser.associateform.less +++ b/bizui/src/bizcomponents/secuser/SecUser.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/secuser/SecUser.base.js b/bizui/src/bizcomponents/secuser/SecUser.base.js index 57f63c90a..88c00f221 100644 --- a/bizui/src/bizcomponents/secuser/SecUser.base.js +++ b/bizui/src/bizcomponents/secuser/SecUser.base.js @@ -1,98 +1,42 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"SEC的用户", menuFor: "secUser", subItems: [ - {name: 'userAppList', displayName:'用户应用程序', icon:'user',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'loginHistoryList', displayName:'登录历史', icon:'history',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'userAppList', displayName:'用户应用程序', icon:'user',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'loginHistoryList', displayName:'登录历史', icon:'history',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) - -} - -const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'secUser') }, - { title: '登录', debugtype: 'string', dataIndex: 'login', width: '9',render: (text, record)=>renderTextCell(text,record) }, - { title: '手机', debugtype: 'string_china_mobile_phone', dataIndex: 'mobile', width: '15',render: (text, record)=>renderTextCell(text,record) }, - { title: '电子邮件', debugtype: 'string', dataIndex: 'email', width: '23',render: (text, record)=>renderTextCell(text,record) }, - { title: 'PWD', debugtype: 'string_password', dataIndex: 'pwd', width: '11',render: (text, record)=>renderTextCell(text,record) }, - { title: '验证码', debugtype: 'int', dataIndex: 'verificationCode', width: '11',render: (text, record)=>renderTextCell(text,record) }, - { title: '验证码过期', dataIndex: 'verificationCodeExpire', render: (text, record) =>renderDateTimeCell(text,record) }, - { title: '最后登录时间', dataIndex: 'lastLoginTime', render: (text, record) =>renderDateTimeCell(text,record) }, - { title: '域', dataIndex: 'domain', render: (text, record) => renderReferenceCell(text, record)}, - { title: '屏蔽', dataIndex: 'blocking', render: (text, record) => renderReferenceCell(text, record)}, - { title: '当前状态', debugtype: 'string', dataIndex: 'currentStatus', width: '11',render: (text, record)=>renderTextCell(text,record) }, - -] - const fieldLabels = { id: '序号', login: '登录', @@ -108,8 +52,49 @@ const fieldLabels = { } +const displayColumns = [ + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'secUser') , sorter: true }, + { title: fieldLabels.login, debugtype: 'string', dataIndex: 'login', width: '9',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.mobile, debugtype: 'string_china_mobile_phone', dataIndex: 'mobile', width: '15',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.email, debugtype: 'string', dataIndex: 'email', width: '23',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.pwd, debugtype: 'string_password', dataIndex: 'pwd', width: '11',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.verificationCode, debugtype: 'int', dataIndex: 'verificationCode', width: '11',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.verificationCodeExpire, dataIndex: 'verificationCodeExpire', render: (text, record) =>renderDateTimeCell(text,record), sorter: true}, + { title: fieldLabels.lastLoginTime, dataIndex: 'lastLoginTime', render: (text, record) =>renderDateTimeCell(text,record), sorter: true}, + { title: fieldLabels.domain, dataIndex: 'domain', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.blocking, dataIndex: 'blocking', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.currentStatus, debugtype: 'string', dataIndex: 'currentStatus', width: '11',render: (text, record)=>renderTextCell(text,record)}, + +] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({secUser,targetComponent})=>{ + + + + const {SecUserService} = GlobalComponents + // const userContext = null + return ( + +{secUser.id} +{secUser.login} +{secUser.mobile} +{secUser.email} +{secUser.pwd} +{secUser.verificationCode} +{ moment(secUser.verificationCodeExpire).format('YYYY-MM-DD')} +{ moment(secUser.lastLoginTime).format('YYYY-MM-DD')} +{secUser.currentStatus} + + {buildTransferModal(secUser,targetComponent)} + + ) + +} + + + -const SecUserBase={menuData,displayColumns,fieldLabels} +const SecUserBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default SecUserBase diff --git a/bizui/src/bizcomponents/secuser/SecUser.createform.js b/bizui/src/bizcomponents/secuser/SecUser.createform.js index 7698747c6..629d37436 100644 --- a/bizui/src/bizcomponents/secuser/SecUser.createform.js +++ b/bizui/src/bizcomponents/secuser/SecUser.createform.js @@ -22,8 +22,8 @@ const testValues = { email: '', pwd: 'C183EC89F92A462CF45B95504792EC4625E847C90536EEFE512D1C9DB8602E95', verificationCode: '0', - verificationCodeExpire: '2019-03-13 22:24:02', - lastLoginTime: '2019-03-20 18:46:08', + verificationCodeExpire: '2019-04-30 03:25:46', + lastLoginTime: '2019-05-03 15:55:12', domainId: 'UD000001', } */ @@ -213,7 +213,7 @@ class SecUserCreateForm extends Component { {getFieldDecorator('login', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -223,7 +223,7 @@ class SecUserCreateForm extends Component { {getFieldDecorator('mobile', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -233,7 +233,7 @@ class SecUserCreateForm extends Component { {getFieldDecorator('email', { rules: [{ required: false, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -243,7 +243,7 @@ class SecUserCreateForm extends Component { {getFieldDecorator('pwd', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -253,7 +253,7 @@ class SecUserCreateForm extends Component { {getFieldDecorator('verificationCode', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -263,7 +263,7 @@ class SecUserCreateForm extends Component { {getFieldDecorator('verificationCodeExpire', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class SecUserCreateForm extends Component { {getFieldDecorator('lastLoginTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/secuser/SecUser.dashboard.js b/bizui/src/bizcomponents/secuser/SecUser.dashboard.js index a9afef868..d02e8e972 100644 --- a/bizui/src/bizcomponents/secuser/SecUser.dashboard.js +++ b/bizui/src/bizcomponents/secuser/SecUser.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -144,6 +144,7 @@ class SecUserDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -152,13 +153,17 @@ class SecUserDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/secuser/SecUser.model.js b/bizui/src/bizcomponents/secuser/SecUser.model.js index 95db180d8..bdbd5d1a0 100644 --- a/bizui/src/bizcomponents/secuser/SecUser.model.js +++ b/bizui/src/bizcomponents/secuser/SecUser.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/secUser/${id}/list/\UserAppList/用户应用程序+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/secUser/${id}/list/UserAppList/用户应用程序+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateUserApp({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/secUser/${id}/list/\UserAppList/用户应用程序列表`, state: newPlayload } + const location = { pathname: `/secUser/${id}/list/UserAppList/用户应用程序列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextUserAppUpdateRow({ payload }, { call, put }) { @@ -206,7 +206,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/secUser/${id}/list/\LoginHistoryList/登录历史+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/secUser/${id}/list/LoginHistoryList/登录历史+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateLoginHistory({ payload }, { call, put }) { @@ -228,7 +228,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/secUser/${id}/list/\LoginHistoryList/登录历史列表`, state: newPlayload } + const location = { pathname: `/secUser/${id}/list/LoginHistoryList/登录历史列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextLoginHistoryUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/secuser/SecUser.permission.js b/bizui/src/bizcomponents/secuser/SecUser.permission.js new file mode 100644 index 000000000..3cf62728d --- /dev/null +++ b/bizui/src/bizcomponents/secuser/SecUser.permission.js @@ -0,0 +1,91 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './SecUser.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (secUser,targetComponent) =>{ + const userContext = null + return ( + +{secUser.id} +{secUser.login} +{secUser.mobile} +{secUser.email} +{secUser.pwd} +{secUser.verificationCode} +{ moment(secUser.verificationCodeExpire).format('YYYY-MM-DD')} +{ moment(secUser.lastLoginTime).format('YYYY-MM-DD')} +{secUser.currentStatus} + + + ) +} + + +const renderPermissionSetting = secUser => { + const {SecUserBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class SecUserPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const secUser = this.props.secUser; + const { id,displayName, userAppCount, loginHistoryCount } = secUser + const cardsData = {cardsName:"SEC的用户",cardsFor: "secUser",cardsSource: secUser, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + secUser: state._secUser, +}))(Form.create()(SecUserPermission)) + diff --git a/bizui/src/bizcomponents/secuser/SecUser.permission.less b/bizui/src/bizcomponents/secuser/SecUser.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/secuser/SecUser.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/secuser/SecUser.preference.js b/bizui/src/bizcomponents/secuser/SecUser.preference.js index 9dbf1f56a..923566052 100644 --- a/bizui/src/bizcomponents/secuser/SecUser.preference.js +++ b/bizui/src/bizcomponents/secuser/SecUser.preference.js @@ -306,8 +306,12 @@ class SecUserPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, userAppCount, loginHistoryCount } = this.props.secUser - const cardsData = {cardsName:"SEC的用户",cardsFor: "secUser",cardsSource: this.props.secUser, + const secUser = this.props.secUser; + const { id,displayName, userAppCount, loginHistoryCount } = secUser + + + + const cardsData = {cardsName:"SEC的用户",cardsFor: "secUser",cardsSource: secUser, subItems: [ ], diff --git a/bizui/src/bizcomponents/secuser/SecUser.profile.js b/bizui/src/bizcomponents/secuser/SecUser.profile.js new file mode 100644 index 000000000..17ae104a2 --- /dev/null +++ b/bizui/src/bizcomponents/secuser/SecUser.profile.js @@ -0,0 +1,98 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './SecUser.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (secUser,targetComponent) =>{ + const userContext = null + return ( + +{secUser.id} +{secUser.login} +{secUser.mobile} +{secUser.email} +{secUser.pwd} +{secUser.verificationCode} +{ moment(secUser.verificationCodeExpire).format('YYYY-MM-DD')} +{ moment(secUser.lastLoginTime).format('YYYY-MM-DD')} +{secUser.currentStatus} + + + ) +} + + + +class SecUserProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const secUser = this.props.secUser; + const { id,displayName, userAppCount, loginHistoryCount } = secUser + + const cardsData = {cardsName:"SEC的用户",cardsFor: "secUser",cardsSource: secUser, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + secUser: state._secUser, +}))(Form.create()(SecUserProfile)) + diff --git a/bizui/src/bizcomponents/secuser/SecUser.profile.less b/bizui/src/bizcomponents/secuser/SecUser.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/secuser/SecUser.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/secuser/SecUser.search.js b/bizui/src/bizcomponents/secuser/SecUser.search.js index d9f876c4f..cbc2aa797 100644 --- a/bizui/src/bizcomponents/secuser/SecUser.search.js +++ b/bizui/src/bizcomponents/secuser/SecUser.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/secuser/SecUser.searchform.js b/bizui/src/bizcomponents/secuser/SecUser.searchform.js index 5208921d2..baf425c96 100644 --- a/bizui/src/bizcomponents/secuser/SecUser.searchform.js +++ b/bizui/src/bizcomponents/secuser/SecUser.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`secUserList.searchField`] = fieldName - value[`secUserList.searchVerb`] = searchVerb - value[`secUserList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,15 +127,16 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'login')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'mobile')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'email')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'pwd')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'domain')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'currentStatus')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'login')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'mobile')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'email')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'pwd')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'domain')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'currentStatus')) console.log("the final parameter", paramList) @@ -151,11 +152,12 @@ componentDidMount() { } - params['secUserList'] = 1 - params['secUserList.orderBy.0'] = "id" - params['secUserList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -210,8 +212,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -313,8 +315,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/secuser/SecUser.table.js b/bizui/src/bizcomponents/secuser/SecUser.table.js index 550ce5c1d..82c864dc4 100644 --- a/bizui/src/bizcomponents/secuser/SecUser.table.js +++ b/bizui/src/bizcomponents/secuser/SecUser.table.js @@ -40,24 +40,53 @@ class SecUserTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = SecUserBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class SecUserTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class SecUserTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/secuser/SecUser.updateform.js b/bizui/src/bizcomponents/secuser/SecUser.updateform.js index 63900db28..3947d3d62 100644 --- a/bizui/src/bizcomponents/secuser/SecUser.updateform.js +++ b/bizui/src/bizcomponents/secuser/SecUser.updateform.js @@ -263,7 +263,7 @@ class SecUserUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -275,7 +275,7 @@ class SecUserUpdateForm extends Component { initialValue: selectedRow.login, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -287,7 +287,7 @@ class SecUserUpdateForm extends Component { initialValue: selectedRow.mobile, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -299,7 +299,7 @@ class SecUserUpdateForm extends Component { initialValue: selectedRow.email, rules: [{ required: false, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -311,7 +311,7 @@ class SecUserUpdateForm extends Component { initialValue: selectedRow.pwd, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -323,7 +323,7 @@ class SecUserUpdateForm extends Component { initialValue: selectedRow.verificationCode, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -335,7 +335,7 @@ class SecUserUpdateForm extends Component { initialValue: selectedRow.verificationCodeExpire, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -347,7 +347,7 @@ class SecUserUpdateForm extends Component { initialValue: selectedRow.lastLoginTime, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.app.js b/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.app.js index fda915ca5..4c374c9fc 100644 --- a/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.app.js +++ b/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class SecUserBlockingBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class SecUserBlockingBizApp extends React.PureComponent { buildRouters = () =>{ const {SecUserBlockingDashboard} = GlobalComponents - const {SecUserBlockingPreference} = GlobalComponents + const {SecUserBlockingPermission} = GlobalComponents + const {SecUserBlockingProfile} = GlobalComponents const routers=[ {path:"/secUserBlocking/:id/dashboard", component: SecUserBlockingDashboard}, - {path:"/secUserBlocking/:id/preference", component: SecUserBlockingPreference}, + {path:"/secUserBlocking/:id/profile", component: SecUserBlockingProfile}, + {path:"/secUserBlocking/:id/permission", component: SecUserBlockingPermission}, diff --git a/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.associateform.js b/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.associateform.js index dbcd427d4..ecf6c820e 100644 --- a/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.associateform.js +++ b/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.associateform.js @@ -139,7 +139,7 @@ class SecUserBlockingAssociateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -149,7 +149,7 @@ class SecUserBlockingAssociateForm extends Component { {getFieldDecorator('comments', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.associateform.less b/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.associateform.less +++ b/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.base.js b/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.base.js index 8d55a6900..e69324106 100644 --- a/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.base.js +++ b/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.base.js @@ -1,100 +1,80 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"用户屏蔽", menuFor: "secUserBlocking", subItems: [ - {name: 'secUserList', displayName:'SEC的用户', icon:'user',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'secUserList', displayName:'SEC的用户', icon:'user',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + who: '谁', + blockTime: '块时间', + comments: '评论', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'secUserBlocking') }, - { title: '谁', debugtype: 'string', dataIndex: 'who', width: '17',render: (text, record)=>renderTextCell(text,record) }, - { title: '块时间', dataIndex: 'blockTime', render: (text, record) =>renderDateTimeCell(text,record) }, - { title: '评论', debugtype: 'string', dataIndex: 'comments', width: '28',render: (text, record)=>renderTextCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'secUserBlocking') , sorter: true }, + { title: fieldLabels.who, debugtype: 'string', dataIndex: 'who', width: '17',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.blockTime, dataIndex: 'blockTime', render: (text, record) =>renderDateTimeCell(text,record), sorter: true}, + { title: fieldLabels.comments, debugtype: 'string', dataIndex: 'comments', width: '28',render: (text, record)=>renderTextCell(text,record)}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({secUserBlocking,targetComponent})=>{ -const fieldLabels = { - id: '序号', - who: '谁', - blockTime: '块时间', - comments: '评论', + + + const {SecUserBlockingService} = GlobalComponents + // const userContext = null + return ( + +{secUserBlocking.id} +{secUserBlocking.who} +{ moment(secUserBlocking.blockTime).format('YYYY-MM-DD')} +{secUserBlocking.comments} + + {buildTransferModal(secUserBlocking,targetComponent)} + + ) } + + -const SecUserBlockingBase={menuData,displayColumns,fieldLabels} +const SecUserBlockingBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default SecUserBlockingBase diff --git a/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.createform.js b/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.createform.js index 3892ad3d6..4cfceb735 100644 --- a/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.createform.js +++ b/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.createform.js @@ -207,7 +207,7 @@ class SecUserBlockingCreateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -217,7 +217,7 @@ class SecUserBlockingCreateForm extends Component { {getFieldDecorator('comments', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.dashboard.js b/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.dashboard.js index 68e82941e..16a22754f 100644 --- a/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.dashboard.js +++ b/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -138,6 +138,7 @@ class SecUserBlockingDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -146,13 +147,17 @@ class SecUserBlockingDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.model.js b/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.model.js index 1b9614ed6..6a7034a41 100644 --- a/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.model.js +++ b/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/secUserBlocking/${id}/list/\SecUserList/SEC的用户+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/secUserBlocking/${id}/list/SecUserList/SEC的用户+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateSecUser({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/secUserBlocking/${id}/list/\SecUserList/SEC的用户列表`, state: newPlayload } + const location = { pathname: `/secUserBlocking/${id}/list/SecUserList/SEC的用户列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextSecUserUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.permission.js b/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.permission.js new file mode 100644 index 000000000..a26d8e28d --- /dev/null +++ b/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.permission.js @@ -0,0 +1,86 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './SecUserBlocking.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (secUserBlocking,targetComponent) =>{ + const userContext = null + return ( + +{secUserBlocking.id} +{secUserBlocking.who} +{ moment(secUserBlocking.blockTime).format('YYYY-MM-DD')} +{secUserBlocking.comments} + + + ) +} + + +const renderPermissionSetting = secUserBlocking => { + const {SecUserBlockingBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class SecUserBlockingPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const secUserBlocking = this.props.secUserBlocking; + const { id,displayName, secUserCount } = secUserBlocking + const cardsData = {cardsName:"用户屏蔽",cardsFor: "secUserBlocking",cardsSource: secUserBlocking, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + secUserBlocking: state._secUserBlocking, +}))(Form.create()(SecUserBlockingPermission)) + diff --git a/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.permission.less b/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.preference.js b/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.preference.js index 08b00e9b4..2e9582caa 100644 --- a/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.preference.js +++ b/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.preference.js @@ -301,8 +301,12 @@ class SecUserBlockingPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, secUserCount } = this.props.secUserBlocking - const cardsData = {cardsName:"用户屏蔽",cardsFor: "secUserBlocking",cardsSource: this.props.secUserBlocking, + const secUserBlocking = this.props.secUserBlocking; + const { id,displayName, secUserCount } = secUserBlocking + + + + const cardsData = {cardsName:"用户屏蔽",cardsFor: "secUserBlocking",cardsSource: secUserBlocking, subItems: [ ], diff --git a/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.profile.js b/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.profile.js new file mode 100644 index 000000000..4a3139ef5 --- /dev/null +++ b/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.profile.js @@ -0,0 +1,93 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './SecUserBlocking.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (secUserBlocking,targetComponent) =>{ + const userContext = null + return ( + +{secUserBlocking.id} +{secUserBlocking.who} +{ moment(secUserBlocking.blockTime).format('YYYY-MM-DD')} +{secUserBlocking.comments} + + + ) +} + + + +class SecUserBlockingProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const secUserBlocking = this.props.secUserBlocking; + const { id,displayName, secUserCount } = secUserBlocking + + const cardsData = {cardsName:"用户屏蔽",cardsFor: "secUserBlocking",cardsSource: secUserBlocking, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + secUserBlocking: state._secUserBlocking, +}))(Form.create()(SecUserBlockingProfile)) + diff --git a/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.profile.less b/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.search.js b/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.search.js index f55feec42..f6e1e21b3 100644 --- a/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.search.js +++ b/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.searchform.js b/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.searchform.js index 5053d5a7f..97244531b 100644 --- a/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.searchform.js +++ b/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`secUserBlockingList.searchField`] = fieldName - value[`secUserBlockingList.searchVerb`] = searchVerb - value[`secUserBlockingList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,11 +127,12 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'who')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'comments')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'who')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'comments')) console.log("the final parameter", paramList) @@ -147,11 +148,12 @@ componentDidMount() { } - params['secUserBlockingList'] = 1 - params['secUserBlockingList.orderBy.0'] = "id" - params['secUserBlockingList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -206,8 +208,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -270,8 +272,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.table.js b/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.table.js index 8f24f8e43..e430efe5c 100644 --- a/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.table.js +++ b/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.table.js @@ -40,24 +40,53 @@ class SecUserBlockingTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = SecUserBlockingBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class SecUserBlockingTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class SecUserBlockingTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.updateform.js b/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.updateform.js index 5c199f6ee..67d8c0739 100644 --- a/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.updateform.js +++ b/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.updateform.js @@ -262,7 +262,7 @@ class SecUserBlockingUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class SecUserBlockingUpdateForm extends Component { initialValue: selectedRow.who, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class SecUserBlockingUpdateForm extends Component { initialValue: selectedRow.comments, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/shippingspace/ShippingSpace.app.js b/bizui/src/bizcomponents/shippingspace/ShippingSpace.app.js index 65fff83ee..61c2afcd9 100644 --- a/bizui/src/bizcomponents/shippingspace/ShippingSpace.app.js +++ b/bizui/src/bizcomponents/shippingspace/ShippingSpace.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class ShippingSpaceBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class ShippingSpaceBizApp extends React.PureComponent { buildRouters = () =>{ const {ShippingSpaceDashboard} = GlobalComponents - const {ShippingSpacePreference} = GlobalComponents + const {ShippingSpacePermission} = GlobalComponents + const {ShippingSpaceProfile} = GlobalComponents const routers=[ {path:"/shippingSpace/:id/dashboard", component: ShippingSpaceDashboard}, - {path:"/shippingSpace/:id/preference", component: ShippingSpacePreference}, + {path:"/shippingSpace/:id/profile", component: ShippingSpaceProfile}, + {path:"/shippingSpace/:id/permission", component: ShippingSpacePermission}, diff --git a/bizui/src/bizcomponents/shippingspace/ShippingSpace.associateform.js b/bizui/src/bizcomponents/shippingspace/ShippingSpace.associateform.js index fdd68c007..0fe4f0178 100644 --- a/bizui/src/bizcomponents/shippingspace/ShippingSpace.associateform.js +++ b/bizui/src/bizcomponents/shippingspace/ShippingSpace.associateform.js @@ -21,8 +21,8 @@ const testValues = { location: '成都龙泉驿飞鹤路20号装货区', contactNumber: '02887654321', totalArea: '1876平方米', - latitude: '42.50065755354761', - longitude: '131.2983895011095', + latitude: '42.049580017940805', + longitude: '130.2573783914219', description: '每个收货区可以供一辆车装货', warehouseId: 'W000001', } @@ -144,7 +144,7 @@ class ShippingSpaceAssociateForm extends Component { {getFieldDecorator('location', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -154,7 +154,7 @@ class ShippingSpaceAssociateForm extends Component { {getFieldDecorator('contactNumber', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -164,7 +164,7 @@ class ShippingSpaceAssociateForm extends Component { {getFieldDecorator('totalArea', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -174,7 +174,7 @@ class ShippingSpaceAssociateForm extends Component { {getFieldDecorator('latitude', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -184,7 +184,7 @@ class ShippingSpaceAssociateForm extends Component { {getFieldDecorator('longitude', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -194,7 +194,7 @@ class ShippingSpaceAssociateForm extends Component { {getFieldDecorator('description', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/shippingspace/ShippingSpace.associateform.less b/bizui/src/bizcomponents/shippingspace/ShippingSpace.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/shippingspace/ShippingSpace.associateform.less +++ b/bizui/src/bizcomponents/shippingspace/ShippingSpace.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/shippingspace/ShippingSpace.base.js b/bizui/src/bizcomponents/shippingspace/ShippingSpace.base.js index 569a925d7..f37aff65f 100644 --- a/bizui/src/bizcomponents/shippingspace/ShippingSpace.base.js +++ b/bizui/src/bizcomponents/shippingspace/ShippingSpace.base.js @@ -1,95 +1,41 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"发货区", menuFor: "shippingSpace", subItems: [ - {name: 'goodsList', displayName:'货物', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'goodsList', displayName:'货物', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) - -} - -const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'shippingSpace') }, - { title: '位置', debugtype: 'string', dataIndex: 'location', width: '18',render: (text, record)=>renderTextCell(text,record) }, - { title: '联系电话', debugtype: 'string', dataIndex: 'contactNumber', width: '15',render: (text, record)=>renderTextCell(text,record) }, - { title: '总面积', debugtype: 'string', dataIndex: 'totalArea', width: '11',render: (text, record)=>renderTextCell(text,record) }, - { title: '仓库', dataIndex: 'warehouse', render: (text, record) => renderReferenceCell(text, record)}, - { title: '纬度', debugtype: 'double', dataIndex: 'latitude', width: '13',render: (text, record)=>renderTextCell(text,record) }, - { title: '经度', debugtype: 'double', dataIndex: 'longitude', width: '14',render: (text, record)=>renderTextCell(text,record) }, - { title: '描述', debugtype: 'string', dataIndex: 'description', width: '17',render: (text, record)=>renderTextCell(text,record) }, - { title: '最后更新时间', dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record) }, - -] - const fieldLabels = { id: '序号', location: '位置', @@ -103,8 +49,52 @@ const fieldLabels = { } +const displayColumns = [ + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'shippingSpace') , sorter: true }, + { title: fieldLabels.location, debugtype: 'string', dataIndex: 'location', width: '18',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.contactNumber, debugtype: 'string', dataIndex: 'contactNumber', width: '15',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.totalArea, debugtype: 'string', dataIndex: 'totalArea', width: '11',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.warehouse, dataIndex: 'warehouse', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.latitude, debugtype: 'double', dataIndex: 'latitude', width: '13',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.longitude, debugtype: 'double', dataIndex: 'longitude', width: '14',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.description, debugtype: 'string', dataIndex: 'description', width: '17',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.lastUpdateTime, dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record), sorter: true}, + +] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({shippingSpace,targetComponent})=>{ + + + + const {ShippingSpaceService} = GlobalComponents + // const userContext = null + return ( + +{shippingSpace.id} +{shippingSpace.location} +{shippingSpace.contactNumber} +{shippingSpace.totalArea} +{shippingSpace.warehouse==null?appLocaleName(userContext,"NotAssigned"):`${shippingSpace.warehouse.displayName}(${shippingSpace.warehouse.id})`} + + showTransferModel(targetComponent,"仓库","warehouse",ShippingSpaceService.requestCandidateWarehouse, + ShippingSpaceService.transferToAnotherWarehouse,"anotherWarehouseId",shippingSpace.warehouse?shippingSpace.warehouse.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{shippingSpace.latitude} +{shippingSpace.longitude} +{shippingSpace.description} +{ moment(shippingSpace.lastUpdateTime).format('YYYY-MM-DD')} + + {buildTransferModal(shippingSpace,targetComponent)} + + ) + +} + + + -const ShippingSpaceBase={menuData,displayColumns,fieldLabels} +const ShippingSpaceBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default ShippingSpaceBase diff --git a/bizui/src/bizcomponents/shippingspace/ShippingSpace.createform.js b/bizui/src/bizcomponents/shippingspace/ShippingSpace.createform.js index e96e237b0..8ed8867d9 100644 --- a/bizui/src/bizcomponents/shippingspace/ShippingSpace.createform.js +++ b/bizui/src/bizcomponents/shippingspace/ShippingSpace.createform.js @@ -20,8 +20,8 @@ const testValues = { location: '成都龙泉驿飞鹤路20号装货区', contactNumber: '02887654321', totalArea: '1876平方米', - latitude: '39.90297670715033', - longitude: '130.64832658523216', + latitude: '42.10559921938888', + longitude: '132.232373651481', description: '每个收货区可以供一辆车装货', warehouseId: 'W000001', } @@ -212,7 +212,7 @@ class ShippingSpaceCreateForm extends Component { {getFieldDecorator('location', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -222,7 +222,7 @@ class ShippingSpaceCreateForm extends Component { {getFieldDecorator('contactNumber', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -232,7 +232,7 @@ class ShippingSpaceCreateForm extends Component { {getFieldDecorator('totalArea', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -242,7 +242,7 @@ class ShippingSpaceCreateForm extends Component { {getFieldDecorator('latitude', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -252,7 +252,7 @@ class ShippingSpaceCreateForm extends Component { {getFieldDecorator('longitude', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -262,7 +262,7 @@ class ShippingSpaceCreateForm extends Component { {getFieldDecorator('description', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/shippingspace/ShippingSpace.dashboard.js b/bizui/src/bizcomponents/shippingspace/ShippingSpace.dashboard.js index e93f91537..d4154d945 100644 --- a/bizui/src/bizcomponents/shippingspace/ShippingSpace.dashboard.js +++ b/bizui/src/bizcomponents/shippingspace/ShippingSpace.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -148,6 +148,7 @@ class ShippingSpaceDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -156,13 +157,17 @@ class ShippingSpaceDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/shippingspace/ShippingSpace.model.js b/bizui/src/bizcomponents/shippingspace/ShippingSpace.model.js index 63cc04435..7b2199486 100644 --- a/bizui/src/bizcomponents/shippingspace/ShippingSpace.model.js +++ b/bizui/src/bizcomponents/shippingspace/ShippingSpace.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/shippingSpace/${id}/list/\GoodsList/货物+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/shippingSpace/${id}/list/GoodsList/货物+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateGoods({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/shippingSpace/${id}/list/\GoodsList/货物列表`, state: newPlayload } + const location = { pathname: `/shippingSpace/${id}/list/GoodsList/货物列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextGoodsUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/shippingspace/ShippingSpace.permission.js b/bizui/src/bizcomponents/shippingspace/ShippingSpace.permission.js new file mode 100644 index 000000000..3bf69378e --- /dev/null +++ b/bizui/src/bizcomponents/shippingspace/ShippingSpace.permission.js @@ -0,0 +1,90 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './ShippingSpace.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (shippingSpace,targetComponent) =>{ + const userContext = null + return ( + +{shippingSpace.id} +{shippingSpace.location} +{shippingSpace.contactNumber} +{shippingSpace.totalArea} +{shippingSpace.latitude} +{shippingSpace.longitude} +{shippingSpace.description} +{ moment(shippingSpace.lastUpdateTime).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = shippingSpace => { + const {ShippingSpaceBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class ShippingSpacePermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const shippingSpace = this.props.shippingSpace; + const { id,displayName, goodsCount } = shippingSpace + const cardsData = {cardsName:"发货区",cardsFor: "shippingSpace",cardsSource: shippingSpace, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + shippingSpace: state._shippingSpace, +}))(Form.create()(ShippingSpacePermission)) + diff --git a/bizui/src/bizcomponents/shippingspace/ShippingSpace.permission.less b/bizui/src/bizcomponents/shippingspace/ShippingSpace.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/shippingspace/ShippingSpace.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/shippingspace/ShippingSpace.preference.js b/bizui/src/bizcomponents/shippingspace/ShippingSpace.preference.js index 01d5927f0..b49b76092 100644 --- a/bizui/src/bizcomponents/shippingspace/ShippingSpace.preference.js +++ b/bizui/src/bizcomponents/shippingspace/ShippingSpace.preference.js @@ -311,8 +311,12 @@ class ShippingSpacePreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, goodsCount } = this.props.shippingSpace - const cardsData = {cardsName:"发货区",cardsFor: "shippingSpace",cardsSource: this.props.shippingSpace, + const shippingSpace = this.props.shippingSpace; + const { id,displayName, goodsCount } = shippingSpace + + + + const cardsData = {cardsName:"发货区",cardsFor: "shippingSpace",cardsSource: shippingSpace, subItems: [ ], diff --git a/bizui/src/bizcomponents/shippingspace/ShippingSpace.profile.js b/bizui/src/bizcomponents/shippingspace/ShippingSpace.profile.js new file mode 100644 index 000000000..7d1e3bbb4 --- /dev/null +++ b/bizui/src/bizcomponents/shippingspace/ShippingSpace.profile.js @@ -0,0 +1,97 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './ShippingSpace.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (shippingSpace,targetComponent) =>{ + const userContext = null + return ( + +{shippingSpace.id} +{shippingSpace.location} +{shippingSpace.contactNumber} +{shippingSpace.totalArea} +{shippingSpace.latitude} +{shippingSpace.longitude} +{shippingSpace.description} +{ moment(shippingSpace.lastUpdateTime).format('YYYY-MM-DD')} + + + ) +} + + + +class ShippingSpaceProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const shippingSpace = this.props.shippingSpace; + const { id,displayName, goodsCount } = shippingSpace + + const cardsData = {cardsName:"发货区",cardsFor: "shippingSpace",cardsSource: shippingSpace, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + shippingSpace: state._shippingSpace, +}))(Form.create()(ShippingSpaceProfile)) + diff --git a/bizui/src/bizcomponents/shippingspace/ShippingSpace.profile.less b/bizui/src/bizcomponents/shippingspace/ShippingSpace.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/shippingspace/ShippingSpace.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/shippingspace/ShippingSpace.search.js b/bizui/src/bizcomponents/shippingspace/ShippingSpace.search.js index 249e286a8..1d316f56f 100644 --- a/bizui/src/bizcomponents/shippingspace/ShippingSpace.search.js +++ b/bizui/src/bizcomponents/shippingspace/ShippingSpace.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/shippingspace/ShippingSpace.searchform.js b/bizui/src/bizcomponents/shippingspace/ShippingSpace.searchform.js index 83c7a2654..acc70f1e7 100644 --- a/bizui/src/bizcomponents/shippingspace/ShippingSpace.searchform.js +++ b/bizui/src/bizcomponents/shippingspace/ShippingSpace.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`shippingSpaceList.searchField`] = fieldName - value[`shippingSpaceList.searchVerb`] = searchVerb - value[`shippingSpaceList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,14 +127,15 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'location')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'contactNumber')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'totalArea')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'warehouse')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'description')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'location')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'contactNumber')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'totalArea')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'warehouse')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'description')) console.log("the final parameter", paramList) @@ -150,11 +151,12 @@ componentDidMount() { } - params['shippingSpaceList'] = 1 - params['shippingSpaceList.orderBy.0'] = "id" - params['shippingSpaceList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -209,8 +211,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -304,8 +306,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/shippingspace/ShippingSpace.table.js b/bizui/src/bizcomponents/shippingspace/ShippingSpace.table.js index 2aabb0fcb..771ba7356 100644 --- a/bizui/src/bizcomponents/shippingspace/ShippingSpace.table.js +++ b/bizui/src/bizcomponents/shippingspace/ShippingSpace.table.js @@ -40,24 +40,53 @@ class ShippingSpaceTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = ShippingSpaceBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class ShippingSpaceTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class ShippingSpaceTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/shippingspace/ShippingSpace.updateform.js b/bizui/src/bizcomponents/shippingspace/ShippingSpace.updateform.js index 6a1a681c5..99537fddf 100644 --- a/bizui/src/bizcomponents/shippingspace/ShippingSpace.updateform.js +++ b/bizui/src/bizcomponents/shippingspace/ShippingSpace.updateform.js @@ -262,7 +262,7 @@ class ShippingSpaceUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class ShippingSpaceUpdateForm extends Component { initialValue: selectedRow.location, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class ShippingSpaceUpdateForm extends Component { initialValue: selectedRow.contactNumber, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -298,7 +298,7 @@ class ShippingSpaceUpdateForm extends Component { initialValue: selectedRow.totalArea, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -310,7 +310,7 @@ class ShippingSpaceUpdateForm extends Component { initialValue: selectedRow.latitude, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -322,7 +322,7 @@ class ShippingSpaceUpdateForm extends Component { initialValue: selectedRow.longitude, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -334,7 +334,7 @@ class ShippingSpaceUpdateForm extends Component { initialValue: selectedRow.description, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/skilltype/SkillType.app.js b/bizui/src/bizcomponents/skilltype/SkillType.app.js index e9de171f6..2ca86a541 100644 --- a/bizui/src/bizcomponents/skilltype/SkillType.app.js +++ b/bizui/src/bizcomponents/skilltype/SkillType.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class SkillTypeBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class SkillTypeBizApp extends React.PureComponent { buildRouters = () =>{ const {SkillTypeDashboard} = GlobalComponents - const {SkillTypePreference} = GlobalComponents + const {SkillTypePermission} = GlobalComponents + const {SkillTypeProfile} = GlobalComponents const routers=[ {path:"/skillType/:id/dashboard", component: SkillTypeDashboard}, - {path:"/skillType/:id/preference", component: SkillTypePreference}, + {path:"/skillType/:id/profile", component: SkillTypeProfile}, + {path:"/skillType/:id/permission", component: SkillTypePermission}, diff --git a/bizui/src/bizcomponents/skilltype/SkillType.associateform.js b/bizui/src/bizcomponents/skilltype/SkillType.associateform.js index be8ebbeab..13c49461d 100644 --- a/bizui/src/bizcomponents/skilltype/SkillType.associateform.js +++ b/bizui/src/bizcomponents/skilltype/SkillType.associateform.js @@ -140,7 +140,7 @@ class SkillTypeAssociateForm extends Component { {getFieldDecorator('code', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -150,7 +150,7 @@ class SkillTypeAssociateForm extends Component { {getFieldDecorator('description', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/skilltype/SkillType.associateform.less b/bizui/src/bizcomponents/skilltype/SkillType.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/skilltype/SkillType.associateform.less +++ b/bizui/src/bizcomponents/skilltype/SkillType.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/skilltype/SkillType.base.js b/bizui/src/bizcomponents/skilltype/SkillType.base.js index 7a65cb250..c6ff6be70 100644 --- a/bizui/src/bizcomponents/skilltype/SkillType.base.js +++ b/bizui/src/bizcomponents/skilltype/SkillType.base.js @@ -1,100 +1,79 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"技能类型", menuFor: "skillType", subItems: [ - {name: 'employeeSkillList', displayName:'员工技能', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'employeeSkillList', displayName:'员工技能', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + code: '代码', + company: '公司', + description: '描述', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'skillType') }, - { title: '代码', debugtype: 'string', dataIndex: 'code', width: '9',render: (text, record)=>renderTextCell(text,record) }, - { title: '公司', dataIndex: 'company', render: (text, record) => renderReferenceCell(text, record)}, - { title: '描述', debugtype: 'string', dataIndex: 'description', width: '10',render: (text, record)=>renderTextCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'skillType') , sorter: true }, + { title: fieldLabels.code, debugtype: 'string', dataIndex: 'code', width: '9',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.company, dataIndex: 'company', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.description, debugtype: 'string', dataIndex: 'description', width: '10',render: (text, record)=>renderTextCell(text,record)}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({skillType,targetComponent})=>{ -const fieldLabels = { - id: '序号', - code: '代码', - company: '公司', - description: '描述', + + + const {SkillTypeService} = GlobalComponents + // const userContext = null + return ( + +{skillType.id} +{skillType.code} +{skillType.description} + + {buildTransferModal(skillType,targetComponent)} + + ) } + + -const SkillTypeBase={menuData,displayColumns,fieldLabels} +const SkillTypeBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default SkillTypeBase diff --git a/bizui/src/bizcomponents/skilltype/SkillType.createform.js b/bizui/src/bizcomponents/skilltype/SkillType.createform.js index 234d34aa6..7514e01e6 100644 --- a/bizui/src/bizcomponents/skilltype/SkillType.createform.js +++ b/bizui/src/bizcomponents/skilltype/SkillType.createform.js @@ -208,7 +208,7 @@ class SkillTypeCreateForm extends Component { {getFieldDecorator('code', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -218,7 +218,7 @@ class SkillTypeCreateForm extends Component { {getFieldDecorator('description', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/skilltype/SkillType.dashboard.js b/bizui/src/bizcomponents/skilltype/SkillType.dashboard.js index 1e282a675..3689a5d0c 100644 --- a/bizui/src/bizcomponents/skilltype/SkillType.dashboard.js +++ b/bizui/src/bizcomponents/skilltype/SkillType.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -137,6 +137,7 @@ class SkillTypeDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -145,13 +146,17 @@ class SkillTypeDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/skilltype/SkillType.model.js b/bizui/src/bizcomponents/skilltype/SkillType.model.js index 51878edff..09472e420 100644 --- a/bizui/src/bizcomponents/skilltype/SkillType.model.js +++ b/bizui/src/bizcomponents/skilltype/SkillType.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/skillType/${id}/list/\EmployeeSkillList/员工技能+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/skillType/${id}/list/EmployeeSkillList/员工技能+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateEmployeeSkill({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/skillType/${id}/list/\EmployeeSkillList/员工技能列表`, state: newPlayload } + const location = { pathname: `/skillType/${id}/list/EmployeeSkillList/员工技能列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextEmployeeSkillUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/skilltype/SkillType.permission.js b/bizui/src/bizcomponents/skilltype/SkillType.permission.js new file mode 100644 index 000000000..f3daa1cf4 --- /dev/null +++ b/bizui/src/bizcomponents/skilltype/SkillType.permission.js @@ -0,0 +1,85 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './SkillType.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (skillType,targetComponent) =>{ + const userContext = null + return ( + +{skillType.id} +{skillType.code} +{skillType.description} + + + ) +} + + +const renderPermissionSetting = skillType => { + const {SkillTypeBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class SkillTypePermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const skillType = this.props.skillType; + const { id,displayName, employeeSkillCount } = skillType + const cardsData = {cardsName:"技能类型",cardsFor: "skillType",cardsSource: skillType, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + skillType: state._skillType, +}))(Form.create()(SkillTypePermission)) + diff --git a/bizui/src/bizcomponents/skilltype/SkillType.permission.less b/bizui/src/bizcomponents/skilltype/SkillType.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/skilltype/SkillType.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/skilltype/SkillType.preference.js b/bizui/src/bizcomponents/skilltype/SkillType.preference.js index 4dd3eb240..18f865d6c 100644 --- a/bizui/src/bizcomponents/skilltype/SkillType.preference.js +++ b/bizui/src/bizcomponents/skilltype/SkillType.preference.js @@ -300,8 +300,12 @@ class SkillTypePreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, employeeSkillCount } = this.props.skillType - const cardsData = {cardsName:"技能类型",cardsFor: "skillType",cardsSource: this.props.skillType, + const skillType = this.props.skillType; + const { id,displayName, employeeSkillCount } = skillType + + + + const cardsData = {cardsName:"技能类型",cardsFor: "skillType",cardsSource: skillType, subItems: [ ], diff --git a/bizui/src/bizcomponents/skilltype/SkillType.profile.js b/bizui/src/bizcomponents/skilltype/SkillType.profile.js new file mode 100644 index 000000000..d8821d913 --- /dev/null +++ b/bizui/src/bizcomponents/skilltype/SkillType.profile.js @@ -0,0 +1,92 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './SkillType.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (skillType,targetComponent) =>{ + const userContext = null + return ( + +{skillType.id} +{skillType.code} +{skillType.description} + + + ) +} + + + +class SkillTypeProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const skillType = this.props.skillType; + const { id,displayName, employeeSkillCount } = skillType + + const cardsData = {cardsName:"技能类型",cardsFor: "skillType",cardsSource: skillType, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + skillType: state._skillType, +}))(Form.create()(SkillTypeProfile)) + diff --git a/bizui/src/bizcomponents/skilltype/SkillType.profile.less b/bizui/src/bizcomponents/skilltype/SkillType.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/skilltype/SkillType.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/skilltype/SkillType.search.js b/bizui/src/bizcomponents/skilltype/SkillType.search.js index 2a3e8581e..42e353383 100644 --- a/bizui/src/bizcomponents/skilltype/SkillType.search.js +++ b/bizui/src/bizcomponents/skilltype/SkillType.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/skilltype/SkillType.searchform.js b/bizui/src/bizcomponents/skilltype/SkillType.searchform.js index be9c6f767..e2b7884a8 100644 --- a/bizui/src/bizcomponents/skilltype/SkillType.searchform.js +++ b/bizui/src/bizcomponents/skilltype/SkillType.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`skillTypeList.searchField`] = fieldName - value[`skillTypeList.searchVerb`] = searchVerb - value[`skillTypeList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,12 +127,13 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'code')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'company')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'description')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'code')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'company')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'description')) console.log("the final parameter", paramList) @@ -148,11 +149,12 @@ componentDidMount() { } - params['skillTypeList'] = 1 - params['skillTypeList.orderBy.0'] = "id" - params['skillTypeList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -207,8 +209,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -286,8 +288,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/skilltype/SkillType.table.js b/bizui/src/bizcomponents/skilltype/SkillType.table.js index 782f7d7d2..74ef08be7 100644 --- a/bizui/src/bizcomponents/skilltype/SkillType.table.js +++ b/bizui/src/bizcomponents/skilltype/SkillType.table.js @@ -40,24 +40,53 @@ class SkillTypeTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = SkillTypeBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class SkillTypeTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class SkillTypeTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/skilltype/SkillType.updateform.js b/bizui/src/bizcomponents/skilltype/SkillType.updateform.js index 9b085ced3..9ed56bbb1 100644 --- a/bizui/src/bizcomponents/skilltype/SkillType.updateform.js +++ b/bizui/src/bizcomponents/skilltype/SkillType.updateform.js @@ -261,7 +261,7 @@ class SkillTypeUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class SkillTypeUpdateForm extends Component { initialValue: selectedRow.code, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -285,7 +285,7 @@ class SkillTypeUpdateForm extends Component { initialValue: selectedRow.description, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/sku/Sku.app.js b/bizui/src/bizcomponents/sku/Sku.app.js index 4fb55b054..5b8b91996 100644 --- a/bizui/src/bizcomponents/sku/Sku.app.js +++ b/bizui/src/bizcomponents/sku/Sku.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class SkuBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class SkuBizApp extends React.PureComponent { buildRouters = () =>{ const {SkuDashboard} = GlobalComponents - const {SkuPreference} = GlobalComponents + const {SkuPermission} = GlobalComponents + const {SkuProfile} = GlobalComponents const routers=[ {path:"/sku/:id/dashboard", component: SkuDashboard}, - {path:"/sku/:id/preference", component: SkuPreference}, + {path:"/sku/:id/profile", component: SkuProfile}, + {path:"/sku/:id/permission", component: SkuPermission}, diff --git a/bizui/src/bizcomponents/sku/Sku.associateform.js b/bizui/src/bizcomponents/sku/Sku.associateform.js index c41cba610..c7e245c10 100644 --- a/bizui/src/bizcomponents/sku/Sku.associateform.js +++ b/bizui/src/bizcomponents/sku/Sku.associateform.js @@ -23,7 +23,7 @@ const testValues = { barcode: 'TM00000000001', packageType: '包装类型', netContent: '包装数量等信息,包装数量等信息,包装数量等信息', - price: '970.99', + price: '1223.96', productId: 'P000001', } */ @@ -145,7 +145,7 @@ class SkuAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -155,7 +155,7 @@ class SkuAssociateForm extends Component { {getFieldDecorator('size', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -165,7 +165,7 @@ class SkuAssociateForm extends Component { {getFieldDecorator('barcode', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -175,7 +175,7 @@ class SkuAssociateForm extends Component { {getFieldDecorator('packageType', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -185,7 +185,7 @@ class SkuAssociateForm extends Component { {getFieldDecorator('netContent', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -195,7 +195,7 @@ class SkuAssociateForm extends Component { {getFieldDecorator('price', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/sku/Sku.associateform.less b/bizui/src/bizcomponents/sku/Sku.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/sku/Sku.associateform.less +++ b/bizui/src/bizcomponents/sku/Sku.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/sku/Sku.base.js b/bizui/src/bizcomponents/sku/Sku.base.js index 82a3bc117..c25722f16 100644 --- a/bizui/src/bizcomponents/sku/Sku.base.js +++ b/bizui/src/bizcomponents/sku/Sku.base.js @@ -1,95 +1,41 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"SKU", menuFor: "sku", subItems: [ - {name: 'goodsList', displayName:'货物', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'goodsList', displayName:'货物', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) - -} - -const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'sku') }, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '10',render: (text, record)=>renderTextCell(text,record) }, - { title: '大小', debugtype: 'string', dataIndex: 'size', width: '5',render: (text, record)=>renderTextCell(text,record) }, - { title: '产品', dataIndex: 'product', render: (text, record) => renderReferenceCell(text, record)}, - { title: '条码', debugtype: 'string', dataIndex: 'barcode', width: '17',render: (text, record)=>renderTextCell(text,record) }, - { title: '包装类型', debugtype: 'string', dataIndex: 'packageType', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: '净含量', debugtype: 'string', dataIndex: 'netContent', width: '27',render: (text, record)=>renderTextCell(text,record) }, - { title: '价格', dataIndex: 'price', className:'money', render: (text, record) => renderMoneyCell(text, record) }, - { title: '图片', dataIndex: 'picture', render: (text, record) => renderImageCell(text,record,'图片') }, - -] - const fieldLabels = { id: '序号', name: '名称', @@ -103,8 +49,51 @@ const fieldLabels = { } +const displayColumns = [ + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'sku') , sorter: true }, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '10',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.size, debugtype: 'string', dataIndex: 'size', width: '5',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.product, dataIndex: 'product', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.barcode, debugtype: 'string', dataIndex: 'barcode', width: '17',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.packageType, debugtype: 'string', dataIndex: 'packageType', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.netContent, debugtype: 'string', dataIndex: 'netContent', width: '27',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.price, dataIndex: 'price', className:'money', render: (text, record) => renderMoneyCell(text, record), sorter: true }, + { title: fieldLabels.picture, dataIndex: 'picture', render: (text, record) => renderImageCell(text,record,'图片') }, + +] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({sku,targetComponent})=>{ + + + + const {SkuService} = GlobalComponents + // const userContext = null + return ( + +{sku.id} +{sku.name} +{sku.size} +{sku.product==null?appLocaleName(userContext,"NotAssigned"):`${sku.product.displayName}(${sku.product.id})`} + + showTransferModel(targetComponent,"产品","product",SkuService.requestCandidateProduct, + SkuService.transferToAnotherProduct,"anotherProductId",sku.product?sku.product.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{sku.barcode} +{sku.packageType} +{sku.netContent} +{sku.price} + + {buildTransferModal(sku,targetComponent)} + + ) + +} + + + -const SkuBase={menuData,displayColumns,fieldLabels} +const SkuBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default SkuBase diff --git a/bizui/src/bizcomponents/sku/Sku.createform.js b/bizui/src/bizcomponents/sku/Sku.createform.js index f6a54f5d4..6f7560fd0 100644 --- a/bizui/src/bizcomponents/sku/Sku.createform.js +++ b/bizui/src/bizcomponents/sku/Sku.createform.js @@ -22,7 +22,7 @@ const testValues = { barcode: 'TM00000000001', packageType: '包装类型', netContent: '包装数量等信息,包装数量等信息,包装数量等信息', - price: '1078.24', + price: '1251.07', productId: 'P000001', } */ @@ -213,7 +213,7 @@ class SkuCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -223,7 +223,7 @@ class SkuCreateForm extends Component { {getFieldDecorator('size', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -233,7 +233,7 @@ class SkuCreateForm extends Component { {getFieldDecorator('barcode', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -243,7 +243,7 @@ class SkuCreateForm extends Component { {getFieldDecorator('packageType', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -253,7 +253,7 @@ class SkuCreateForm extends Component { {getFieldDecorator('netContent', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -263,7 +263,7 @@ class SkuCreateForm extends Component { {getFieldDecorator('price', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/sku/Sku.dashboard.js b/bizui/src/bizcomponents/sku/Sku.dashboard.js index fb6f94379..f7b1eff99 100644 --- a/bizui/src/bizcomponents/sku/Sku.dashboard.js +++ b/bizui/src/bizcomponents/sku/Sku.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -148,6 +148,7 @@ class SkuDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -156,13 +157,17 @@ class SkuDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/sku/Sku.model.js b/bizui/src/bizcomponents/sku/Sku.model.js index 2f4d18a0d..23f5c517a 100644 --- a/bizui/src/bizcomponents/sku/Sku.model.js +++ b/bizui/src/bizcomponents/sku/Sku.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/sku/${id}/list/\GoodsList/货物+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/sku/${id}/list/GoodsList/货物+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateGoods({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/sku/${id}/list/\GoodsList/货物列表`, state: newPlayload } + const location = { pathname: `/sku/${id}/list/GoodsList/货物列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextGoodsUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/sku/Sku.permission.js b/bizui/src/bizcomponents/sku/Sku.permission.js new file mode 100644 index 000000000..433eabcf8 --- /dev/null +++ b/bizui/src/bizcomponents/sku/Sku.permission.js @@ -0,0 +1,89 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './Sku.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (sku,targetComponent) =>{ + const userContext = null + return ( + +{sku.id} +{sku.name} +{sku.size} +{sku.barcode} +{sku.packageType} +{sku.netContent} +{sku.price} + + + ) +} + + +const renderPermissionSetting = sku => { + const {SkuBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class SkuPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const sku = this.props.sku; + const { id,displayName, goodsCount } = sku + const cardsData = {cardsName:"SKU",cardsFor: "sku",cardsSource: sku, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + sku: state._sku, +}))(Form.create()(SkuPermission)) + diff --git a/bizui/src/bizcomponents/sku/Sku.permission.less b/bizui/src/bizcomponents/sku/Sku.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/sku/Sku.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/sku/Sku.preference.js b/bizui/src/bizcomponents/sku/Sku.preference.js index 902e0205d..51fbeff7d 100644 --- a/bizui/src/bizcomponents/sku/Sku.preference.js +++ b/bizui/src/bizcomponents/sku/Sku.preference.js @@ -311,8 +311,12 @@ class SkuPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, goodsCount } = this.props.sku - const cardsData = {cardsName:"SKU",cardsFor: "sku",cardsSource: this.props.sku, + const sku = this.props.sku; + const { id,displayName, goodsCount } = sku + + + + const cardsData = {cardsName:"SKU",cardsFor: "sku",cardsSource: sku, subItems: [ ], diff --git a/bizui/src/bizcomponents/sku/Sku.profile.js b/bizui/src/bizcomponents/sku/Sku.profile.js new file mode 100644 index 000000000..78f859736 --- /dev/null +++ b/bizui/src/bizcomponents/sku/Sku.profile.js @@ -0,0 +1,96 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './Sku.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (sku,targetComponent) =>{ + const userContext = null + return ( + +{sku.id} +{sku.name} +{sku.size} +{sku.barcode} +{sku.packageType} +{sku.netContent} +{sku.price} + + + ) +} + + + +class SkuProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const sku = this.props.sku; + const { id,displayName, goodsCount } = sku + + const cardsData = {cardsName:"SKU",cardsFor: "sku",cardsSource: sku, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + sku: state._sku, +}))(Form.create()(SkuProfile)) + diff --git a/bizui/src/bizcomponents/sku/Sku.profile.less b/bizui/src/bizcomponents/sku/Sku.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/sku/Sku.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/sku/Sku.search.js b/bizui/src/bizcomponents/sku/Sku.search.js index 1f7ff53de..9e96b0e61 100644 --- a/bizui/src/bizcomponents/sku/Sku.search.js +++ b/bizui/src/bizcomponents/sku/Sku.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/sku/Sku.searchform.js b/bizui/src/bizcomponents/sku/Sku.searchform.js index 404770734..fad20210d 100644 --- a/bizui/src/bizcomponents/sku/Sku.searchform.js +++ b/bizui/src/bizcomponents/sku/Sku.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`skuList.searchField`] = fieldName - value[`skuList.searchVerb`] = searchVerb - value[`skuList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,15 +127,16 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'size')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'product')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'barcode')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'packageType')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'netContent')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'size')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'product')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'barcode')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'packageType')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'netContent')) console.log("the final parameter", paramList) @@ -151,11 +152,12 @@ componentDidMount() { } - params['skuList'] = 1 - params['skuList.orderBy.0'] = "id" - params['skuList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -210,8 +212,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -313,8 +315,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/sku/Sku.table.js b/bizui/src/bizcomponents/sku/Sku.table.js index 3e323a18f..f083735f2 100644 --- a/bizui/src/bizcomponents/sku/Sku.table.js +++ b/bizui/src/bizcomponents/sku/Sku.table.js @@ -40,24 +40,53 @@ class SkuTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = SkuBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class SkuTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class SkuTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/sku/Sku.updateform.js b/bizui/src/bizcomponents/sku/Sku.updateform.js index e2e233bcc..97f02e1f9 100644 --- a/bizui/src/bizcomponents/sku/Sku.updateform.js +++ b/bizui/src/bizcomponents/sku/Sku.updateform.js @@ -262,7 +262,7 @@ class SkuUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class SkuUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class SkuUpdateForm extends Component { initialValue: selectedRow.size, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -298,7 +298,7 @@ class SkuUpdateForm extends Component { initialValue: selectedRow.barcode, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -310,7 +310,7 @@ class SkuUpdateForm extends Component { initialValue: selectedRow.packageType, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -322,7 +322,7 @@ class SkuUpdateForm extends Component { initialValue: selectedRow.netContent, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -334,7 +334,7 @@ class SkuUpdateForm extends Component { initialValue: selectedRow.price, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/smartpallet/SmartPallet.app.js b/bizui/src/bizcomponents/smartpallet/SmartPallet.app.js index eaa012f20..27997d536 100644 --- a/bizui/src/bizcomponents/smartpallet/SmartPallet.app.js +++ b/bizui/src/bizcomponents/smartpallet/SmartPallet.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class SmartPalletBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class SmartPalletBizApp extends React.PureComponent { buildRouters = () =>{ const {SmartPalletDashboard} = GlobalComponents - const {SmartPalletPreference} = GlobalComponents + const {SmartPalletPermission} = GlobalComponents + const {SmartPalletProfile} = GlobalComponents const routers=[ {path:"/smartPallet/:id/dashboard", component: SmartPalletDashboard}, - {path:"/smartPallet/:id/preference", component: SmartPalletPreference}, + {path:"/smartPallet/:id/profile", component: SmartPalletProfile}, + {path:"/smartPallet/:id/permission", component: SmartPalletPermission}, diff --git a/bizui/src/bizcomponents/smartpallet/SmartPallet.associateform.js b/bizui/src/bizcomponents/smartpallet/SmartPallet.associateform.js index 941121d52..a8e4903f1 100644 --- a/bizui/src/bizcomponents/smartpallet/SmartPallet.associateform.js +++ b/bizui/src/bizcomponents/smartpallet/SmartPallet.associateform.js @@ -21,8 +21,8 @@ const testValues = { location: '成都龙泉驿飞鹤路20号移动区域,比如过道,货运通道等', contactNumber: '02887654321', totalArea: '1876平方米', - latitude: '40.65321863060763', - longitude: '131.50945633955075', + latitude: '41.55112973917255', + longitude: '130.87341804976717', warehouseId: 'W000001', } */ @@ -143,7 +143,7 @@ class SmartPalletAssociateForm extends Component { {getFieldDecorator('location', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -153,7 +153,7 @@ class SmartPalletAssociateForm extends Component { {getFieldDecorator('contactNumber', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -163,7 +163,7 @@ class SmartPalletAssociateForm extends Component { {getFieldDecorator('totalArea', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -173,7 +173,7 @@ class SmartPalletAssociateForm extends Component { {getFieldDecorator('latitude', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -183,7 +183,7 @@ class SmartPalletAssociateForm extends Component { {getFieldDecorator('longitude', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/smartpallet/SmartPallet.associateform.less b/bizui/src/bizcomponents/smartpallet/SmartPallet.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/smartpallet/SmartPallet.associateform.less +++ b/bizui/src/bizcomponents/smartpallet/SmartPallet.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/smartpallet/SmartPallet.base.js b/bizui/src/bizcomponents/smartpallet/SmartPallet.base.js index 0febdca9b..b0ef4e93c 100644 --- a/bizui/src/bizcomponents/smartpallet/SmartPallet.base.js +++ b/bizui/src/bizcomponents/smartpallet/SmartPallet.base.js @@ -1,94 +1,41 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"智能托盘", menuFor: "smartPallet", subItems: [ - {name: 'goodsList', displayName:'货物', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'goodsList', displayName:'货物', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) - -} - -const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'smartPallet') }, - { title: '位置', debugtype: 'string', dataIndex: 'location', width: '30',render: (text, record)=>renderTextCell(text,record) }, - { title: '联系电话', debugtype: 'string', dataIndex: 'contactNumber', width: '15',render: (text, record)=>renderTextCell(text,record) }, - { title: '总面积', debugtype: 'string', dataIndex: 'totalArea', width: '11',render: (text, record)=>renderTextCell(text,record) }, - { title: '纬度', debugtype: 'double', dataIndex: 'latitude', width: '13',render: (text, record)=>renderTextCell(text,record) }, - { title: '经度', debugtype: 'double', dataIndex: 'longitude', width: '14',render: (text, record)=>renderTextCell(text,record) }, - { title: '仓库', dataIndex: 'warehouse', render: (text, record) => renderReferenceCell(text, record)}, - { title: '最后更新时间', dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record) }, - -] - const fieldLabels = { id: '序号', location: '位置', @@ -101,8 +48,50 @@ const fieldLabels = { } +const displayColumns = [ + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'smartPallet') , sorter: true }, + { title: fieldLabels.location, debugtype: 'string', dataIndex: 'location', width: '30',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.contactNumber, debugtype: 'string', dataIndex: 'contactNumber', width: '15',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.totalArea, debugtype: 'string', dataIndex: 'totalArea', width: '11',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.latitude, debugtype: 'double', dataIndex: 'latitude', width: '13',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.longitude, debugtype: 'double', dataIndex: 'longitude', width: '14',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.warehouse, dataIndex: 'warehouse', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.lastUpdateTime, dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record), sorter: true}, + +] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({smartPallet,targetComponent})=>{ + + + + const {SmartPalletService} = GlobalComponents + // const userContext = null + return ( + +{smartPallet.id} +{smartPallet.location} +{smartPallet.contactNumber} +{smartPallet.totalArea} +{smartPallet.latitude} +{smartPallet.longitude} +{smartPallet.warehouse==null?appLocaleName(userContext,"NotAssigned"):`${smartPallet.warehouse.displayName}(${smartPallet.warehouse.id})`} + + showTransferModel(targetComponent,"仓库","warehouse",SmartPalletService.requestCandidateWarehouse, + SmartPalletService.transferToAnotherWarehouse,"anotherWarehouseId",smartPallet.warehouse?smartPallet.warehouse.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{ moment(smartPallet.lastUpdateTime).format('YYYY-MM-DD')} + + {buildTransferModal(smartPallet,targetComponent)} + + ) + +} + + + -const SmartPalletBase={menuData,displayColumns,fieldLabels} +const SmartPalletBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default SmartPalletBase diff --git a/bizui/src/bizcomponents/smartpallet/SmartPallet.createform.js b/bizui/src/bizcomponents/smartpallet/SmartPallet.createform.js index 82df03300..97a5c613d 100644 --- a/bizui/src/bizcomponents/smartpallet/SmartPallet.createform.js +++ b/bizui/src/bizcomponents/smartpallet/SmartPallet.createform.js @@ -20,8 +20,8 @@ const testValues = { location: '成都龙泉驿飞鹤路20号移动区域,比如过道,货运通道等', contactNumber: '02887654321', totalArea: '1876平方米', - latitude: '39.83404282585694', - longitude: '130.95669725602605', + latitude: '40.75831525606565', + longitude: '132.08197369853298', warehouseId: 'W000001', } */ @@ -211,7 +211,7 @@ class SmartPalletCreateForm extends Component { {getFieldDecorator('location', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -221,7 +221,7 @@ class SmartPalletCreateForm extends Component { {getFieldDecorator('contactNumber', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -231,7 +231,7 @@ class SmartPalletCreateForm extends Component { {getFieldDecorator('totalArea', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -241,7 +241,7 @@ class SmartPalletCreateForm extends Component { {getFieldDecorator('latitude', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -251,7 +251,7 @@ class SmartPalletCreateForm extends Component { {getFieldDecorator('longitude', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/smartpallet/SmartPallet.dashboard.js b/bizui/src/bizcomponents/smartpallet/SmartPallet.dashboard.js index 175171604..9da1b5d4e 100644 --- a/bizui/src/bizcomponents/smartpallet/SmartPallet.dashboard.js +++ b/bizui/src/bizcomponents/smartpallet/SmartPallet.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -147,6 +147,7 @@ class SmartPalletDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -155,13 +156,17 @@ class SmartPalletDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/smartpallet/SmartPallet.model.js b/bizui/src/bizcomponents/smartpallet/SmartPallet.model.js index 6173f53cb..6c9c0ba0d 100644 --- a/bizui/src/bizcomponents/smartpallet/SmartPallet.model.js +++ b/bizui/src/bizcomponents/smartpallet/SmartPallet.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/smartPallet/${id}/list/\GoodsList/货物+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/smartPallet/${id}/list/GoodsList/货物+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateGoods({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/smartPallet/${id}/list/\GoodsList/货物列表`, state: newPlayload } + const location = { pathname: `/smartPallet/${id}/list/GoodsList/货物列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextGoodsUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/smartpallet/SmartPallet.permission.js b/bizui/src/bizcomponents/smartpallet/SmartPallet.permission.js new file mode 100644 index 000000000..a3cc4252b --- /dev/null +++ b/bizui/src/bizcomponents/smartpallet/SmartPallet.permission.js @@ -0,0 +1,89 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './SmartPallet.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (smartPallet,targetComponent) =>{ + const userContext = null + return ( + +{smartPallet.id} +{smartPallet.location} +{smartPallet.contactNumber} +{smartPallet.totalArea} +{smartPallet.latitude} +{smartPallet.longitude} +{ moment(smartPallet.lastUpdateTime).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = smartPallet => { + const {SmartPalletBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class SmartPalletPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const smartPallet = this.props.smartPallet; + const { id,displayName, goodsCount } = smartPallet + const cardsData = {cardsName:"智能托盘",cardsFor: "smartPallet",cardsSource: smartPallet, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + smartPallet: state._smartPallet, +}))(Form.create()(SmartPalletPermission)) + diff --git a/bizui/src/bizcomponents/smartpallet/SmartPallet.permission.less b/bizui/src/bizcomponents/smartpallet/SmartPallet.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/smartpallet/SmartPallet.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/smartpallet/SmartPallet.preference.js b/bizui/src/bizcomponents/smartpallet/SmartPallet.preference.js index 7e436dfc2..b617442d4 100644 --- a/bizui/src/bizcomponents/smartpallet/SmartPallet.preference.js +++ b/bizui/src/bizcomponents/smartpallet/SmartPallet.preference.js @@ -310,8 +310,12 @@ class SmartPalletPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, goodsCount } = this.props.smartPallet - const cardsData = {cardsName:"智能托盘",cardsFor: "smartPallet",cardsSource: this.props.smartPallet, + const smartPallet = this.props.smartPallet; + const { id,displayName, goodsCount } = smartPallet + + + + const cardsData = {cardsName:"智能托盘",cardsFor: "smartPallet",cardsSource: smartPallet, subItems: [ ], diff --git a/bizui/src/bizcomponents/smartpallet/SmartPallet.profile.js b/bizui/src/bizcomponents/smartpallet/SmartPallet.profile.js new file mode 100644 index 000000000..8a2c883d2 --- /dev/null +++ b/bizui/src/bizcomponents/smartpallet/SmartPallet.profile.js @@ -0,0 +1,96 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './SmartPallet.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (smartPallet,targetComponent) =>{ + const userContext = null + return ( + +{smartPallet.id} +{smartPallet.location} +{smartPallet.contactNumber} +{smartPallet.totalArea} +{smartPallet.latitude} +{smartPallet.longitude} +{ moment(smartPallet.lastUpdateTime).format('YYYY-MM-DD')} + + + ) +} + + + +class SmartPalletProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const smartPallet = this.props.smartPallet; + const { id,displayName, goodsCount } = smartPallet + + const cardsData = {cardsName:"智能托盘",cardsFor: "smartPallet",cardsSource: smartPallet, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + smartPallet: state._smartPallet, +}))(Form.create()(SmartPalletProfile)) + diff --git a/bizui/src/bizcomponents/smartpallet/SmartPallet.profile.less b/bizui/src/bizcomponents/smartpallet/SmartPallet.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/smartpallet/SmartPallet.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/smartpallet/SmartPallet.search.js b/bizui/src/bizcomponents/smartpallet/SmartPallet.search.js index 690e5b605..21b995c54 100644 --- a/bizui/src/bizcomponents/smartpallet/SmartPallet.search.js +++ b/bizui/src/bizcomponents/smartpallet/SmartPallet.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/smartpallet/SmartPallet.searchform.js b/bizui/src/bizcomponents/smartpallet/SmartPallet.searchform.js index 294f44a28..300b52b59 100644 --- a/bizui/src/bizcomponents/smartpallet/SmartPallet.searchform.js +++ b/bizui/src/bizcomponents/smartpallet/SmartPallet.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`smartPalletList.searchField`] = fieldName - value[`smartPalletList.searchVerb`] = searchVerb - value[`smartPalletList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,13 +127,14 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'location')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'contactNumber')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'totalArea')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'warehouse')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'location')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'contactNumber')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'totalArea')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'warehouse')) console.log("the final parameter", paramList) @@ -149,11 +150,12 @@ componentDidMount() { } - params['smartPalletList'] = 1 - params['smartPalletList.orderBy.0'] = "id" - params['smartPalletList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -208,8 +210,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -295,8 +297,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/smartpallet/SmartPallet.table.js b/bizui/src/bizcomponents/smartpallet/SmartPallet.table.js index c7bd13704..7a8f6ccb1 100644 --- a/bizui/src/bizcomponents/smartpallet/SmartPallet.table.js +++ b/bizui/src/bizcomponents/smartpallet/SmartPallet.table.js @@ -40,24 +40,53 @@ class SmartPalletTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = SmartPalletBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class SmartPalletTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class SmartPalletTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/smartpallet/SmartPallet.updateform.js b/bizui/src/bizcomponents/smartpallet/SmartPallet.updateform.js index 27892440e..f078df530 100644 --- a/bizui/src/bizcomponents/smartpallet/SmartPallet.updateform.js +++ b/bizui/src/bizcomponents/smartpallet/SmartPallet.updateform.js @@ -262,7 +262,7 @@ class SmartPalletUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class SmartPalletUpdateForm extends Component { initialValue: selectedRow.location, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class SmartPalletUpdateForm extends Component { initialValue: selectedRow.contactNumber, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -298,7 +298,7 @@ class SmartPalletUpdateForm extends Component { initialValue: selectedRow.totalArea, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -310,7 +310,7 @@ class SmartPalletUpdateForm extends Component { initialValue: selectedRow.latitude, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -322,7 +322,7 @@ class SmartPalletUpdateForm extends Component { initialValue: selectedRow.longitude, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.app.js b/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.app.js index 098ff7023..4857c4fd8 100644 --- a/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.app.js +++ b/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class StockCountIssueTrackBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -157,12 +166,14 @@ class StockCountIssueTrackBizApp extends React.PureComponent { buildRouters = () =>{ const {StockCountIssueTrackDashboard} = GlobalComponents - const {StockCountIssueTrackPreference} = GlobalComponents + const {StockCountIssueTrackPermission} = GlobalComponents + const {StockCountIssueTrackProfile} = GlobalComponents const routers=[ {path:"/stockCountIssueTrack/:id/dashboard", component: StockCountIssueTrackDashboard}, - {path:"/stockCountIssueTrack/:id/preference", component: StockCountIssueTrackPreference}, + {path:"/stockCountIssueTrack/:id/profile", component: StockCountIssueTrackProfile}, + {path:"/stockCountIssueTrack/:id/permission", component: StockCountIssueTrackPermission}, diff --git a/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.associateform.js b/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.associateform.js index cc292c383..b02d6b3f5 100644 --- a/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.associateform.js +++ b/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { title: '盘点差错', - countTime: '2018-11-17', + countTime: '2019-01-01', summary: '发现错误已经修正完成', stockCountId: 'GSSC000001', } @@ -140,7 +140,7 @@ class StockCountIssueTrackAssociateForm extends Component { {getFieldDecorator('title', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -150,7 +150,7 @@ class StockCountIssueTrackAssociateForm extends Component { {getFieldDecorator('countTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -160,7 +160,7 @@ class StockCountIssueTrackAssociateForm extends Component { {getFieldDecorator('summary', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.associateform.less b/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.associateform.less +++ b/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.base.js b/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.base.js index b1eb0663d..ffa585c30 100644 --- a/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.base.js +++ b/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.base.js @@ -1,10 +1,33 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"库存计数问题跟踪", menuFor: "stockCountIssueTrack", subItems: [ @@ -12,90 +35,53 @@ const menuData = {menuName:"库存计数问题跟踪", menuFor: "stockCountIssue ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + title: '头衔', + countTime: '计数时间', + summary: '概览', + stockCount: '盘点', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record) }, - { title: '头衔', debugtype: 'string', dataIndex: 'title', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: '计数时间', dataIndex: 'countTime', render: (text, record) =>renderDateCell(text,record) }, - { title: '概览', debugtype: 'string', dataIndex: 'summary', width: '14',render: (text, record)=>renderTextCell(text,record) }, - { title: '盘点', dataIndex: 'stockCount', render: (text, record) => renderReferenceCell(text, record)}, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.title, debugtype: 'string', dataIndex: 'title', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.countTime, dataIndex: 'countTime', render: (text, record) =>renderDateCell(text,record), sorter: true }, + { title: fieldLabels.summary, debugtype: 'string', dataIndex: 'summary', width: '14',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.stockCount, dataIndex: 'stockCount', render: (text, record) => renderReferenceCell(text, record), sorter:true}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({stockCountIssueTrack,targetComponent})=>{ -const fieldLabels = { - id: '序号', - title: '头衔', - countTime: '计数时间', - summary: '概览', - stockCount: '盘点', + + + const {StockCountIssueTrackService} = GlobalComponents + // const userContext = null + return ( + +{stockCountIssueTrack.id} +{stockCountIssueTrack.title} +{ moment(stockCountIssueTrack.countTime).format('YYYY-MM-DD')} +{stockCountIssueTrack.summary} +{stockCountIssueTrack.stockCount==null?appLocaleName(userContext,"NotAssigned"):`${stockCountIssueTrack.stockCount.displayName}(${stockCountIssueTrack.stockCount.id})`} + + showTransferModel(targetComponent,"盘点","goodsShelfStockCount",StockCountIssueTrackService.requestCandidateStockCount, + StockCountIssueTrackService.transferToAnotherStockCount,"anotherStockCountId",stockCountIssueTrack.stockCount?stockCountIssueTrack.stockCount.id:"")} + style={{fontSize: 20,color:"red"}} /> + + + {buildTransferModal(stockCountIssueTrack,targetComponent)} + + ) } + + -const StockCountIssueTrackBase={menuData,displayColumns,fieldLabels} +const StockCountIssueTrackBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default StockCountIssueTrackBase diff --git a/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.createform.js b/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.createform.js index 3cc3d1786..f6f03e1a8 100644 --- a/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.createform.js +++ b/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { title: '盘点差错', - countTime: '2019-01-24', + countTime: '2017-02-22', summary: '发现错误已经修正完成', stockCountId: 'GSSC000001', } @@ -209,7 +209,7 @@ class StockCountIssueTrackCreateForm extends Component { {getFieldDecorator('title', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -219,7 +219,7 @@ class StockCountIssueTrackCreateForm extends Component { {getFieldDecorator('countTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -229,7 +229,7 @@ class StockCountIssueTrackCreateForm extends Component { {getFieldDecorator('summary', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.dashboard.js b/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.dashboard.js index 1bb12b0ea..6ba2cc813 100644 --- a/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.dashboard.js +++ b/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -143,6 +143,7 @@ class StockCountIssueTrackDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -151,13 +152,17 @@ class StockCountIssueTrackDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.model.js b/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.model.js index fff95826b..109fa7803 100644 --- a/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.model.js +++ b/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' diff --git a/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.permission.js b/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.permission.js new file mode 100644 index 000000000..bfe89f18c --- /dev/null +++ b/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.permission.js @@ -0,0 +1,86 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './StockCountIssueTrack.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (stockCountIssueTrack,targetComponent) =>{ + const userContext = null + return ( + +{stockCountIssueTrack.id} +{stockCountIssueTrack.title} +{ moment(stockCountIssueTrack.countTime).format('YYYY-MM-DD')} +{stockCountIssueTrack.summary} + + + ) +} + + +const renderPermissionSetting = stockCountIssueTrack => { + const {StockCountIssueTrackBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class StockCountIssueTrackPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const stockCountIssueTrack = this.props.stockCountIssueTrack; + const { id,displayName, } = stockCountIssueTrack + const cardsData = {cardsName:"库存计数问题跟踪",cardsFor: "stockCountIssueTrack",cardsSource: stockCountIssueTrack, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + stockCountIssueTrack: state._stockCountIssueTrack, +}))(Form.create()(StockCountIssueTrackPermission)) + diff --git a/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.permission.less b/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.preference.js b/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.preference.js index d8984c63d..2af9ef72b 100644 --- a/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.preference.js +++ b/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.preference.js @@ -307,8 +307,12 @@ class StockCountIssueTrackPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, } = this.props.stockCountIssueTrack - const cardsData = {cardsName:"库存计数问题跟踪",cardsFor: "stockCountIssueTrack",cardsSource: this.props.stockCountIssueTrack, + const stockCountIssueTrack = this.props.stockCountIssueTrack; + const { id,displayName, } = stockCountIssueTrack + + + + const cardsData = {cardsName:"库存计数问题跟踪",cardsFor: "stockCountIssueTrack",cardsSource: stockCountIssueTrack, subItems: [ ], diff --git a/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.profile.js b/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.profile.js new file mode 100644 index 000000000..b536a5909 --- /dev/null +++ b/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.profile.js @@ -0,0 +1,93 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './StockCountIssueTrack.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (stockCountIssueTrack,targetComponent) =>{ + const userContext = null + return ( + +{stockCountIssueTrack.id} +{stockCountIssueTrack.title} +{ moment(stockCountIssueTrack.countTime).format('YYYY-MM-DD')} +{stockCountIssueTrack.summary} + + + ) +} + + + +class StockCountIssueTrackProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const stockCountIssueTrack = this.props.stockCountIssueTrack; + const { id,displayName, } = stockCountIssueTrack + + const cardsData = {cardsName:"库存计数问题跟踪",cardsFor: "stockCountIssueTrack",cardsSource: stockCountIssueTrack, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + stockCountIssueTrack: state._stockCountIssueTrack, +}))(Form.create()(StockCountIssueTrackProfile)) + diff --git a/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.profile.less b/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.search.js b/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.search.js index 3e4bd7eac..17625dd04 100644 --- a/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.search.js +++ b/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.searchform.js b/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.searchform.js index f1afda899..b52e4656a 100644 --- a/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.searchform.js +++ b/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`stockCountIssueTrackList.searchField`] = fieldName - value[`stockCountIssueTrackList.searchVerb`] = searchVerb - value[`stockCountIssueTrackList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,12 +127,13 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'title')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'summary')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'stockCount')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'title')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'summary')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'stockCount')) console.log("the final parameter", paramList) @@ -148,11 +149,12 @@ componentDidMount() { } - params['stockCountIssueTrackList'] = 1 - params['stockCountIssueTrackList.orderBy.0'] = "id" - params['stockCountIssueTrackList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -207,8 +209,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -286,8 +288,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.table.js b/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.table.js index 46a36992e..d511e0104 100644 --- a/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.table.js +++ b/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.table.js @@ -40,24 +40,53 @@ class StockCountIssueTrackTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = StockCountIssueTrackBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class StockCountIssueTrackTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class StockCountIssueTrackTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.updateform.js b/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.updateform.js index 4051b9171..ea4f4d317 100644 --- a/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.updateform.js +++ b/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.updateform.js @@ -262,7 +262,7 @@ class StockCountIssueTrackUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class StockCountIssueTrackUpdateForm extends Component { initialValue: selectedRow.title, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class StockCountIssueTrackUpdateForm extends Component { initialValue: selectedRow.countTime, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -298,7 +298,7 @@ class StockCountIssueTrackUpdateForm extends Component { initialValue: selectedRow.summary, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/storagespace/StorageSpace.app.js b/bizui/src/bizcomponents/storagespace/StorageSpace.app.js index 5cbb0ef97..51800cc76 100644 --- a/bizui/src/bizcomponents/storagespace/StorageSpace.app.js +++ b/bizui/src/bizcomponents/storagespace/StorageSpace.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class StorageSpaceBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class StorageSpaceBizApp extends React.PureComponent { buildRouters = () =>{ const {StorageSpaceDashboard} = GlobalComponents - const {StorageSpacePreference} = GlobalComponents + const {StorageSpacePermission} = GlobalComponents + const {StorageSpaceProfile} = GlobalComponents const routers=[ {path:"/storageSpace/:id/dashboard", component: StorageSpaceDashboard}, - {path:"/storageSpace/:id/preference", component: StorageSpacePreference}, + {path:"/storageSpace/:id/profile", component: StorageSpaceProfile}, + {path:"/storageSpace/:id/permission", component: StorageSpacePermission}, diff --git a/bizui/src/bizcomponents/storagespace/StorageSpace.associateform.js b/bizui/src/bizcomponents/storagespace/StorageSpace.associateform.js index 19733f323..8216f8ebe 100644 --- a/bizui/src/bizcomponents/storagespace/StorageSpace.associateform.js +++ b/bizui/src/bizcomponents/storagespace/StorageSpace.associateform.js @@ -21,8 +21,8 @@ const testValues = { location: '成都龙泉驿飞鹤路20号存货区', contactNumber: '02887654321', totalArea: '1876平方米', - latitude: '41.24235498019537', - longitude: '129.91516106566544', + latitude: '41.35461233666377', + longitude: '130.72358772700971', warehouseId: 'W000001', } */ @@ -143,7 +143,7 @@ class StorageSpaceAssociateForm extends Component { {getFieldDecorator('location', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -153,7 +153,7 @@ class StorageSpaceAssociateForm extends Component { {getFieldDecorator('contactNumber', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -163,7 +163,7 @@ class StorageSpaceAssociateForm extends Component { {getFieldDecorator('totalArea', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -173,7 +173,7 @@ class StorageSpaceAssociateForm extends Component { {getFieldDecorator('latitude', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -183,7 +183,7 @@ class StorageSpaceAssociateForm extends Component { {getFieldDecorator('longitude', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/storagespace/StorageSpace.associateform.less b/bizui/src/bizcomponents/storagespace/StorageSpace.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/storagespace/StorageSpace.associateform.less +++ b/bizui/src/bizcomponents/storagespace/StorageSpace.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/storagespace/StorageSpace.base.js b/bizui/src/bizcomponents/storagespace/StorageSpace.base.js index a11427aff..27e693d0c 100644 --- a/bizui/src/bizcomponents/storagespace/StorageSpace.base.js +++ b/bizui/src/bizcomponents/storagespace/StorageSpace.base.js @@ -1,94 +1,41 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"存货区", menuFor: "storageSpace", subItems: [ - {name: 'goodsShelfList', displayName:'货架', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'goodsShelfList', displayName:'货架', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) - -} - -const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'storageSpace') }, - { title: '位置', debugtype: 'string', dataIndex: 'location', width: '18',render: (text, record)=>renderTextCell(text,record) }, - { title: '联系电话', debugtype: 'string', dataIndex: 'contactNumber', width: '15',render: (text, record)=>renderTextCell(text,record) }, - { title: '总面积', debugtype: 'string', dataIndex: 'totalArea', width: '11',render: (text, record)=>renderTextCell(text,record) }, - { title: '仓库', dataIndex: 'warehouse', render: (text, record) => renderReferenceCell(text, record)}, - { title: '纬度', debugtype: 'double', dataIndex: 'latitude', width: '13',render: (text, record)=>renderTextCell(text,record) }, - { title: '经度', debugtype: 'double', dataIndex: 'longitude', width: '14',render: (text, record)=>renderTextCell(text,record) }, - { title: '最后更新时间', dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record) }, - -] - const fieldLabels = { id: '序号', location: '位置', @@ -101,8 +48,50 @@ const fieldLabels = { } +const displayColumns = [ + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'storageSpace') , sorter: true }, + { title: fieldLabels.location, debugtype: 'string', dataIndex: 'location', width: '18',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.contactNumber, debugtype: 'string', dataIndex: 'contactNumber', width: '15',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.totalArea, debugtype: 'string', dataIndex: 'totalArea', width: '11',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.warehouse, dataIndex: 'warehouse', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.latitude, debugtype: 'double', dataIndex: 'latitude', width: '13',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.longitude, debugtype: 'double', dataIndex: 'longitude', width: '14',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.lastUpdateTime, dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record), sorter: true}, + +] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({storageSpace,targetComponent})=>{ + + + + const {StorageSpaceService} = GlobalComponents + // const userContext = null + return ( + +{storageSpace.id} +{storageSpace.location} +{storageSpace.contactNumber} +{storageSpace.totalArea} +{storageSpace.warehouse==null?appLocaleName(userContext,"NotAssigned"):`${storageSpace.warehouse.displayName}(${storageSpace.warehouse.id})`} + + showTransferModel(targetComponent,"仓库","warehouse",StorageSpaceService.requestCandidateWarehouse, + StorageSpaceService.transferToAnotherWarehouse,"anotherWarehouseId",storageSpace.warehouse?storageSpace.warehouse.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{storageSpace.latitude} +{storageSpace.longitude} +{ moment(storageSpace.lastUpdateTime).format('YYYY-MM-DD')} + + {buildTransferModal(storageSpace,targetComponent)} + + ) + +} + + + -const StorageSpaceBase={menuData,displayColumns,fieldLabels} +const StorageSpaceBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default StorageSpaceBase diff --git a/bizui/src/bizcomponents/storagespace/StorageSpace.createform.js b/bizui/src/bizcomponents/storagespace/StorageSpace.createform.js index bf1b3375a..721ba3092 100644 --- a/bizui/src/bizcomponents/storagespace/StorageSpace.createform.js +++ b/bizui/src/bizcomponents/storagespace/StorageSpace.createform.js @@ -20,8 +20,8 @@ const testValues = { location: '成都龙泉驿飞鹤路20号存货区', contactNumber: '02887654321', totalArea: '1876平方米', - latitude: '41.23094851828413', - longitude: '132.15794592047266', + latitude: '40.6594820704173', + longitude: '129.36374379646975', warehouseId: 'W000001', } */ @@ -211,7 +211,7 @@ class StorageSpaceCreateForm extends Component { {getFieldDecorator('location', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -221,7 +221,7 @@ class StorageSpaceCreateForm extends Component { {getFieldDecorator('contactNumber', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -231,7 +231,7 @@ class StorageSpaceCreateForm extends Component { {getFieldDecorator('totalArea', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -241,7 +241,7 @@ class StorageSpaceCreateForm extends Component { {getFieldDecorator('latitude', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -251,7 +251,7 @@ class StorageSpaceCreateForm extends Component { {getFieldDecorator('longitude', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/storagespace/StorageSpace.dashboard.js b/bizui/src/bizcomponents/storagespace/StorageSpace.dashboard.js index 046fc040d..4ee7684d8 100644 --- a/bizui/src/bizcomponents/storagespace/StorageSpace.dashboard.js +++ b/bizui/src/bizcomponents/storagespace/StorageSpace.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -147,6 +147,7 @@ class StorageSpaceDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -155,13 +156,17 @@ class StorageSpaceDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/storagespace/StorageSpace.model.js b/bizui/src/bizcomponents/storagespace/StorageSpace.model.js index 79a8d4b5f..222214b2a 100644 --- a/bizui/src/bizcomponents/storagespace/StorageSpace.model.js +++ b/bizui/src/bizcomponents/storagespace/StorageSpace.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/storageSpace/${id}/list/\GoodsShelfList/货架+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/storageSpace/${id}/list/GoodsShelfList/货架+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateGoodsShelf({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/storageSpace/${id}/list/\GoodsShelfList/货架列表`, state: newPlayload } + const location = { pathname: `/storageSpace/${id}/list/GoodsShelfList/货架列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextGoodsShelfUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/storagespace/StorageSpace.permission.js b/bizui/src/bizcomponents/storagespace/StorageSpace.permission.js new file mode 100644 index 000000000..5ff055071 --- /dev/null +++ b/bizui/src/bizcomponents/storagespace/StorageSpace.permission.js @@ -0,0 +1,89 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './StorageSpace.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (storageSpace,targetComponent) =>{ + const userContext = null + return ( + +{storageSpace.id} +{storageSpace.location} +{storageSpace.contactNumber} +{storageSpace.totalArea} +{storageSpace.latitude} +{storageSpace.longitude} +{ moment(storageSpace.lastUpdateTime).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = storageSpace => { + const {StorageSpaceBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class StorageSpacePermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const storageSpace = this.props.storageSpace; + const { id,displayName, goodsShelfCount } = storageSpace + const cardsData = {cardsName:"存货区",cardsFor: "storageSpace",cardsSource: storageSpace, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + storageSpace: state._storageSpace, +}))(Form.create()(StorageSpacePermission)) + diff --git a/bizui/src/bizcomponents/storagespace/StorageSpace.permission.less b/bizui/src/bizcomponents/storagespace/StorageSpace.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/storagespace/StorageSpace.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/storagespace/StorageSpace.preference.js b/bizui/src/bizcomponents/storagespace/StorageSpace.preference.js index 935c26819..24ad3bcf9 100644 --- a/bizui/src/bizcomponents/storagespace/StorageSpace.preference.js +++ b/bizui/src/bizcomponents/storagespace/StorageSpace.preference.js @@ -310,8 +310,12 @@ class StorageSpacePreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, goodsShelfCount } = this.props.storageSpace - const cardsData = {cardsName:"存货区",cardsFor: "storageSpace",cardsSource: this.props.storageSpace, + const storageSpace = this.props.storageSpace; + const { id,displayName, goodsShelfCount } = storageSpace + + + + const cardsData = {cardsName:"存货区",cardsFor: "storageSpace",cardsSource: storageSpace, subItems: [ ], diff --git a/bizui/src/bizcomponents/storagespace/StorageSpace.profile.js b/bizui/src/bizcomponents/storagespace/StorageSpace.profile.js new file mode 100644 index 000000000..e004cb9df --- /dev/null +++ b/bizui/src/bizcomponents/storagespace/StorageSpace.profile.js @@ -0,0 +1,96 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './StorageSpace.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (storageSpace,targetComponent) =>{ + const userContext = null + return ( + +{storageSpace.id} +{storageSpace.location} +{storageSpace.contactNumber} +{storageSpace.totalArea} +{storageSpace.latitude} +{storageSpace.longitude} +{ moment(storageSpace.lastUpdateTime).format('YYYY-MM-DD')} + + + ) +} + + + +class StorageSpaceProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const storageSpace = this.props.storageSpace; + const { id,displayName, goodsShelfCount } = storageSpace + + const cardsData = {cardsName:"存货区",cardsFor: "storageSpace",cardsSource: storageSpace, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + storageSpace: state._storageSpace, +}))(Form.create()(StorageSpaceProfile)) + diff --git a/bizui/src/bizcomponents/storagespace/StorageSpace.profile.less b/bizui/src/bizcomponents/storagespace/StorageSpace.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/storagespace/StorageSpace.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/storagespace/StorageSpace.search.js b/bizui/src/bizcomponents/storagespace/StorageSpace.search.js index 031f14fa4..c87650e95 100644 --- a/bizui/src/bizcomponents/storagespace/StorageSpace.search.js +++ b/bizui/src/bizcomponents/storagespace/StorageSpace.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/storagespace/StorageSpace.searchform.js b/bizui/src/bizcomponents/storagespace/StorageSpace.searchform.js index ec4f8e79e..d8bf65057 100644 --- a/bizui/src/bizcomponents/storagespace/StorageSpace.searchform.js +++ b/bizui/src/bizcomponents/storagespace/StorageSpace.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`storageSpaceList.searchField`] = fieldName - value[`storageSpaceList.searchVerb`] = searchVerb - value[`storageSpaceList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,13 +127,14 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'location')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'contactNumber')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'totalArea')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'warehouse')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'location')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'contactNumber')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'totalArea')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'warehouse')) console.log("the final parameter", paramList) @@ -149,11 +150,12 @@ componentDidMount() { } - params['storageSpaceList'] = 1 - params['storageSpaceList.orderBy.0'] = "id" - params['storageSpaceList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -208,8 +210,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -295,8 +297,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/storagespace/StorageSpace.table.js b/bizui/src/bizcomponents/storagespace/StorageSpace.table.js index 018f09f84..7455aff79 100644 --- a/bizui/src/bizcomponents/storagespace/StorageSpace.table.js +++ b/bizui/src/bizcomponents/storagespace/StorageSpace.table.js @@ -40,24 +40,53 @@ class StorageSpaceTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = StorageSpaceBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class StorageSpaceTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class StorageSpaceTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/storagespace/StorageSpace.updateform.js b/bizui/src/bizcomponents/storagespace/StorageSpace.updateform.js index c01eb5f6a..ed461399b 100644 --- a/bizui/src/bizcomponents/storagespace/StorageSpace.updateform.js +++ b/bizui/src/bizcomponents/storagespace/StorageSpace.updateform.js @@ -262,7 +262,7 @@ class StorageSpaceUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class StorageSpaceUpdateForm extends Component { initialValue: selectedRow.location, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class StorageSpaceUpdateForm extends Component { initialValue: selectedRow.contactNumber, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -298,7 +298,7 @@ class StorageSpaceUpdateForm extends Component { initialValue: selectedRow.totalArea, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -310,7 +310,7 @@ class StorageSpaceUpdateForm extends Component { initialValue: selectedRow.latitude, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -322,7 +322,7 @@ class StorageSpaceUpdateForm extends Component { initialValue: selectedRow.longitude, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/supplierproduct/SupplierProduct.app.js b/bizui/src/bizcomponents/supplierproduct/SupplierProduct.app.js index 3780c4d50..8dcb26ab1 100644 --- a/bizui/src/bizcomponents/supplierproduct/SupplierProduct.app.js +++ b/bizui/src/bizcomponents/supplierproduct/SupplierProduct.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class SupplierProductBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class SupplierProductBizApp extends React.PureComponent { buildRouters = () =>{ const {SupplierProductDashboard} = GlobalComponents - const {SupplierProductPreference} = GlobalComponents + const {SupplierProductPermission} = GlobalComponents + const {SupplierProductProfile} = GlobalComponents const routers=[ {path:"/supplierProduct/:id/dashboard", component: SupplierProductDashboard}, - {path:"/supplierProduct/:id/preference", component: SupplierProductPreference}, + {path:"/supplierProduct/:id/profile", component: SupplierProductProfile}, + {path:"/supplierProduct/:id/permission", component: SupplierProductPermission}, diff --git a/bizui/src/bizcomponents/supplierproduct/SupplierProduct.associateform.js b/bizui/src/bizcomponents/supplierproduct/SupplierProduct.associateform.js index 882cbbd8e..1b581ab34 100644 --- a/bizui/src/bizcomponents/supplierproduct/SupplierProduct.associateform.js +++ b/bizui/src/bizcomponents/supplierproduct/SupplierProduct.associateform.js @@ -141,7 +141,7 @@ class SupplierProductAssociateForm extends Component { {getFieldDecorator('productName', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -151,7 +151,7 @@ class SupplierProductAssociateForm extends Component { {getFieldDecorator('productDescription', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -161,7 +161,7 @@ class SupplierProductAssociateForm extends Component { {getFieldDecorator('productUnit', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/supplierproduct/SupplierProduct.associateform.less b/bizui/src/bizcomponents/supplierproduct/SupplierProduct.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/supplierproduct/SupplierProduct.associateform.less +++ b/bizui/src/bizcomponents/supplierproduct/SupplierProduct.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/supplierproduct/SupplierProduct.base.js b/bizui/src/bizcomponents/supplierproduct/SupplierProduct.base.js index 64d583d6a..5751b9697 100644 --- a/bizui/src/bizcomponents/supplierproduct/SupplierProduct.base.js +++ b/bizui/src/bizcomponents/supplierproduct/SupplierProduct.base.js @@ -1,102 +1,88 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"供应商的产品", menuFor: "supplierProduct", subItems: [ - {name: 'productSupplyDurationList', displayName:'产品供应时间', icon:'at',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'productSupplyDurationList', displayName:'产品供应时间', icon:'at',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + productName: '品名', + productDescription: '产品描述', + productUnit: '产品单元', + supplier: '供应商', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'supplierProduct') }, - { title: '品名', debugtype: 'string', dataIndex: 'productName', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: '产品描述', debugtype: 'string', dataIndex: 'productDescription', width: '17',render: (text, record)=>renderTextCell(text,record) }, - { title: '产品单元', debugtype: 'string', dataIndex: 'productUnit', width: '6',render: (text, record)=>renderTextCell(text,record) }, - { title: '供应商', dataIndex: 'supplier', render: (text, record) => renderReferenceCell(text, record)}, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'supplierProduct') , sorter: true }, + { title: fieldLabels.productName, debugtype: 'string', dataIndex: 'productName', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.productDescription, debugtype: 'string', dataIndex: 'productDescription', width: '17',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.productUnit, debugtype: 'string', dataIndex: 'productUnit', width: '6',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.supplier, dataIndex: 'supplier', render: (text, record) => renderReferenceCell(text, record), sorter:true}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({supplierProduct,targetComponent})=>{ -const fieldLabels = { - id: '序号', - productName: '品名', - productDescription: '产品描述', - productUnit: '产品单元', - supplier: '供应商', + + + const {SupplierProductService} = GlobalComponents + // const userContext = null + return ( + +{supplierProduct.id} +{supplierProduct.productName} +{supplierProduct.productDescription} +{supplierProduct.productUnit} +{supplierProduct.supplier==null?appLocaleName(userContext,"NotAssigned"):`${supplierProduct.supplier.displayName}(${supplierProduct.supplier.id})`} + + showTransferModel(targetComponent,"供应商","goodsSupplier",SupplierProductService.requestCandidateSupplier, + SupplierProductService.transferToAnotherSupplier,"anotherSupplierId",supplierProduct.supplier?supplierProduct.supplier.id:"")} + style={{fontSize: 20,color:"red"}} /> + + + {buildTransferModal(supplierProduct,targetComponent)} + + ) } + + -const SupplierProductBase={menuData,displayColumns,fieldLabels} +const SupplierProductBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default SupplierProductBase diff --git a/bizui/src/bizcomponents/supplierproduct/SupplierProduct.createform.js b/bizui/src/bizcomponents/supplierproduct/SupplierProduct.createform.js index df114eb1a..303598a95 100644 --- a/bizui/src/bizcomponents/supplierproduct/SupplierProduct.createform.js +++ b/bizui/src/bizcomponents/supplierproduct/SupplierProduct.createform.js @@ -209,7 +209,7 @@ class SupplierProductCreateForm extends Component { {getFieldDecorator('productName', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -219,7 +219,7 @@ class SupplierProductCreateForm extends Component { {getFieldDecorator('productDescription', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -229,7 +229,7 @@ class SupplierProductCreateForm extends Component { {getFieldDecorator('productUnit', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/supplierproduct/SupplierProduct.dashboard.js b/bizui/src/bizcomponents/supplierproduct/SupplierProduct.dashboard.js index 5d2008c3b..d541e8152 100644 --- a/bizui/src/bizcomponents/supplierproduct/SupplierProduct.dashboard.js +++ b/bizui/src/bizcomponents/supplierproduct/SupplierProduct.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -144,6 +144,7 @@ class SupplierProductDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -152,13 +153,17 @@ class SupplierProductDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/supplierproduct/SupplierProduct.model.js b/bizui/src/bizcomponents/supplierproduct/SupplierProduct.model.js index 4dafb05b6..98b7f0448 100644 --- a/bizui/src/bizcomponents/supplierproduct/SupplierProduct.model.js +++ b/bizui/src/bizcomponents/supplierproduct/SupplierProduct.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/supplierProduct/${id}/list/\ProductSupplyDurationList/产品供应时间+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/supplierProduct/${id}/list/ProductSupplyDurationList/产品供应时间+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateProductSupplyDuration({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/supplierProduct/${id}/list/\ProductSupplyDurationList/产品供应时间列表`, state: newPlayload } + const location = { pathname: `/supplierProduct/${id}/list/ProductSupplyDurationList/产品供应时间列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextProductSupplyDurationUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/supplierproduct/SupplierProduct.permission.js b/bizui/src/bizcomponents/supplierproduct/SupplierProduct.permission.js new file mode 100644 index 000000000..437db02eb --- /dev/null +++ b/bizui/src/bizcomponents/supplierproduct/SupplierProduct.permission.js @@ -0,0 +1,86 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './SupplierProduct.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (supplierProduct,targetComponent) =>{ + const userContext = null + return ( + +{supplierProduct.id} +{supplierProduct.productName} +{supplierProduct.productDescription} +{supplierProduct.productUnit} + + + ) +} + + +const renderPermissionSetting = supplierProduct => { + const {SupplierProductBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class SupplierProductPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const supplierProduct = this.props.supplierProduct; + const { id,displayName, productSupplyDurationCount } = supplierProduct + const cardsData = {cardsName:"供应商的产品",cardsFor: "supplierProduct",cardsSource: supplierProduct, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + supplierProduct: state._supplierProduct, +}))(Form.create()(SupplierProductPermission)) + diff --git a/bizui/src/bizcomponents/supplierproduct/SupplierProduct.permission.less b/bizui/src/bizcomponents/supplierproduct/SupplierProduct.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/supplierproduct/SupplierProduct.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/supplierproduct/SupplierProduct.preference.js b/bizui/src/bizcomponents/supplierproduct/SupplierProduct.preference.js index a213cce8b..0cb114caf 100644 --- a/bizui/src/bizcomponents/supplierproduct/SupplierProduct.preference.js +++ b/bizui/src/bizcomponents/supplierproduct/SupplierProduct.preference.js @@ -307,8 +307,12 @@ class SupplierProductPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, productSupplyDurationCount } = this.props.supplierProduct - const cardsData = {cardsName:"供应商的产品",cardsFor: "supplierProduct",cardsSource: this.props.supplierProduct, + const supplierProduct = this.props.supplierProduct; + const { id,displayName, productSupplyDurationCount } = supplierProduct + + + + const cardsData = {cardsName:"供应商的产品",cardsFor: "supplierProduct",cardsSource: supplierProduct, subItems: [ ], diff --git a/bizui/src/bizcomponents/supplierproduct/SupplierProduct.profile.js b/bizui/src/bizcomponents/supplierproduct/SupplierProduct.profile.js new file mode 100644 index 000000000..b8c86f9ea --- /dev/null +++ b/bizui/src/bizcomponents/supplierproduct/SupplierProduct.profile.js @@ -0,0 +1,93 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './SupplierProduct.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (supplierProduct,targetComponent) =>{ + const userContext = null + return ( + +{supplierProduct.id} +{supplierProduct.productName} +{supplierProduct.productDescription} +{supplierProduct.productUnit} + + + ) +} + + + +class SupplierProductProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const supplierProduct = this.props.supplierProduct; + const { id,displayName, productSupplyDurationCount } = supplierProduct + + const cardsData = {cardsName:"供应商的产品",cardsFor: "supplierProduct",cardsSource: supplierProduct, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + supplierProduct: state._supplierProduct, +}))(Form.create()(SupplierProductProfile)) + diff --git a/bizui/src/bizcomponents/supplierproduct/SupplierProduct.profile.less b/bizui/src/bizcomponents/supplierproduct/SupplierProduct.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/supplierproduct/SupplierProduct.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/supplierproduct/SupplierProduct.search.js b/bizui/src/bizcomponents/supplierproduct/SupplierProduct.search.js index a98e81345..9335412ad 100644 --- a/bizui/src/bizcomponents/supplierproduct/SupplierProduct.search.js +++ b/bizui/src/bizcomponents/supplierproduct/SupplierProduct.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/supplierproduct/SupplierProduct.searchform.js b/bizui/src/bizcomponents/supplierproduct/SupplierProduct.searchform.js index 0c583572e..9d33c127e 100644 --- a/bizui/src/bizcomponents/supplierproduct/SupplierProduct.searchform.js +++ b/bizui/src/bizcomponents/supplierproduct/SupplierProduct.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`supplierProductList.searchField`] = fieldName - value[`supplierProductList.searchVerb`] = searchVerb - value[`supplierProductList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,13 +127,14 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'productName')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'productDescription')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'productUnit')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'supplier')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'productName')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'productDescription')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'productUnit')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'supplier')) console.log("the final parameter", paramList) @@ -149,11 +150,12 @@ componentDidMount() { } - params['supplierProductList'] = 1 - params['supplierProductList.orderBy.0'] = "id" - params['supplierProductList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -208,8 +210,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -295,8 +297,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/supplierproduct/SupplierProduct.table.js b/bizui/src/bizcomponents/supplierproduct/SupplierProduct.table.js index d76a5989a..191d18741 100644 --- a/bizui/src/bizcomponents/supplierproduct/SupplierProduct.table.js +++ b/bizui/src/bizcomponents/supplierproduct/SupplierProduct.table.js @@ -40,24 +40,53 @@ class SupplierProductTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = SupplierProductBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class SupplierProductTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class SupplierProductTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/supplierproduct/SupplierProduct.updateform.js b/bizui/src/bizcomponents/supplierproduct/SupplierProduct.updateform.js index aa6c2587d..b1ebe1c4a 100644 --- a/bizui/src/bizcomponents/supplierproduct/SupplierProduct.updateform.js +++ b/bizui/src/bizcomponents/supplierproduct/SupplierProduct.updateform.js @@ -261,7 +261,7 @@ class SupplierProductUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class SupplierProductUpdateForm extends Component { initialValue: selectedRow.productName, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -285,7 +285,7 @@ class SupplierProductUpdateForm extends Component { initialValue: selectedRow.productDescription, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -297,7 +297,7 @@ class SupplierProductUpdateForm extends Component { initialValue: selectedRow.productUnit, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/supplierspace/SupplierSpace.app.js b/bizui/src/bizcomponents/supplierspace/SupplierSpace.app.js index b8dde9e4f..1c50f7b86 100644 --- a/bizui/src/bizcomponents/supplierspace/SupplierSpace.app.js +++ b/bizui/src/bizcomponents/supplierspace/SupplierSpace.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class SupplierSpaceBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class SupplierSpaceBizApp extends React.PureComponent { buildRouters = () =>{ const {SupplierSpaceDashboard} = GlobalComponents - const {SupplierSpacePreference} = GlobalComponents + const {SupplierSpacePermission} = GlobalComponents + const {SupplierSpaceProfile} = GlobalComponents const routers=[ {path:"/supplierSpace/:id/dashboard", component: SupplierSpaceDashboard}, - {path:"/supplierSpace/:id/preference", component: SupplierSpacePreference}, + {path:"/supplierSpace/:id/profile", component: SupplierSpaceProfile}, + {path:"/supplierSpace/:id/permission", component: SupplierSpacePermission}, diff --git a/bizui/src/bizcomponents/supplierspace/SupplierSpace.associateform.js b/bizui/src/bizcomponents/supplierspace/SupplierSpace.associateform.js index 3804f0166..aa1b8dc34 100644 --- a/bizui/src/bizcomponents/supplierspace/SupplierSpace.associateform.js +++ b/bizui/src/bizcomponents/supplierspace/SupplierSpace.associateform.js @@ -21,8 +21,8 @@ const testValues = { location: '成都龙泉驿飞鹤路20号供货商独立管理区', contactNumber: '02887654321', totalArea: '1876平方米', - latitude: '39.97456012687628', - longitude: '130.74348612097893', + latitude: '40.78923444912702', + longitude: '131.8919668645188', warehouseId: 'W000001', } */ @@ -143,7 +143,7 @@ class SupplierSpaceAssociateForm extends Component { {getFieldDecorator('location', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -153,7 +153,7 @@ class SupplierSpaceAssociateForm extends Component { {getFieldDecorator('contactNumber', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -163,7 +163,7 @@ class SupplierSpaceAssociateForm extends Component { {getFieldDecorator('totalArea', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -173,7 +173,7 @@ class SupplierSpaceAssociateForm extends Component { {getFieldDecorator('latitude', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -183,7 +183,7 @@ class SupplierSpaceAssociateForm extends Component { {getFieldDecorator('longitude', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/supplierspace/SupplierSpace.associateform.less b/bizui/src/bizcomponents/supplierspace/SupplierSpace.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/supplierspace/SupplierSpace.associateform.less +++ b/bizui/src/bizcomponents/supplierspace/SupplierSpace.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/supplierspace/SupplierSpace.base.js b/bizui/src/bizcomponents/supplierspace/SupplierSpace.base.js index 52b24b75d..20e6a7e15 100644 --- a/bizui/src/bizcomponents/supplierspace/SupplierSpace.base.js +++ b/bizui/src/bizcomponents/supplierspace/SupplierSpace.base.js @@ -1,94 +1,41 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"供应商的空间", menuFor: "supplierSpace", subItems: [ - {name: 'goodsShelfList', displayName:'货架', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'goodsShelfList', displayName:'货架', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) - -} - -const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'supplierSpace') }, - { title: '位置', debugtype: 'string', dataIndex: 'location', width: '23',render: (text, record)=>renderTextCell(text,record) }, - { title: '联系电话', debugtype: 'string', dataIndex: 'contactNumber', width: '15',render: (text, record)=>renderTextCell(text,record) }, - { title: '总面积', debugtype: 'string', dataIndex: 'totalArea', width: '11',render: (text, record)=>renderTextCell(text,record) }, - { title: '仓库', dataIndex: 'warehouse', render: (text, record) => renderReferenceCell(text, record)}, - { title: '纬度', debugtype: 'double', dataIndex: 'latitude', width: '13',render: (text, record)=>renderTextCell(text,record) }, - { title: '经度', debugtype: 'double', dataIndex: 'longitude', width: '14',render: (text, record)=>renderTextCell(text,record) }, - { title: '最后更新时间', dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record) }, - -] - const fieldLabels = { id: '序号', location: '位置', @@ -101,8 +48,50 @@ const fieldLabels = { } +const displayColumns = [ + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'supplierSpace') , sorter: true }, + { title: fieldLabels.location, debugtype: 'string', dataIndex: 'location', width: '23',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.contactNumber, debugtype: 'string', dataIndex: 'contactNumber', width: '15',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.totalArea, debugtype: 'string', dataIndex: 'totalArea', width: '11',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.warehouse, dataIndex: 'warehouse', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.latitude, debugtype: 'double', dataIndex: 'latitude', width: '13',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.longitude, debugtype: 'double', dataIndex: 'longitude', width: '14',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.lastUpdateTime, dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record), sorter: true}, + +] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({supplierSpace,targetComponent})=>{ + + + + const {SupplierSpaceService} = GlobalComponents + // const userContext = null + return ( + +{supplierSpace.id} +{supplierSpace.location} +{supplierSpace.contactNumber} +{supplierSpace.totalArea} +{supplierSpace.warehouse==null?appLocaleName(userContext,"NotAssigned"):`${supplierSpace.warehouse.displayName}(${supplierSpace.warehouse.id})`} + + showTransferModel(targetComponent,"仓库","warehouse",SupplierSpaceService.requestCandidateWarehouse, + SupplierSpaceService.transferToAnotherWarehouse,"anotherWarehouseId",supplierSpace.warehouse?supplierSpace.warehouse.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{supplierSpace.latitude} +{supplierSpace.longitude} +{ moment(supplierSpace.lastUpdateTime).format('YYYY-MM-DD')} + + {buildTransferModal(supplierSpace,targetComponent)} + + ) + +} + + + -const SupplierSpaceBase={menuData,displayColumns,fieldLabels} +const SupplierSpaceBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default SupplierSpaceBase diff --git a/bizui/src/bizcomponents/supplierspace/SupplierSpace.createform.js b/bizui/src/bizcomponents/supplierspace/SupplierSpace.createform.js index 81180bb61..43faec9b9 100644 --- a/bizui/src/bizcomponents/supplierspace/SupplierSpace.createform.js +++ b/bizui/src/bizcomponents/supplierspace/SupplierSpace.createform.js @@ -20,8 +20,8 @@ const testValues = { location: '成都龙泉驿飞鹤路20号供货商独立管理区', contactNumber: '02887654321', totalArea: '1876平方米', - latitude: '42.503186393652406', - longitude: '131.79216210214156', + latitude: '41.79957977000916', + longitude: '131.6600593819183', warehouseId: 'W000001', } */ @@ -211,7 +211,7 @@ class SupplierSpaceCreateForm extends Component { {getFieldDecorator('location', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -221,7 +221,7 @@ class SupplierSpaceCreateForm extends Component { {getFieldDecorator('contactNumber', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -231,7 +231,7 @@ class SupplierSpaceCreateForm extends Component { {getFieldDecorator('totalArea', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -241,7 +241,7 @@ class SupplierSpaceCreateForm extends Component { {getFieldDecorator('latitude', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -251,7 +251,7 @@ class SupplierSpaceCreateForm extends Component { {getFieldDecorator('longitude', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/supplierspace/SupplierSpace.dashboard.js b/bizui/src/bizcomponents/supplierspace/SupplierSpace.dashboard.js index 46f3f81e7..51d7dbf12 100644 --- a/bizui/src/bizcomponents/supplierspace/SupplierSpace.dashboard.js +++ b/bizui/src/bizcomponents/supplierspace/SupplierSpace.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -147,6 +147,7 @@ class SupplierSpaceDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -155,13 +156,17 @@ class SupplierSpaceDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/supplierspace/SupplierSpace.model.js b/bizui/src/bizcomponents/supplierspace/SupplierSpace.model.js index 828369416..d00b9de83 100644 --- a/bizui/src/bizcomponents/supplierspace/SupplierSpace.model.js +++ b/bizui/src/bizcomponents/supplierspace/SupplierSpace.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/supplierSpace/${id}/list/\GoodsShelfList/货架+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/supplierSpace/${id}/list/GoodsShelfList/货架+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateGoodsShelf({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/supplierSpace/${id}/list/\GoodsShelfList/货架列表`, state: newPlayload } + const location = { pathname: `/supplierSpace/${id}/list/GoodsShelfList/货架列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextGoodsShelfUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/supplierspace/SupplierSpace.permission.js b/bizui/src/bizcomponents/supplierspace/SupplierSpace.permission.js new file mode 100644 index 000000000..f833b8268 --- /dev/null +++ b/bizui/src/bizcomponents/supplierspace/SupplierSpace.permission.js @@ -0,0 +1,89 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './SupplierSpace.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (supplierSpace,targetComponent) =>{ + const userContext = null + return ( + +{supplierSpace.id} +{supplierSpace.location} +{supplierSpace.contactNumber} +{supplierSpace.totalArea} +{supplierSpace.latitude} +{supplierSpace.longitude} +{ moment(supplierSpace.lastUpdateTime).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = supplierSpace => { + const {SupplierSpaceBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class SupplierSpacePermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const supplierSpace = this.props.supplierSpace; + const { id,displayName, goodsShelfCount } = supplierSpace + const cardsData = {cardsName:"供应商的空间",cardsFor: "supplierSpace",cardsSource: supplierSpace, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + supplierSpace: state._supplierSpace, +}))(Form.create()(SupplierSpacePermission)) + diff --git a/bizui/src/bizcomponents/supplierspace/SupplierSpace.permission.less b/bizui/src/bizcomponents/supplierspace/SupplierSpace.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/supplierspace/SupplierSpace.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/supplierspace/SupplierSpace.preference.js b/bizui/src/bizcomponents/supplierspace/SupplierSpace.preference.js index 3054d9d9f..9c5aec65f 100644 --- a/bizui/src/bizcomponents/supplierspace/SupplierSpace.preference.js +++ b/bizui/src/bizcomponents/supplierspace/SupplierSpace.preference.js @@ -310,8 +310,12 @@ class SupplierSpacePreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, goodsShelfCount } = this.props.supplierSpace - const cardsData = {cardsName:"供应商的空间",cardsFor: "supplierSpace",cardsSource: this.props.supplierSpace, + const supplierSpace = this.props.supplierSpace; + const { id,displayName, goodsShelfCount } = supplierSpace + + + + const cardsData = {cardsName:"供应商的空间",cardsFor: "supplierSpace",cardsSource: supplierSpace, subItems: [ ], diff --git a/bizui/src/bizcomponents/supplierspace/SupplierSpace.profile.js b/bizui/src/bizcomponents/supplierspace/SupplierSpace.profile.js new file mode 100644 index 000000000..6ebd14c63 --- /dev/null +++ b/bizui/src/bizcomponents/supplierspace/SupplierSpace.profile.js @@ -0,0 +1,96 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './SupplierSpace.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (supplierSpace,targetComponent) =>{ + const userContext = null + return ( + +{supplierSpace.id} +{supplierSpace.location} +{supplierSpace.contactNumber} +{supplierSpace.totalArea} +{supplierSpace.latitude} +{supplierSpace.longitude} +{ moment(supplierSpace.lastUpdateTime).format('YYYY-MM-DD')} + + + ) +} + + + +class SupplierSpaceProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const supplierSpace = this.props.supplierSpace; + const { id,displayName, goodsShelfCount } = supplierSpace + + const cardsData = {cardsName:"供应商的空间",cardsFor: "supplierSpace",cardsSource: supplierSpace, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + supplierSpace: state._supplierSpace, +}))(Form.create()(SupplierSpaceProfile)) + diff --git a/bizui/src/bizcomponents/supplierspace/SupplierSpace.profile.less b/bizui/src/bizcomponents/supplierspace/SupplierSpace.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/supplierspace/SupplierSpace.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/supplierspace/SupplierSpace.search.js b/bizui/src/bizcomponents/supplierspace/SupplierSpace.search.js index b97ae63ad..d440fcefe 100644 --- a/bizui/src/bizcomponents/supplierspace/SupplierSpace.search.js +++ b/bizui/src/bizcomponents/supplierspace/SupplierSpace.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/supplierspace/SupplierSpace.searchform.js b/bizui/src/bizcomponents/supplierspace/SupplierSpace.searchform.js index 3553cb6c2..962d59910 100644 --- a/bizui/src/bizcomponents/supplierspace/SupplierSpace.searchform.js +++ b/bizui/src/bizcomponents/supplierspace/SupplierSpace.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`supplierSpaceList.searchField`] = fieldName - value[`supplierSpaceList.searchVerb`] = searchVerb - value[`supplierSpaceList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,13 +127,14 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'location')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'contactNumber')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'totalArea')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'warehouse')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'location')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'contactNumber')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'totalArea')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'warehouse')) console.log("the final parameter", paramList) @@ -149,11 +150,12 @@ componentDidMount() { } - params['supplierSpaceList'] = 1 - params['supplierSpaceList.orderBy.0'] = "id" - params['supplierSpaceList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -208,8 +210,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -295,8 +297,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/supplierspace/SupplierSpace.table.js b/bizui/src/bizcomponents/supplierspace/SupplierSpace.table.js index b06704c73..2e129e60d 100644 --- a/bizui/src/bizcomponents/supplierspace/SupplierSpace.table.js +++ b/bizui/src/bizcomponents/supplierspace/SupplierSpace.table.js @@ -40,24 +40,53 @@ class SupplierSpaceTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = SupplierSpaceBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class SupplierSpaceTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class SupplierSpaceTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/supplierspace/SupplierSpace.updateform.js b/bizui/src/bizcomponents/supplierspace/SupplierSpace.updateform.js index fdab354c0..feb8c4cdb 100644 --- a/bizui/src/bizcomponents/supplierspace/SupplierSpace.updateform.js +++ b/bizui/src/bizcomponents/supplierspace/SupplierSpace.updateform.js @@ -262,7 +262,7 @@ class SupplierSpaceUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class SupplierSpaceUpdateForm extends Component { initialValue: selectedRow.location, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class SupplierSpaceUpdateForm extends Component { initialValue: selectedRow.contactNumber, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -298,7 +298,7 @@ class SupplierSpaceUpdateForm extends Component { initialValue: selectedRow.totalArea, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -310,7 +310,7 @@ class SupplierSpaceUpdateForm extends Component { initialValue: selectedRow.latitude, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -322,7 +322,7 @@ class SupplierSpaceUpdateForm extends Component { initialValue: selectedRow.longitude, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/supplyorder/SupplyOrder.app.js b/bizui/src/bizcomponents/supplyorder/SupplyOrder.app.js index cf01cbc96..078b1b311 100644 --- a/bizui/src/bizcomponents/supplyorder/SupplyOrder.app.js +++ b/bizui/src/bizcomponents/supplyorder/SupplyOrder.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class SupplyOrderBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -353,12 +362,14 @@ class SupplyOrderBizApp extends React.PureComponent { buildRouters = () =>{ const {SupplyOrderDashboard} = GlobalComponents - const {SupplyOrderPreference} = GlobalComponents + const {SupplyOrderPermission} = GlobalComponents + const {SupplyOrderProfile} = GlobalComponents const routers=[ {path:"/supplyOrder/:id/dashboard", component: SupplyOrderDashboard}, - {path:"/supplyOrder/:id/preference", component: SupplyOrderPreference}, + {path:"/supplyOrder/:id/profile", component: SupplyOrderProfile}, + {path:"/supplyOrder/:id/permission", component: SupplyOrderPermission}, diff --git a/bizui/src/bizcomponents/supplyorder/SupplyOrder.associateform.js b/bizui/src/bizcomponents/supplyorder/SupplyOrder.associateform.js index a28c05a3c..12288b5cd 100644 --- a/bizui/src/bizcomponents/supplyorder/SupplyOrder.associateform.js +++ b/bizui/src/bizcomponents/supplyorder/SupplyOrder.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { title: '双链给供货商下的订单', - totalAmount: '2898050816.00', + totalAmount: '2978345472.00', buyerId: 'RSCC000001', sellerId: 'GS000001', } @@ -144,7 +144,7 @@ class SupplyOrderAssociateForm extends Component { {getFieldDecorator('title', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -154,7 +154,7 @@ class SupplyOrderAssociateForm extends Component { {getFieldDecorator('totalAmount', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/supplyorder/SupplyOrder.associateform.less b/bizui/src/bizcomponents/supplyorder/SupplyOrder.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/supplyorder/SupplyOrder.associateform.less +++ b/bizui/src/bizcomponents/supplyorder/SupplyOrder.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/supplyorder/SupplyOrder.base.js b/bizui/src/bizcomponents/supplyorder/SupplyOrder.base.js index 546682e7e..379d82965 100644 --- a/bizui/src/bizcomponents/supplyorder/SupplyOrder.base.js +++ b/bizui/src/bizcomponents/supplyorder/SupplyOrder.base.js @@ -1,102 +1,44 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"供应订单", menuFor: "supplyOrder", subItems: [ - {name: 'supplyOrderLineItemList', displayName:'供应订单行项目', icon:'line',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'supplyOrderShippingGroupList', displayName:'供应订单送货分组', icon:'first-order',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'supplyOrderPaymentGroupList', displayName:'供应订单付款组', icon:'first-order',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'goodsList', displayName:'货物', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'supplyOrderLineItemList', displayName:'供应订单行项目', icon:'line',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'supplyOrderShippingGroupList', displayName:'供应订单送货分组', icon:'first-order',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'supplyOrderPaymentGroupList', displayName:'供应订单付款组', icon:'first-order',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'goodsList', displayName:'货物', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) - -} - -const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'supplyOrder') }, - { title: '买方', dataIndex: 'buyer', render: (text, record) => renderReferenceCell(text, record)}, - { title: '卖方', dataIndex: 'seller', render: (text, record) => renderReferenceCell(text, record)}, - { title: '头衔', debugtype: 'string', dataIndex: 'title', width: '14',render: (text, record)=>renderTextCell(text,record) }, - { title: '总金额', dataIndex: 'totalAmount', className:'money', render: (text, record) => renderMoneyCell(text, record) }, - { title: '确认', dataIndex: 'confirmation', render: (text, record) => renderReferenceCell(text, record)}, - { title: '验收', dataIndex: 'approval', render: (text, record) => renderReferenceCell(text, record)}, - { title: '处理', dataIndex: 'processing', render: (text, record) => renderReferenceCell(text, record)}, - { title: '捡货', dataIndex: 'picking', render: (text, record) => renderReferenceCell(text, record)}, - { title: '装运', dataIndex: 'shipment', render: (text, record) => renderReferenceCell(text, record)}, - { title: '送货', dataIndex: 'delivery', render: (text, record) => renderReferenceCell(text, record)}, - { title: '最后更新时间', dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record) }, - { title: '当前状态', debugtype: 'string', dataIndex: 'currentStatus', width: '13',render: (text, record)=>renderTextCell(text,record) }, - -] - const fieldLabels = { id: '序号', buyer: '买方', @@ -114,8 +56,53 @@ const fieldLabels = { } +const displayColumns = [ + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'supplyOrder') , sorter: true }, + { title: fieldLabels.buyer, dataIndex: 'buyer', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.seller, dataIndex: 'seller', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.title, debugtype: 'string', dataIndex: 'title', width: '14',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.totalAmount, dataIndex: 'totalAmount', className:'money', render: (text, record) => renderMoneyCell(text, record), sorter: true }, + { title: fieldLabels.confirmation, dataIndex: 'confirmation', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.approval, dataIndex: 'approval', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.processing, dataIndex: 'processing', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.picking, dataIndex: 'picking', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.shipment, dataIndex: 'shipment', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.delivery, dataIndex: 'delivery', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.lastUpdateTime, dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record), sorter: true}, + { title: fieldLabels.currentStatus, debugtype: 'string', dataIndex: 'currentStatus', width: '13',render: (text, record)=>renderTextCell(text,record)}, + +] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({supplyOrder,targetComponent})=>{ + + + + const {SupplyOrderService} = GlobalComponents + // const userContext = null + return ( + +{supplyOrder.id} +{supplyOrder.seller==null?appLocaleName(userContext,"NotAssigned"):`${supplyOrder.seller.displayName}(${supplyOrder.seller.id})`} + + showTransferModel(targetComponent,"卖方","goodsSupplier",SupplyOrderService.requestCandidateSeller, + SupplyOrderService.transferToAnotherSeller,"anotherSellerId",supplyOrder.seller?supplyOrder.seller.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{supplyOrder.title} +{supplyOrder.totalAmount} +{ moment(supplyOrder.lastUpdateTime).format('YYYY-MM-DD')} +{supplyOrder.currentStatus} + + {buildTransferModal(supplyOrder,targetComponent)} + + ) + +} + + + -const SupplyOrderBase={menuData,displayColumns,fieldLabels} +const SupplyOrderBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default SupplyOrderBase diff --git a/bizui/src/bizcomponents/supplyorder/SupplyOrder.createform.js b/bizui/src/bizcomponents/supplyorder/SupplyOrder.createform.js index 5b752c290..61646c8d8 100644 --- a/bizui/src/bizcomponents/supplyorder/SupplyOrder.createform.js +++ b/bizui/src/bizcomponents/supplyorder/SupplyOrder.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { title: '双链给供货商下的订单', - totalAmount: '2906771712.00', + totalAmount: '2510325504.00', buyerId: 'RSCC000001', sellerId: 'GS000001', } @@ -209,7 +209,7 @@ class SupplyOrderCreateForm extends Component { {getFieldDecorator('title', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -219,7 +219,7 @@ class SupplyOrderCreateForm extends Component { {getFieldDecorator('totalAmount', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/supplyorder/SupplyOrder.dashboard.js b/bizui/src/bizcomponents/supplyorder/SupplyOrder.dashboard.js index 1ef2a3f7b..3c05ed169 100644 --- a/bizui/src/bizcomponents/supplyorder/SupplyOrder.dashboard.js +++ b/bizui/src/bizcomponents/supplyorder/SupplyOrder.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -148,6 +148,7 @@ class SupplyOrderDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -156,13 +157,17 @@ class SupplyOrderDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/supplyorder/SupplyOrder.model.js b/bizui/src/bizcomponents/supplyorder/SupplyOrder.model.js index e6d6fff31..4353fa7a7 100644 --- a/bizui/src/bizcomponents/supplyorder/SupplyOrder.model.js +++ b/bizui/src/bizcomponents/supplyorder/SupplyOrder.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/supplyOrder/${id}/list/\SupplyOrderLineItemList/供应订单行项目+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/supplyOrder/${id}/list/SupplyOrderLineItemList/供应订单行项目+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateSupplyOrderLineItem({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/supplyOrder/${id}/list/\SupplyOrderLineItemList/供应订单行项目列表`, state: newPlayload } + const location = { pathname: `/supplyOrder/${id}/list/SupplyOrderLineItemList/供应订单行项目列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextSupplyOrderLineItemUpdateRow({ payload }, { call, put }) { @@ -206,7 +206,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/supplyOrder/${id}/list/\SupplyOrderShippingGroupList/供应订单送货分组+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/supplyOrder/${id}/list/SupplyOrderShippingGroupList/供应订单送货分组+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateSupplyOrderShippingGroup({ payload }, { call, put }) { @@ -228,7 +228,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/supplyOrder/${id}/list/\SupplyOrderShippingGroupList/供应订单送货分组列表`, state: newPlayload } + const location = { pathname: `/supplyOrder/${id}/list/SupplyOrderShippingGroupList/供应订单送货分组列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextSupplyOrderShippingGroupUpdateRow({ payload }, { call, put }) { @@ -275,7 +275,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/supplyOrder/${id}/list/\SupplyOrderPaymentGroupList/供应订单付款组+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/supplyOrder/${id}/list/SupplyOrderPaymentGroupList/供应订单付款组+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateSupplyOrderPaymentGroup({ payload }, { call, put }) { @@ -297,7 +297,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/supplyOrder/${id}/list/\SupplyOrderPaymentGroupList/供应订单付款组列表`, state: newPlayload } + const location = { pathname: `/supplyOrder/${id}/list/SupplyOrderPaymentGroupList/供应订单付款组列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextSupplyOrderPaymentGroupUpdateRow({ payload }, { call, put }) { @@ -344,7 +344,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/supplyOrder/${id}/list/\GoodsList/货物+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/supplyOrder/${id}/list/GoodsList/货物+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateGoods({ payload }, { call, put }) { @@ -366,7 +366,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/supplyOrder/${id}/list/\GoodsList/货物列表`, state: newPlayload } + const location = { pathname: `/supplyOrder/${id}/list/GoodsList/货物列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextGoodsUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/supplyorder/SupplyOrder.permission.js b/bizui/src/bizcomponents/supplyorder/SupplyOrder.permission.js new file mode 100644 index 000000000..09e662d46 --- /dev/null +++ b/bizui/src/bizcomponents/supplyorder/SupplyOrder.permission.js @@ -0,0 +1,87 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './SupplyOrder.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (supplyOrder,targetComponent) =>{ + const userContext = null + return ( + +{supplyOrder.id} +{supplyOrder.title} +{supplyOrder.totalAmount} +{ moment(supplyOrder.lastUpdateTime).format('YYYY-MM-DD')} +{supplyOrder.currentStatus} + + + ) +} + + +const renderPermissionSetting = supplyOrder => { + const {SupplyOrderBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class SupplyOrderPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const supplyOrder = this.props.supplyOrder; + const { id,displayName, supplyOrderLineItemCount, supplyOrderShippingGroupCount, supplyOrderPaymentGroupCount, goodsCount } = supplyOrder + const cardsData = {cardsName:"供应订单",cardsFor: "supplyOrder",cardsSource: supplyOrder, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + supplyOrder: state._supplyOrder, +}))(Form.create()(SupplyOrderPermission)) + diff --git a/bizui/src/bizcomponents/supplyorder/SupplyOrder.permission.less b/bizui/src/bizcomponents/supplyorder/SupplyOrder.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/supplyorder/SupplyOrder.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/supplyorder/SupplyOrder.preference.js b/bizui/src/bizcomponents/supplyorder/SupplyOrder.preference.js index c1d59ebe5..4bbb23bac 100644 --- a/bizui/src/bizcomponents/supplyorder/SupplyOrder.preference.js +++ b/bizui/src/bizcomponents/supplyorder/SupplyOrder.preference.js @@ -308,8 +308,12 @@ class SupplyOrderPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, supplyOrderLineItemCount, supplyOrderShippingGroupCount, supplyOrderPaymentGroupCount, goodsCount } = this.props.supplyOrder - const cardsData = {cardsName:"供应订单",cardsFor: "supplyOrder",cardsSource: this.props.supplyOrder, + const supplyOrder = this.props.supplyOrder; + const { id,displayName, supplyOrderLineItemCount, supplyOrderShippingGroupCount, supplyOrderPaymentGroupCount, goodsCount } = supplyOrder + + + + const cardsData = {cardsName:"供应订单",cardsFor: "supplyOrder",cardsSource: supplyOrder, subItems: [ ], diff --git a/bizui/src/bizcomponents/supplyorder/SupplyOrder.profile.js b/bizui/src/bizcomponents/supplyorder/SupplyOrder.profile.js new file mode 100644 index 000000000..8a7a72c77 --- /dev/null +++ b/bizui/src/bizcomponents/supplyorder/SupplyOrder.profile.js @@ -0,0 +1,94 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './SupplyOrder.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (supplyOrder,targetComponent) =>{ + const userContext = null + return ( + +{supplyOrder.id} +{supplyOrder.title} +{supplyOrder.totalAmount} +{ moment(supplyOrder.lastUpdateTime).format('YYYY-MM-DD')} +{supplyOrder.currentStatus} + + + ) +} + + + +class SupplyOrderProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const supplyOrder = this.props.supplyOrder; + const { id,displayName, supplyOrderLineItemCount, supplyOrderShippingGroupCount, supplyOrderPaymentGroupCount, goodsCount } = supplyOrder + + const cardsData = {cardsName:"供应订单",cardsFor: "supplyOrder",cardsSource: supplyOrder, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + supplyOrder: state._supplyOrder, +}))(Form.create()(SupplyOrderProfile)) + diff --git a/bizui/src/bizcomponents/supplyorder/SupplyOrder.profile.less b/bizui/src/bizcomponents/supplyorder/SupplyOrder.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/supplyorder/SupplyOrder.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/supplyorder/SupplyOrder.search.js b/bizui/src/bizcomponents/supplyorder/SupplyOrder.search.js index ce6f66b1d..ca7373b32 100644 --- a/bizui/src/bizcomponents/supplyorder/SupplyOrder.search.js +++ b/bizui/src/bizcomponents/supplyorder/SupplyOrder.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/supplyorder/SupplyOrder.searchform.js b/bizui/src/bizcomponents/supplyorder/SupplyOrder.searchform.js index 6c2a7c7fc..e2395b1f3 100644 --- a/bizui/src/bizcomponents/supplyorder/SupplyOrder.searchform.js +++ b/bizui/src/bizcomponents/supplyorder/SupplyOrder.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`supplyOrderList.searchField`] = fieldName - value[`supplyOrderList.searchVerb`] = searchVerb - value[`supplyOrderList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,13 +127,14 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'buyer')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'seller')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'title')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'currentStatus')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'buyer')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'seller')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'title')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'currentStatus')) console.log("the final parameter", paramList) @@ -149,11 +150,12 @@ componentDidMount() { } - params['supplyOrderList'] = 1 - params['supplyOrderList.orderBy.0'] = "id" - params['supplyOrderList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -215,8 +217,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -309,8 +311,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/supplyorder/SupplyOrder.table.js b/bizui/src/bizcomponents/supplyorder/SupplyOrder.table.js index f55df0b31..372bbee78 100644 --- a/bizui/src/bizcomponents/supplyorder/SupplyOrder.table.js +++ b/bizui/src/bizcomponents/supplyorder/SupplyOrder.table.js @@ -40,24 +40,53 @@ class SupplyOrderTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = SupplyOrderBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class SupplyOrderTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class SupplyOrderTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/supplyorder/SupplyOrder.updateform.js b/bizui/src/bizcomponents/supplyorder/SupplyOrder.updateform.js index 554dee316..7b25653aa 100644 --- a/bizui/src/bizcomponents/supplyorder/SupplyOrder.updateform.js +++ b/bizui/src/bizcomponents/supplyorder/SupplyOrder.updateform.js @@ -262,7 +262,7 @@ class SupplyOrderUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class SupplyOrderUpdateForm extends Component { initialValue: selectedRow.title, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class SupplyOrderUpdateForm extends Component { initialValue: selectedRow.totalAmount, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.app.js b/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.app.js index 36b8a0d07..6c1a2d3cf 100644 --- a/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.app.js +++ b/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class SupplyOrderApprovalBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -255,12 +264,14 @@ class SupplyOrderApprovalBizApp extends React.PureComponent { buildRouters = () =>{ const {SupplyOrderApprovalDashboard} = GlobalComponents - const {SupplyOrderApprovalPreference} = GlobalComponents + const {SupplyOrderApprovalPermission} = GlobalComponents + const {SupplyOrderApprovalProfile} = GlobalComponents const routers=[ {path:"/supplyOrderApproval/:id/dashboard", component: SupplyOrderApprovalDashboard}, - {path:"/supplyOrderApproval/:id/preference", component: SupplyOrderApprovalPreference}, + {path:"/supplyOrderApproval/:id/profile", component: SupplyOrderApprovalProfile}, + {path:"/supplyOrderApproval/:id/permission", component: SupplyOrderApprovalPermission}, diff --git a/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.associateform.js b/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.associateform.js index eb42622b5..88a7030ed 100644 --- a/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.associateform.js +++ b/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { who: '批准者', - approveTime: '2018-06-22', + approveTime: '2017-01-13', } */ @@ -140,7 +140,7 @@ class SupplyOrderApprovalAssociateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -150,7 +150,7 @@ class SupplyOrderApprovalAssociateForm extends Component { {getFieldDecorator('approveTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.associateform.less b/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.associateform.less +++ b/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.base.js b/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.base.js index 6811ab7dc..c4553c4eb 100644 --- a/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.base.js +++ b/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.base.js @@ -1,99 +1,78 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"供应订单审批", menuFor: "supplyOrderApproval", subItems: [ - {name: 'consumerOrderList', displayName:'消费者订单', icon:'first-order',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'supplyOrderList', displayName:'供应订单', icon:'first-order',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'consumerOrderList', displayName:'消费者订单', icon:'first-order',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'supplyOrderList', displayName:'供应订单', icon:'first-order',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + who: '谁', + approveTime: '批准时间', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'supplyOrderApproval') }, - { title: '谁', debugtype: 'string', dataIndex: 'who', width: '7',render: (text, record)=>renderTextCell(text,record) }, - { title: '批准时间', dataIndex: 'approveTime', render: (text, record) =>renderDateCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'supplyOrderApproval') , sorter: true }, + { title: fieldLabels.who, debugtype: 'string', dataIndex: 'who', width: '7',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.approveTime, dataIndex: 'approveTime', render: (text, record) =>renderDateCell(text,record), sorter: true }, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({supplyOrderApproval,targetComponent})=>{ -const fieldLabels = { - id: '序号', - who: '谁', - approveTime: '批准时间', + + + const {SupplyOrderApprovalService} = GlobalComponents + // const userContext = null + return ( + +{supplyOrderApproval.id} +{supplyOrderApproval.who} +{ moment(supplyOrderApproval.approveTime).format('YYYY-MM-DD')} + + {buildTransferModal(supplyOrderApproval,targetComponent)} + + ) } + + -const SupplyOrderApprovalBase={menuData,displayColumns,fieldLabels} +const SupplyOrderApprovalBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default SupplyOrderApprovalBase diff --git a/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.createform.js b/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.createform.js index b1e521211..a1363c32e 100644 --- a/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.createform.js +++ b/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { who: '批准者', - approveTime: '2018-01-29', + approveTime: '2016-07-24', } */ @@ -207,7 +207,7 @@ class SupplyOrderApprovalCreateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -217,7 +217,7 @@ class SupplyOrderApprovalCreateForm extends Component { {getFieldDecorator('approveTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.dashboard.js b/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.dashboard.js index 0b220d4e0..e004666d6 100644 --- a/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.dashboard.js +++ b/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -138,6 +138,7 @@ class SupplyOrderApprovalDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -146,13 +147,17 @@ class SupplyOrderApprovalDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.model.js b/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.model.js index 7eb8f4d2a..05a5bea7b 100644 --- a/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.model.js +++ b/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/supplyOrderApproval/${id}/list/\ConsumerOrderList/消费者订单+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/supplyOrderApproval/${id}/list/ConsumerOrderList/消费者订单+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateConsumerOrder({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/supplyOrderApproval/${id}/list/\ConsumerOrderList/消费者订单列表`, state: newPlayload } + const location = { pathname: `/supplyOrderApproval/${id}/list/ConsumerOrderList/消费者订单列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextConsumerOrderUpdateRow({ payload }, { call, put }) { @@ -206,7 +206,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/supplyOrderApproval/${id}/list/\SupplyOrderList/供应订单+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/supplyOrderApproval/${id}/list/SupplyOrderList/供应订单+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateSupplyOrder({ payload }, { call, put }) { @@ -228,7 +228,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/supplyOrderApproval/${id}/list/\SupplyOrderList/供应订单列表`, state: newPlayload } + const location = { pathname: `/supplyOrderApproval/${id}/list/SupplyOrderList/供应订单列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextSupplyOrderUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.permission.js b/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.permission.js new file mode 100644 index 000000000..139405876 --- /dev/null +++ b/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.permission.js @@ -0,0 +1,85 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './SupplyOrderApproval.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (supplyOrderApproval,targetComponent) =>{ + const userContext = null + return ( + +{supplyOrderApproval.id} +{supplyOrderApproval.who} +{ moment(supplyOrderApproval.approveTime).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = supplyOrderApproval => { + const {SupplyOrderApprovalBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class SupplyOrderApprovalPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const supplyOrderApproval = this.props.supplyOrderApproval; + const { id,displayName, consumerOrderCount, supplyOrderCount } = supplyOrderApproval + const cardsData = {cardsName:"供应订单审批",cardsFor: "supplyOrderApproval",cardsSource: supplyOrderApproval, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + supplyOrderApproval: state._supplyOrderApproval, +}))(Form.create()(SupplyOrderApprovalPermission)) + diff --git a/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.permission.less b/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.preference.js b/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.preference.js index 47d43434c..bd4a7de76 100644 --- a/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.preference.js +++ b/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.preference.js @@ -300,8 +300,12 @@ class SupplyOrderApprovalPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, consumerOrderCount, supplyOrderCount } = this.props.supplyOrderApproval - const cardsData = {cardsName:"供应订单审批",cardsFor: "supplyOrderApproval",cardsSource: this.props.supplyOrderApproval, + const supplyOrderApproval = this.props.supplyOrderApproval; + const { id,displayName, consumerOrderCount, supplyOrderCount } = supplyOrderApproval + + + + const cardsData = {cardsName:"供应订单审批",cardsFor: "supplyOrderApproval",cardsSource: supplyOrderApproval, subItems: [ ], diff --git a/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.profile.js b/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.profile.js new file mode 100644 index 000000000..b4660bfe0 --- /dev/null +++ b/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.profile.js @@ -0,0 +1,92 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './SupplyOrderApproval.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (supplyOrderApproval,targetComponent) =>{ + const userContext = null + return ( + +{supplyOrderApproval.id} +{supplyOrderApproval.who} +{ moment(supplyOrderApproval.approveTime).format('YYYY-MM-DD')} + + + ) +} + + + +class SupplyOrderApprovalProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const supplyOrderApproval = this.props.supplyOrderApproval; + const { id,displayName, consumerOrderCount, supplyOrderCount } = supplyOrderApproval + + const cardsData = {cardsName:"供应订单审批",cardsFor: "supplyOrderApproval",cardsSource: supplyOrderApproval, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + supplyOrderApproval: state._supplyOrderApproval, +}))(Form.create()(SupplyOrderApprovalProfile)) + diff --git a/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.profile.less b/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.search.js b/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.search.js index 6298bdefc..e9000b4c4 100644 --- a/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.search.js +++ b/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.searchform.js b/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.searchform.js index 244bef676..f2c66f159 100644 --- a/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.searchform.js +++ b/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`supplyOrderApprovalList.searchField`] = fieldName - value[`supplyOrderApprovalList.searchVerb`] = searchVerb - value[`supplyOrderApprovalList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,10 +127,11 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'who')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'who')) console.log("the final parameter", paramList) @@ -146,11 +147,12 @@ componentDidMount() { } - params['supplyOrderApprovalList'] = 1 - params['supplyOrderApprovalList.orderBy.0'] = "id" - params['supplyOrderApprovalList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -205,8 +207,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -261,8 +263,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.table.js b/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.table.js index a471edf94..b26160770 100644 --- a/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.table.js +++ b/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.table.js @@ -40,24 +40,53 @@ class SupplyOrderApprovalTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = SupplyOrderApprovalBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class SupplyOrderApprovalTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class SupplyOrderApprovalTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.updateform.js b/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.updateform.js index a087588fb..0f950ad68 100644 --- a/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.updateform.js +++ b/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.updateform.js @@ -262,7 +262,7 @@ class SupplyOrderApprovalUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class SupplyOrderApprovalUpdateForm extends Component { initialValue: selectedRow.who, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class SupplyOrderApprovalUpdateForm extends Component { initialValue: selectedRow.approveTime, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.app.js b/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.app.js index bed69a9f3..70bcb5019 100644 --- a/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.app.js +++ b/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class SupplyOrderConfirmationBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -255,12 +264,14 @@ class SupplyOrderConfirmationBizApp extends React.PureComponent { buildRouters = () =>{ const {SupplyOrderConfirmationDashboard} = GlobalComponents - const {SupplyOrderConfirmationPreference} = GlobalComponents + const {SupplyOrderConfirmationPermission} = GlobalComponents + const {SupplyOrderConfirmationProfile} = GlobalComponents const routers=[ {path:"/supplyOrderConfirmation/:id/dashboard", component: SupplyOrderConfirmationDashboard}, - {path:"/supplyOrderConfirmation/:id/preference", component: SupplyOrderConfirmationPreference}, + {path:"/supplyOrderConfirmation/:id/profile", component: SupplyOrderConfirmationProfile}, + {path:"/supplyOrderConfirmation/:id/permission", component: SupplyOrderConfirmationPermission}, diff --git a/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.associateform.js b/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.associateform.js index 5c5f1d579..8a787a2c5 100644 --- a/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.associateform.js +++ b/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { who: '确认者', - confirmTime: '2018-04-22', + confirmTime: '2017-09-05', } */ @@ -140,7 +140,7 @@ class SupplyOrderConfirmationAssociateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -150,7 +150,7 @@ class SupplyOrderConfirmationAssociateForm extends Component { {getFieldDecorator('confirmTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.associateform.less b/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.associateform.less +++ b/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.base.js b/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.base.js index a1630c652..195969ae1 100644 --- a/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.base.js +++ b/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.base.js @@ -1,99 +1,78 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"供应订单确认", menuFor: "supplyOrderConfirmation", subItems: [ - {name: 'consumerOrderList', displayName:'消费者订单', icon:'first-order',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'supplyOrderList', displayName:'供应订单', icon:'first-order',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'consumerOrderList', displayName:'消费者订单', icon:'first-order',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'supplyOrderList', displayName:'供应订单', icon:'first-order',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + who: '谁', + confirmTime: '确认时间', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'supplyOrderConfirmation') }, - { title: '谁', debugtype: 'string', dataIndex: 'who', width: '7',render: (text, record)=>renderTextCell(text,record) }, - { title: '确认时间', dataIndex: 'confirmTime', render: (text, record) =>renderDateCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'supplyOrderConfirmation') , sorter: true }, + { title: fieldLabels.who, debugtype: 'string', dataIndex: 'who', width: '7',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.confirmTime, dataIndex: 'confirmTime', render: (text, record) =>renderDateCell(text,record), sorter: true }, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({supplyOrderConfirmation,targetComponent})=>{ -const fieldLabels = { - id: '序号', - who: '谁', - confirmTime: '确认时间', + + + const {SupplyOrderConfirmationService} = GlobalComponents + // const userContext = null + return ( + +{supplyOrderConfirmation.id} +{supplyOrderConfirmation.who} +{ moment(supplyOrderConfirmation.confirmTime).format('YYYY-MM-DD')} + + {buildTransferModal(supplyOrderConfirmation,targetComponent)} + + ) } + + -const SupplyOrderConfirmationBase={menuData,displayColumns,fieldLabels} +const SupplyOrderConfirmationBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default SupplyOrderConfirmationBase diff --git a/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.createform.js b/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.createform.js index dccda8fc0..d5a7ba834 100644 --- a/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.createform.js +++ b/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { who: '确认者', - confirmTime: '2016-05-05', + confirmTime: '2016-10-22', } */ @@ -207,7 +207,7 @@ class SupplyOrderConfirmationCreateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -217,7 +217,7 @@ class SupplyOrderConfirmationCreateForm extends Component { {getFieldDecorator('confirmTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.dashboard.js b/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.dashboard.js index 3cffc87ff..dbaf6a900 100644 --- a/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.dashboard.js +++ b/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -138,6 +138,7 @@ class SupplyOrderConfirmationDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -146,13 +147,17 @@ class SupplyOrderConfirmationDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.model.js b/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.model.js index 982d7b74a..74329db98 100644 --- a/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.model.js +++ b/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/supplyOrderConfirmation/${id}/list/\ConsumerOrderList/消费者订单+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/supplyOrderConfirmation/${id}/list/ConsumerOrderList/消费者订单+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateConsumerOrder({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/supplyOrderConfirmation/${id}/list/\ConsumerOrderList/消费者订单列表`, state: newPlayload } + const location = { pathname: `/supplyOrderConfirmation/${id}/list/ConsumerOrderList/消费者订单列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextConsumerOrderUpdateRow({ payload }, { call, put }) { @@ -206,7 +206,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/supplyOrderConfirmation/${id}/list/\SupplyOrderList/供应订单+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/supplyOrderConfirmation/${id}/list/SupplyOrderList/供应订单+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateSupplyOrder({ payload }, { call, put }) { @@ -228,7 +228,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/supplyOrderConfirmation/${id}/list/\SupplyOrderList/供应订单列表`, state: newPlayload } + const location = { pathname: `/supplyOrderConfirmation/${id}/list/SupplyOrderList/供应订单列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextSupplyOrderUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.permission.js b/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.permission.js new file mode 100644 index 000000000..e5cc21bcc --- /dev/null +++ b/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.permission.js @@ -0,0 +1,85 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './SupplyOrderConfirmation.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (supplyOrderConfirmation,targetComponent) =>{ + const userContext = null + return ( + +{supplyOrderConfirmation.id} +{supplyOrderConfirmation.who} +{ moment(supplyOrderConfirmation.confirmTime).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = supplyOrderConfirmation => { + const {SupplyOrderConfirmationBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class SupplyOrderConfirmationPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const supplyOrderConfirmation = this.props.supplyOrderConfirmation; + const { id,displayName, consumerOrderCount, supplyOrderCount } = supplyOrderConfirmation + const cardsData = {cardsName:"供应订单确认",cardsFor: "supplyOrderConfirmation",cardsSource: supplyOrderConfirmation, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + supplyOrderConfirmation: state._supplyOrderConfirmation, +}))(Form.create()(SupplyOrderConfirmationPermission)) + diff --git a/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.permission.less b/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.preference.js b/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.preference.js index 7432ad8ab..c24ec0582 100644 --- a/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.preference.js +++ b/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.preference.js @@ -300,8 +300,12 @@ class SupplyOrderConfirmationPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, consumerOrderCount, supplyOrderCount } = this.props.supplyOrderConfirmation - const cardsData = {cardsName:"供应订单确认",cardsFor: "supplyOrderConfirmation",cardsSource: this.props.supplyOrderConfirmation, + const supplyOrderConfirmation = this.props.supplyOrderConfirmation; + const { id,displayName, consumerOrderCount, supplyOrderCount } = supplyOrderConfirmation + + + + const cardsData = {cardsName:"供应订单确认",cardsFor: "supplyOrderConfirmation",cardsSource: supplyOrderConfirmation, subItems: [ ], diff --git a/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.profile.js b/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.profile.js new file mode 100644 index 000000000..d6bf9d4ad --- /dev/null +++ b/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.profile.js @@ -0,0 +1,92 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './SupplyOrderConfirmation.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (supplyOrderConfirmation,targetComponent) =>{ + const userContext = null + return ( + +{supplyOrderConfirmation.id} +{supplyOrderConfirmation.who} +{ moment(supplyOrderConfirmation.confirmTime).format('YYYY-MM-DD')} + + + ) +} + + + +class SupplyOrderConfirmationProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const supplyOrderConfirmation = this.props.supplyOrderConfirmation; + const { id,displayName, consumerOrderCount, supplyOrderCount } = supplyOrderConfirmation + + const cardsData = {cardsName:"供应订单确认",cardsFor: "supplyOrderConfirmation",cardsSource: supplyOrderConfirmation, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + supplyOrderConfirmation: state._supplyOrderConfirmation, +}))(Form.create()(SupplyOrderConfirmationProfile)) + diff --git a/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.profile.less b/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.search.js b/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.search.js index f45cb1da0..bafc3c471 100644 --- a/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.search.js +++ b/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.searchform.js b/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.searchform.js index f57187d7a..e8fa48b89 100644 --- a/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.searchform.js +++ b/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`supplyOrderConfirmationList.searchField`] = fieldName - value[`supplyOrderConfirmationList.searchVerb`] = searchVerb - value[`supplyOrderConfirmationList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,10 +127,11 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'who')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'who')) console.log("the final parameter", paramList) @@ -146,11 +147,12 @@ componentDidMount() { } - params['supplyOrderConfirmationList'] = 1 - params['supplyOrderConfirmationList.orderBy.0'] = "id" - params['supplyOrderConfirmationList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -205,8 +207,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -261,8 +263,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.table.js b/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.table.js index 8391f5ed6..c0ffb4f1d 100644 --- a/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.table.js +++ b/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.table.js @@ -40,24 +40,53 @@ class SupplyOrderConfirmationTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = SupplyOrderConfirmationBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class SupplyOrderConfirmationTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class SupplyOrderConfirmationTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.updateform.js b/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.updateform.js index 442aec937..c106177c7 100644 --- a/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.updateform.js +++ b/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.updateform.js @@ -262,7 +262,7 @@ class SupplyOrderConfirmationUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class SupplyOrderConfirmationUpdateForm extends Component { initialValue: selectedRow.who, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class SupplyOrderConfirmationUpdateForm extends Component { initialValue: selectedRow.confirmTime, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.app.js b/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.app.js index b5445a9cd..defcf500e 100644 --- a/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.app.js +++ b/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class SupplyOrderDeliveryBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -255,12 +264,14 @@ class SupplyOrderDeliveryBizApp extends React.PureComponent { buildRouters = () =>{ const {SupplyOrderDeliveryDashboard} = GlobalComponents - const {SupplyOrderDeliveryPreference} = GlobalComponents + const {SupplyOrderDeliveryPermission} = GlobalComponents + const {SupplyOrderDeliveryProfile} = GlobalComponents const routers=[ {path:"/supplyOrderDelivery/:id/dashboard", component: SupplyOrderDeliveryDashboard}, - {path:"/supplyOrderDelivery/:id/preference", component: SupplyOrderDeliveryPreference}, + {path:"/supplyOrderDelivery/:id/profile", component: SupplyOrderDeliveryProfile}, + {path:"/supplyOrderDelivery/:id/permission", component: SupplyOrderDeliveryPermission}, diff --git a/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.associateform.js b/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.associateform.js index 67d503a36..e1ed1329f 100644 --- a/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.associateform.js +++ b/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { who: '送货者', - deliveryTime: '2019-02-10', + deliveryTime: '2017-12-01', } */ @@ -140,7 +140,7 @@ class SupplyOrderDeliveryAssociateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -150,7 +150,7 @@ class SupplyOrderDeliveryAssociateForm extends Component { {getFieldDecorator('deliveryTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.associateform.less b/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.associateform.less +++ b/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.base.js b/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.base.js index 1ce8e433c..d46d30b75 100644 --- a/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.base.js +++ b/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.base.js @@ -1,99 +1,78 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"供应订单交货", menuFor: "supplyOrderDelivery", subItems: [ - {name: 'consumerOrderList', displayName:'消费者订单', icon:'first-order',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'supplyOrderList', displayName:'供应订单', icon:'first-order',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'consumerOrderList', displayName:'消费者订单', icon:'first-order',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'supplyOrderList', displayName:'供应订单', icon:'first-order',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + who: '谁', + deliveryTime: '交货时间', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'supplyOrderDelivery') }, - { title: '谁', debugtype: 'string', dataIndex: 'who', width: '7',render: (text, record)=>renderTextCell(text,record) }, - { title: '交货时间', dataIndex: 'deliveryTime', render: (text, record) =>renderDateCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'supplyOrderDelivery') , sorter: true }, + { title: fieldLabels.who, debugtype: 'string', dataIndex: 'who', width: '7',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.deliveryTime, dataIndex: 'deliveryTime', render: (text, record) =>renderDateCell(text,record), sorter: true }, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({supplyOrderDelivery,targetComponent})=>{ -const fieldLabels = { - id: '序号', - who: '谁', - deliveryTime: '交货时间', + + + const {SupplyOrderDeliveryService} = GlobalComponents + // const userContext = null + return ( + +{supplyOrderDelivery.id} +{supplyOrderDelivery.who} +{ moment(supplyOrderDelivery.deliveryTime).format('YYYY-MM-DD')} + + {buildTransferModal(supplyOrderDelivery,targetComponent)} + + ) } + + -const SupplyOrderDeliveryBase={menuData,displayColumns,fieldLabels} +const SupplyOrderDeliveryBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default SupplyOrderDeliveryBase diff --git a/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.createform.js b/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.createform.js index 2739007a3..8462b4239 100644 --- a/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.createform.js +++ b/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { who: '送货者', - deliveryTime: '2018-07-12', + deliveryTime: '2019-01-09', } */ @@ -207,7 +207,7 @@ class SupplyOrderDeliveryCreateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -217,7 +217,7 @@ class SupplyOrderDeliveryCreateForm extends Component { {getFieldDecorator('deliveryTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.dashboard.js b/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.dashboard.js index 709da003d..d4a11027b 100644 --- a/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.dashboard.js +++ b/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -138,6 +138,7 @@ class SupplyOrderDeliveryDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -146,13 +147,17 @@ class SupplyOrderDeliveryDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.model.js b/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.model.js index 34712f42a..51a2d9e53 100644 --- a/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.model.js +++ b/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/supplyOrderDelivery/${id}/list/\ConsumerOrderList/消费者订单+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/supplyOrderDelivery/${id}/list/ConsumerOrderList/消费者订单+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateConsumerOrder({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/supplyOrderDelivery/${id}/list/\ConsumerOrderList/消费者订单列表`, state: newPlayload } + const location = { pathname: `/supplyOrderDelivery/${id}/list/ConsumerOrderList/消费者订单列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextConsumerOrderUpdateRow({ payload }, { call, put }) { @@ -206,7 +206,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/supplyOrderDelivery/${id}/list/\SupplyOrderList/供应订单+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/supplyOrderDelivery/${id}/list/SupplyOrderList/供应订单+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateSupplyOrder({ payload }, { call, put }) { @@ -228,7 +228,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/supplyOrderDelivery/${id}/list/\SupplyOrderList/供应订单列表`, state: newPlayload } + const location = { pathname: `/supplyOrderDelivery/${id}/list/SupplyOrderList/供应订单列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextSupplyOrderUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.permission.js b/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.permission.js new file mode 100644 index 000000000..f4b9f5f0b --- /dev/null +++ b/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.permission.js @@ -0,0 +1,85 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './SupplyOrderDelivery.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (supplyOrderDelivery,targetComponent) =>{ + const userContext = null + return ( + +{supplyOrderDelivery.id} +{supplyOrderDelivery.who} +{ moment(supplyOrderDelivery.deliveryTime).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = supplyOrderDelivery => { + const {SupplyOrderDeliveryBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class SupplyOrderDeliveryPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const supplyOrderDelivery = this.props.supplyOrderDelivery; + const { id,displayName, consumerOrderCount, supplyOrderCount } = supplyOrderDelivery + const cardsData = {cardsName:"供应订单交货",cardsFor: "supplyOrderDelivery",cardsSource: supplyOrderDelivery, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + supplyOrderDelivery: state._supplyOrderDelivery, +}))(Form.create()(SupplyOrderDeliveryPermission)) + diff --git a/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.permission.less b/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.preference.js b/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.preference.js index ee756ae75..21cb0ee29 100644 --- a/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.preference.js +++ b/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.preference.js @@ -300,8 +300,12 @@ class SupplyOrderDeliveryPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, consumerOrderCount, supplyOrderCount } = this.props.supplyOrderDelivery - const cardsData = {cardsName:"供应订单交货",cardsFor: "supplyOrderDelivery",cardsSource: this.props.supplyOrderDelivery, + const supplyOrderDelivery = this.props.supplyOrderDelivery; + const { id,displayName, consumerOrderCount, supplyOrderCount } = supplyOrderDelivery + + + + const cardsData = {cardsName:"供应订单交货",cardsFor: "supplyOrderDelivery",cardsSource: supplyOrderDelivery, subItems: [ ], diff --git a/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.profile.js b/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.profile.js new file mode 100644 index 000000000..8c5cf1bf2 --- /dev/null +++ b/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.profile.js @@ -0,0 +1,92 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './SupplyOrderDelivery.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (supplyOrderDelivery,targetComponent) =>{ + const userContext = null + return ( + +{supplyOrderDelivery.id} +{supplyOrderDelivery.who} +{ moment(supplyOrderDelivery.deliveryTime).format('YYYY-MM-DD')} + + + ) +} + + + +class SupplyOrderDeliveryProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const supplyOrderDelivery = this.props.supplyOrderDelivery; + const { id,displayName, consumerOrderCount, supplyOrderCount } = supplyOrderDelivery + + const cardsData = {cardsName:"供应订单交货",cardsFor: "supplyOrderDelivery",cardsSource: supplyOrderDelivery, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + supplyOrderDelivery: state._supplyOrderDelivery, +}))(Form.create()(SupplyOrderDeliveryProfile)) + diff --git a/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.profile.less b/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.search.js b/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.search.js index 4af780c43..78e029ee1 100644 --- a/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.search.js +++ b/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.searchform.js b/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.searchform.js index 354ef8d97..9a83eb9e0 100644 --- a/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.searchform.js +++ b/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`supplyOrderDeliveryList.searchField`] = fieldName - value[`supplyOrderDeliveryList.searchVerb`] = searchVerb - value[`supplyOrderDeliveryList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,10 +127,11 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'who')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'who')) console.log("the final parameter", paramList) @@ -146,11 +147,12 @@ componentDidMount() { } - params['supplyOrderDeliveryList'] = 1 - params['supplyOrderDeliveryList.orderBy.0'] = "id" - params['supplyOrderDeliveryList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -205,8 +207,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -261,8 +263,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.table.js b/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.table.js index c68927925..7920bc120 100644 --- a/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.table.js +++ b/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.table.js @@ -40,24 +40,53 @@ class SupplyOrderDeliveryTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = SupplyOrderDeliveryBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class SupplyOrderDeliveryTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class SupplyOrderDeliveryTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.updateform.js b/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.updateform.js index acf11a982..720b4e3bf 100644 --- a/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.updateform.js +++ b/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.updateform.js @@ -262,7 +262,7 @@ class SupplyOrderDeliveryUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class SupplyOrderDeliveryUpdateForm extends Component { initialValue: selectedRow.who, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class SupplyOrderDeliveryUpdateForm extends Component { initialValue: selectedRow.deliveryTime, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.app.js b/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.app.js index 3631217d3..195782c5f 100644 --- a/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.app.js +++ b/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class SupplyOrderLineItemBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -157,12 +166,14 @@ class SupplyOrderLineItemBizApp extends React.PureComponent { buildRouters = () =>{ const {SupplyOrderLineItemDashboard} = GlobalComponents - const {SupplyOrderLineItemPreference} = GlobalComponents + const {SupplyOrderLineItemPermission} = GlobalComponents + const {SupplyOrderLineItemProfile} = GlobalComponents const routers=[ {path:"/supplyOrderLineItem/:id/dashboard", component: SupplyOrderLineItemDashboard}, - {path:"/supplyOrderLineItem/:id/preference", component: SupplyOrderLineItemPreference}, + {path:"/supplyOrderLineItem/:id/profile", component: SupplyOrderLineItemProfile}, + {path:"/supplyOrderLineItem/:id/permission", component: SupplyOrderLineItemPermission}, diff --git a/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.associateform.js b/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.associateform.js index 72dc3e1ef..8d88c5af0 100644 --- a/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.associateform.js +++ b/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.associateform.js @@ -20,8 +20,8 @@ const testValues = {}; const testValues = { skuId: 'SKU', skuName: '大瓶可乐', - amount: '5.25', - quantity: '8914', + amount: '5.88', + quantity: '9631', unitOfMeasurement: '件', bizOrderId: 'SO000001', } @@ -142,7 +142,7 @@ class SupplyOrderLineItemAssociateForm extends Component { {getFieldDecorator('skuId', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -152,7 +152,7 @@ class SupplyOrderLineItemAssociateForm extends Component { {getFieldDecorator('skuName', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -162,7 +162,7 @@ class SupplyOrderLineItemAssociateForm extends Component { {getFieldDecorator('amount', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -172,7 +172,7 @@ class SupplyOrderLineItemAssociateForm extends Component { {getFieldDecorator('quantity', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -182,7 +182,7 @@ class SupplyOrderLineItemAssociateForm extends Component { {getFieldDecorator('unitOfMeasurement', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.associateform.less b/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.associateform.less +++ b/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.base.js b/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.base.js index 6423ee42c..8418a8c89 100644 --- a/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.base.js +++ b/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.base.js @@ -1,10 +1,33 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"供应订单行项目", menuFor: "supplyOrderLineItem", subItems: [ @@ -12,81 +35,6 @@ const menuData = {menuName:"供应订单行项目", menuFor: "supplyOrderLineIte ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) - -} - -const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record) }, - { title: '订单', dataIndex: 'bizOrder', render: (text, record) => renderReferenceCell(text, record)}, - { title: '产品ID', debugtype: 'string', dataIndex: 'skuId', width: '7',render: (text, record)=>renderTextCell(text,record) }, - { title: '产品名称', debugtype: 'string', dataIndex: 'skuName', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: '金额', dataIndex: 'amount', className:'money', render: (text, record) => renderMoneyCell(text, record) }, - { title: '数量', debugtype: 'int', dataIndex: 'quantity', width: '9',render: (text, record)=>renderTextCell(text,record) }, - { title: '测量单位', debugtype: 'string', dataIndex: 'unitOfMeasurement', width: '6',render: (text, record)=>renderTextCell(text,record) }, - -] - const fieldLabels = { id: '序号', bizOrder: '订单', @@ -98,8 +46,48 @@ const fieldLabels = { } +const displayColumns = [ + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.bizOrder, dataIndex: 'bizOrder', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.skuId, debugtype: 'string', dataIndex: 'skuId', width: '7',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.skuName, debugtype: 'string', dataIndex: 'skuName', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.amount, dataIndex: 'amount', className:'money', render: (text, record) => renderMoneyCell(text, record), sorter: true }, + { title: fieldLabels.quantity, debugtype: 'int', dataIndex: 'quantity', width: '9',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.unitOfMeasurement, debugtype: 'string', dataIndex: 'unitOfMeasurement', width: '6',render: (text, record)=>renderTextCell(text,record)}, + +] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({supplyOrderLineItem,targetComponent})=>{ + + + + const {SupplyOrderLineItemService} = GlobalComponents + // const userContext = null + return ( + +{supplyOrderLineItem.id} +{supplyOrderLineItem.bizOrder==null?appLocaleName(userContext,"NotAssigned"):`${supplyOrderLineItem.bizOrder.displayName}(${supplyOrderLineItem.bizOrder.id})`} + + showTransferModel(targetComponent,"订单","supplyOrder",SupplyOrderLineItemService.requestCandidateBizOrder, + SupplyOrderLineItemService.transferToAnotherBizOrder,"anotherBizOrderId",supplyOrderLineItem.bizOrder?supplyOrderLineItem.bizOrder.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{supplyOrderLineItem.skuId} +{supplyOrderLineItem.skuName} +{supplyOrderLineItem.amount} +{supplyOrderLineItem.quantity} +{supplyOrderLineItem.unitOfMeasurement} + + {buildTransferModal(supplyOrderLineItem,targetComponent)} + + ) + +} + + + -const SupplyOrderLineItemBase={menuData,displayColumns,fieldLabels} +const SupplyOrderLineItemBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default SupplyOrderLineItemBase diff --git a/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.createform.js b/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.createform.js index b582d5107..15ebe619b 100644 --- a/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.createform.js +++ b/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.createform.js @@ -19,8 +19,8 @@ const testValues = {}; const testValues = { skuId: 'SKU', skuName: '大瓶可乐', - amount: '4.28', - quantity: '8454', + amount: '4.61', + quantity: '9192', unitOfMeasurement: '件', bizOrderId: 'SO000001', } @@ -211,7 +211,7 @@ class SupplyOrderLineItemCreateForm extends Component { {getFieldDecorator('skuId', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -221,7 +221,7 @@ class SupplyOrderLineItemCreateForm extends Component { {getFieldDecorator('skuName', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -231,7 +231,7 @@ class SupplyOrderLineItemCreateForm extends Component { {getFieldDecorator('amount', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -241,7 +241,7 @@ class SupplyOrderLineItemCreateForm extends Component { {getFieldDecorator('quantity', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -251,7 +251,7 @@ class SupplyOrderLineItemCreateForm extends Component { {getFieldDecorator('unitOfMeasurement', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.dashboard.js b/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.dashboard.js index 3f6146b47..6647d7058 100644 --- a/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.dashboard.js +++ b/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -145,6 +145,7 @@ class SupplyOrderLineItemDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -153,13 +154,17 @@ class SupplyOrderLineItemDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.model.js b/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.model.js index dc7d4f273..1d47bce94 100644 --- a/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.model.js +++ b/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' diff --git a/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.permission.js b/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.permission.js new file mode 100644 index 000000000..9e14a59d7 --- /dev/null +++ b/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.permission.js @@ -0,0 +1,88 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './SupplyOrderLineItem.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (supplyOrderLineItem,targetComponent) =>{ + const userContext = null + return ( + +{supplyOrderLineItem.id} +{supplyOrderLineItem.skuId} +{supplyOrderLineItem.skuName} +{supplyOrderLineItem.amount} +{supplyOrderLineItem.quantity} +{supplyOrderLineItem.unitOfMeasurement} + + + ) +} + + +const renderPermissionSetting = supplyOrderLineItem => { + const {SupplyOrderLineItemBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class SupplyOrderLineItemPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const supplyOrderLineItem = this.props.supplyOrderLineItem; + const { id,displayName, } = supplyOrderLineItem + const cardsData = {cardsName:"供应订单行项目",cardsFor: "supplyOrderLineItem",cardsSource: supplyOrderLineItem, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + supplyOrderLineItem: state._supplyOrderLineItem, +}))(Form.create()(SupplyOrderLineItemPermission)) + diff --git a/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.permission.less b/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.preference.js b/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.preference.js index d6aea5d8a..fbc48e06e 100644 --- a/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.preference.js +++ b/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.preference.js @@ -309,8 +309,12 @@ class SupplyOrderLineItemPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, } = this.props.supplyOrderLineItem - const cardsData = {cardsName:"供应订单行项目",cardsFor: "supplyOrderLineItem",cardsSource: this.props.supplyOrderLineItem, + const supplyOrderLineItem = this.props.supplyOrderLineItem; + const { id,displayName, } = supplyOrderLineItem + + + + const cardsData = {cardsName:"供应订单行项目",cardsFor: "supplyOrderLineItem",cardsSource: supplyOrderLineItem, subItems: [ ], diff --git a/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.profile.js b/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.profile.js new file mode 100644 index 000000000..a3a427c38 --- /dev/null +++ b/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.profile.js @@ -0,0 +1,95 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './SupplyOrderLineItem.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (supplyOrderLineItem,targetComponent) =>{ + const userContext = null + return ( + +{supplyOrderLineItem.id} +{supplyOrderLineItem.skuId} +{supplyOrderLineItem.skuName} +{supplyOrderLineItem.amount} +{supplyOrderLineItem.quantity} +{supplyOrderLineItem.unitOfMeasurement} + + + ) +} + + + +class SupplyOrderLineItemProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const supplyOrderLineItem = this.props.supplyOrderLineItem; + const { id,displayName, } = supplyOrderLineItem + + const cardsData = {cardsName:"供应订单行项目",cardsFor: "supplyOrderLineItem",cardsSource: supplyOrderLineItem, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + supplyOrderLineItem: state._supplyOrderLineItem, +}))(Form.create()(SupplyOrderLineItemProfile)) + diff --git a/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.profile.less b/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.search.js b/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.search.js index bfc0aec3c..d34cd13c1 100644 --- a/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.search.js +++ b/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.searchform.js b/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.searchform.js index 9c972fd67..a16aa709d 100644 --- a/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.searchform.js +++ b/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`supplyOrderLineItemList.searchField`] = fieldName - value[`supplyOrderLineItemList.searchVerb`] = searchVerb - value[`supplyOrderLineItemList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,13 +127,14 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'bizOrder')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'skuId')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'skuName')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'unitOfMeasurement')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'bizOrder')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'skuId')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'skuName')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'unitOfMeasurement')) console.log("the final parameter", paramList) @@ -149,11 +150,12 @@ componentDidMount() { } - params['supplyOrderLineItemList'] = 1 - params['supplyOrderLineItemList.orderBy.0'] = "id" - params['supplyOrderLineItemList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -215,8 +217,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -302,8 +304,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.table.js b/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.table.js index 5e26da332..4a924b445 100644 --- a/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.table.js +++ b/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.table.js @@ -40,24 +40,53 @@ class SupplyOrderLineItemTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = SupplyOrderLineItemBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class SupplyOrderLineItemTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class SupplyOrderLineItemTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.updateform.js b/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.updateform.js index feef53c7b..2c2ca42b2 100644 --- a/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.updateform.js +++ b/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.updateform.js @@ -261,7 +261,7 @@ class SupplyOrderLineItemUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class SupplyOrderLineItemUpdateForm extends Component { initialValue: selectedRow.skuId, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -285,7 +285,7 @@ class SupplyOrderLineItemUpdateForm extends Component { initialValue: selectedRow.skuName, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -297,7 +297,7 @@ class SupplyOrderLineItemUpdateForm extends Component { initialValue: selectedRow.amount, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -309,7 +309,7 @@ class SupplyOrderLineItemUpdateForm extends Component { initialValue: selectedRow.quantity, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -321,7 +321,7 @@ class SupplyOrderLineItemUpdateForm extends Component { initialValue: selectedRow.unitOfMeasurement, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.app.js b/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.app.js index 06257c476..fe25fb383 100644 --- a/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.app.js +++ b/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class SupplyOrderPaymentGroupBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -157,12 +166,14 @@ class SupplyOrderPaymentGroupBizApp extends React.PureComponent { buildRouters = () =>{ const {SupplyOrderPaymentGroupDashboard} = GlobalComponents - const {SupplyOrderPaymentGroupPreference} = GlobalComponents + const {SupplyOrderPaymentGroupPermission} = GlobalComponents + const {SupplyOrderPaymentGroupProfile} = GlobalComponents const routers=[ {path:"/supplyOrderPaymentGroup/:id/dashboard", component: SupplyOrderPaymentGroupDashboard}, - {path:"/supplyOrderPaymentGroup/:id/preference", component: SupplyOrderPaymentGroupPreference}, + {path:"/supplyOrderPaymentGroup/:id/profile", component: SupplyOrderPaymentGroupProfile}, + {path:"/supplyOrderPaymentGroup/:id/permission", component: SupplyOrderPaymentGroupPermission}, diff --git a/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.associateform.js b/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.associateform.js index 6e8396a35..e093d3639 100644 --- a/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.associateform.js +++ b/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.associateform.js @@ -139,7 +139,7 @@ class SupplyOrderPaymentGroupAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -149,7 +149,7 @@ class SupplyOrderPaymentGroupAssociateForm extends Component { {getFieldDecorator('cardNumber', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.associateform.less b/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.associateform.less +++ b/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.base.js b/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.base.js index 601e986cc..2526e024b 100644 --- a/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.base.js +++ b/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.base.js @@ -1,10 +1,33 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"供应订单付款组", menuFor: "supplyOrderPaymentGroup", subItems: [ @@ -12,88 +35,50 @@ const menuData = {menuName:"供应订单付款组", menuFor: "supplyOrderPayment ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + name: '名称', + bizOrder: '订单', + cardNumber: '卡号码', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record) }, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: '订单', dataIndex: 'bizOrder', render: (text, record) => renderReferenceCell(text, record)}, - { title: '卡号码', debugtype: 'string', dataIndex: 'cardNumber', width: '21',render: (text, record)=>renderTextCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.bizOrder, dataIndex: 'bizOrder', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.cardNumber, debugtype: 'string', dataIndex: 'cardNumber', width: '21',render: (text, record)=>renderTextCell(text,record)}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({supplyOrderPaymentGroup,targetComponent})=>{ -const fieldLabels = { - id: '序号', - name: '名称', - bizOrder: '订单', - cardNumber: '卡号码', + + + const {SupplyOrderPaymentGroupService} = GlobalComponents + // const userContext = null + return ( + +{supplyOrderPaymentGroup.id} +{supplyOrderPaymentGroup.name} +{supplyOrderPaymentGroup.bizOrder==null?appLocaleName(userContext,"NotAssigned"):`${supplyOrderPaymentGroup.bizOrder.displayName}(${supplyOrderPaymentGroup.bizOrder.id})`} + + showTransferModel(targetComponent,"订单","supplyOrder",SupplyOrderPaymentGroupService.requestCandidateBizOrder, + SupplyOrderPaymentGroupService.transferToAnotherBizOrder,"anotherBizOrderId",supplyOrderPaymentGroup.bizOrder?supplyOrderPaymentGroup.bizOrder.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{supplyOrderPaymentGroup.cardNumber} + + {buildTransferModal(supplyOrderPaymentGroup,targetComponent)} + + ) } + + -const SupplyOrderPaymentGroupBase={menuData,displayColumns,fieldLabels} +const SupplyOrderPaymentGroupBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default SupplyOrderPaymentGroupBase diff --git a/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.createform.js b/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.createform.js index a39933c57..9e75241d2 100644 --- a/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.createform.js +++ b/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.createform.js @@ -208,7 +208,7 @@ class SupplyOrderPaymentGroupCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -218,7 +218,7 @@ class SupplyOrderPaymentGroupCreateForm extends Component { {getFieldDecorator('cardNumber', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.dashboard.js b/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.dashboard.js index 928fe1ac8..738f3f503 100644 --- a/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.dashboard.js +++ b/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -142,6 +142,7 @@ class SupplyOrderPaymentGroupDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -150,13 +151,17 @@ class SupplyOrderPaymentGroupDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.model.js b/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.model.js index 6b507c163..ddcf4b07c 100644 --- a/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.model.js +++ b/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' diff --git a/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.permission.js b/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.permission.js new file mode 100644 index 000000000..89c1ec0e6 --- /dev/null +++ b/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.permission.js @@ -0,0 +1,85 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './SupplyOrderPaymentGroup.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (supplyOrderPaymentGroup,targetComponent) =>{ + const userContext = null + return ( + +{supplyOrderPaymentGroup.id} +{supplyOrderPaymentGroup.name} +{supplyOrderPaymentGroup.cardNumber} + + + ) +} + + +const renderPermissionSetting = supplyOrderPaymentGroup => { + const {SupplyOrderPaymentGroupBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class SupplyOrderPaymentGroupPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const supplyOrderPaymentGroup = this.props.supplyOrderPaymentGroup; + const { id,displayName, } = supplyOrderPaymentGroup + const cardsData = {cardsName:"供应订单付款组",cardsFor: "supplyOrderPaymentGroup",cardsSource: supplyOrderPaymentGroup, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + supplyOrderPaymentGroup: state._supplyOrderPaymentGroup, +}))(Form.create()(SupplyOrderPaymentGroupPermission)) + diff --git a/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.permission.less b/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.preference.js b/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.preference.js index b4cec8c94..b4f69ab3a 100644 --- a/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.preference.js +++ b/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.preference.js @@ -306,8 +306,12 @@ class SupplyOrderPaymentGroupPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, } = this.props.supplyOrderPaymentGroup - const cardsData = {cardsName:"供应订单付款组",cardsFor: "supplyOrderPaymentGroup",cardsSource: this.props.supplyOrderPaymentGroup, + const supplyOrderPaymentGroup = this.props.supplyOrderPaymentGroup; + const { id,displayName, } = supplyOrderPaymentGroup + + + + const cardsData = {cardsName:"供应订单付款组",cardsFor: "supplyOrderPaymentGroup",cardsSource: supplyOrderPaymentGroup, subItems: [ ], diff --git a/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.profile.js b/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.profile.js new file mode 100644 index 000000000..eba5f3da2 --- /dev/null +++ b/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.profile.js @@ -0,0 +1,92 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './SupplyOrderPaymentGroup.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (supplyOrderPaymentGroup,targetComponent) =>{ + const userContext = null + return ( + +{supplyOrderPaymentGroup.id} +{supplyOrderPaymentGroup.name} +{supplyOrderPaymentGroup.cardNumber} + + + ) +} + + + +class SupplyOrderPaymentGroupProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const supplyOrderPaymentGroup = this.props.supplyOrderPaymentGroup; + const { id,displayName, } = supplyOrderPaymentGroup + + const cardsData = {cardsName:"供应订单付款组",cardsFor: "supplyOrderPaymentGroup",cardsSource: supplyOrderPaymentGroup, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + supplyOrderPaymentGroup: state._supplyOrderPaymentGroup, +}))(Form.create()(SupplyOrderPaymentGroupProfile)) + diff --git a/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.profile.less b/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.search.js b/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.search.js index 8500a5b96..40488d4b4 100644 --- a/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.search.js +++ b/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.searchform.js b/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.searchform.js index 0efbaa14c..487f9ade5 100644 --- a/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.searchform.js +++ b/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`supplyOrderPaymentGroupList.searchField`] = fieldName - value[`supplyOrderPaymentGroupList.searchVerb`] = searchVerb - value[`supplyOrderPaymentGroupList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,12 +127,13 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'bizOrder')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'cardNumber')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'bizOrder')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'cardNumber')) console.log("the final parameter", paramList) @@ -148,11 +149,12 @@ componentDidMount() { } - params['supplyOrderPaymentGroupList'] = 1 - params['supplyOrderPaymentGroupList.orderBy.0'] = "id" - params['supplyOrderPaymentGroupList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -207,8 +209,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -286,8 +288,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.table.js b/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.table.js index 50ddf2ff9..d88828430 100644 --- a/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.table.js +++ b/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.table.js @@ -40,24 +40,53 @@ class SupplyOrderPaymentGroupTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = SupplyOrderPaymentGroupBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class SupplyOrderPaymentGroupTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class SupplyOrderPaymentGroupTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.updateform.js b/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.updateform.js index 4545ccba6..2f98f46b4 100644 --- a/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.updateform.js +++ b/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.updateform.js @@ -261,7 +261,7 @@ class SupplyOrderPaymentGroupUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class SupplyOrderPaymentGroupUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -285,7 +285,7 @@ class SupplyOrderPaymentGroupUpdateForm extends Component { initialValue: selectedRow.cardNumber, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.app.js b/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.app.js index e549b87f5..972f8b399 100644 --- a/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.app.js +++ b/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class SupplyOrderPickingBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class SupplyOrderPickingBizApp extends React.PureComponent { buildRouters = () =>{ const {SupplyOrderPickingDashboard} = GlobalComponents - const {SupplyOrderPickingPreference} = GlobalComponents + const {SupplyOrderPickingPermission} = GlobalComponents + const {SupplyOrderPickingProfile} = GlobalComponents const routers=[ {path:"/supplyOrderPicking/:id/dashboard", component: SupplyOrderPickingDashboard}, - {path:"/supplyOrderPicking/:id/preference", component: SupplyOrderPickingPreference}, + {path:"/supplyOrderPicking/:id/profile", component: SupplyOrderPickingProfile}, + {path:"/supplyOrderPicking/:id/permission", component: SupplyOrderPickingPermission}, diff --git a/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.associateform.js b/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.associateform.js index 96ac22810..0435673a0 100644 --- a/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.associateform.js +++ b/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { who: '处理者', - processTime: '2019-02-06', + processTime: '2018-12-11', } */ @@ -139,7 +139,7 @@ class SupplyOrderPickingAssociateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -149,7 +149,7 @@ class SupplyOrderPickingAssociateForm extends Component { {getFieldDecorator('processTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.associateform.less b/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.associateform.less +++ b/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.base.js b/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.base.js index 47cc13401..5a8bf092e 100644 --- a/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.base.js +++ b/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.base.js @@ -1,98 +1,77 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"供应订单拣货", menuFor: "supplyOrderPicking", subItems: [ - {name: 'supplyOrderList', displayName:'供应订单', icon:'first-order',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'supplyOrderList', displayName:'供应订单', icon:'first-order',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + who: '谁', + processTime: '过程的时间', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'supplyOrderPicking') }, - { title: '谁', debugtype: 'string', dataIndex: 'who', width: '7',render: (text, record)=>renderTextCell(text,record) }, - { title: '过程的时间', dataIndex: 'processTime', render: (text, record) =>renderDateCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'supplyOrderPicking') , sorter: true }, + { title: fieldLabels.who, debugtype: 'string', dataIndex: 'who', width: '7',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.processTime, dataIndex: 'processTime', render: (text, record) =>renderDateCell(text,record), sorter: true }, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({supplyOrderPicking,targetComponent})=>{ -const fieldLabels = { - id: '序号', - who: '谁', - processTime: '过程的时间', + + + const {SupplyOrderPickingService} = GlobalComponents + // const userContext = null + return ( + +{supplyOrderPicking.id} +{supplyOrderPicking.who} +{ moment(supplyOrderPicking.processTime).format('YYYY-MM-DD')} + + {buildTransferModal(supplyOrderPicking,targetComponent)} + + ) } + + -const SupplyOrderPickingBase={menuData,displayColumns,fieldLabels} +const SupplyOrderPickingBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default SupplyOrderPickingBase diff --git a/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.createform.js b/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.createform.js index e03ea2561..0f5bea87d 100644 --- a/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.createform.js +++ b/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { who: '处理者', - processTime: '2016-11-01', + processTime: '2017-01-08', } */ @@ -207,7 +207,7 @@ class SupplyOrderPickingCreateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -217,7 +217,7 @@ class SupplyOrderPickingCreateForm extends Component { {getFieldDecorator('processTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.dashboard.js b/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.dashboard.js index d345e6cf3..a2d1e8bce 100644 --- a/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.dashboard.js +++ b/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -137,6 +137,7 @@ class SupplyOrderPickingDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -145,13 +146,17 @@ class SupplyOrderPickingDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.model.js b/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.model.js index e7eefa7f4..382d2db8a 100644 --- a/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.model.js +++ b/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/supplyOrderPicking/${id}/list/\SupplyOrderList/供应订单+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/supplyOrderPicking/${id}/list/SupplyOrderList/供应订单+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateSupplyOrder({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/supplyOrderPicking/${id}/list/\SupplyOrderList/供应订单列表`, state: newPlayload } + const location = { pathname: `/supplyOrderPicking/${id}/list/SupplyOrderList/供应订单列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextSupplyOrderUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.permission.js b/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.permission.js new file mode 100644 index 000000000..f0709801e --- /dev/null +++ b/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.permission.js @@ -0,0 +1,85 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './SupplyOrderPicking.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (supplyOrderPicking,targetComponent) =>{ + const userContext = null + return ( + +{supplyOrderPicking.id} +{supplyOrderPicking.who} +{ moment(supplyOrderPicking.processTime).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = supplyOrderPicking => { + const {SupplyOrderPickingBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class SupplyOrderPickingPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const supplyOrderPicking = this.props.supplyOrderPicking; + const { id,displayName, supplyOrderCount } = supplyOrderPicking + const cardsData = {cardsName:"供应订单拣货",cardsFor: "supplyOrderPicking",cardsSource: supplyOrderPicking, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + supplyOrderPicking: state._supplyOrderPicking, +}))(Form.create()(SupplyOrderPickingPermission)) + diff --git a/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.permission.less b/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.preference.js b/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.preference.js index c5d8f0008..4d3a43293 100644 --- a/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.preference.js +++ b/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.preference.js @@ -300,8 +300,12 @@ class SupplyOrderPickingPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, supplyOrderCount } = this.props.supplyOrderPicking - const cardsData = {cardsName:"供应订单拣货",cardsFor: "supplyOrderPicking",cardsSource: this.props.supplyOrderPicking, + const supplyOrderPicking = this.props.supplyOrderPicking; + const { id,displayName, supplyOrderCount } = supplyOrderPicking + + + + const cardsData = {cardsName:"供应订单拣货",cardsFor: "supplyOrderPicking",cardsSource: supplyOrderPicking, subItems: [ ], diff --git a/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.profile.js b/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.profile.js new file mode 100644 index 000000000..98969b63f --- /dev/null +++ b/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.profile.js @@ -0,0 +1,92 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './SupplyOrderPicking.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (supplyOrderPicking,targetComponent) =>{ + const userContext = null + return ( + +{supplyOrderPicking.id} +{supplyOrderPicking.who} +{ moment(supplyOrderPicking.processTime).format('YYYY-MM-DD')} + + + ) +} + + + +class SupplyOrderPickingProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const supplyOrderPicking = this.props.supplyOrderPicking; + const { id,displayName, supplyOrderCount } = supplyOrderPicking + + const cardsData = {cardsName:"供应订单拣货",cardsFor: "supplyOrderPicking",cardsSource: supplyOrderPicking, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + supplyOrderPicking: state._supplyOrderPicking, +}))(Form.create()(SupplyOrderPickingProfile)) + diff --git a/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.profile.less b/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.search.js b/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.search.js index fbb3c543f..d1bf54670 100644 --- a/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.search.js +++ b/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.searchform.js b/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.searchform.js index 8db78f246..0e3fb1ac3 100644 --- a/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.searchform.js +++ b/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`supplyOrderPickingList.searchField`] = fieldName - value[`supplyOrderPickingList.searchVerb`] = searchVerb - value[`supplyOrderPickingList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,10 +127,11 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'who')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'who')) console.log("the final parameter", paramList) @@ -146,11 +147,12 @@ componentDidMount() { } - params['supplyOrderPickingList'] = 1 - params['supplyOrderPickingList.orderBy.0'] = "id" - params['supplyOrderPickingList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -205,8 +207,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -261,8 +263,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.table.js b/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.table.js index efcf36193..6ec4c9d24 100644 --- a/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.table.js +++ b/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.table.js @@ -40,24 +40,53 @@ class SupplyOrderPickingTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = SupplyOrderPickingBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class SupplyOrderPickingTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class SupplyOrderPickingTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.updateform.js b/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.updateform.js index e0f2f3310..8d80406f1 100644 --- a/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.updateform.js +++ b/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.updateform.js @@ -262,7 +262,7 @@ class SupplyOrderPickingUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class SupplyOrderPickingUpdateForm extends Component { initialValue: selectedRow.who, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class SupplyOrderPickingUpdateForm extends Component { initialValue: selectedRow.processTime, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.app.js b/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.app.js index c4884daa6..3c647a2a0 100644 --- a/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.app.js +++ b/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class SupplyOrderProcessingBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -255,12 +264,14 @@ class SupplyOrderProcessingBizApp extends React.PureComponent { buildRouters = () =>{ const {SupplyOrderProcessingDashboard} = GlobalComponents - const {SupplyOrderProcessingPreference} = GlobalComponents + const {SupplyOrderProcessingPermission} = GlobalComponents + const {SupplyOrderProcessingProfile} = GlobalComponents const routers=[ {path:"/supplyOrderProcessing/:id/dashboard", component: SupplyOrderProcessingDashboard}, - {path:"/supplyOrderProcessing/:id/preference", component: SupplyOrderProcessingPreference}, + {path:"/supplyOrderProcessing/:id/profile", component: SupplyOrderProcessingProfile}, + {path:"/supplyOrderProcessing/:id/permission", component: SupplyOrderProcessingPermission}, diff --git a/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.associateform.js b/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.associateform.js index 7d36980bb..2edff519c 100644 --- a/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.associateform.js +++ b/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { who: '处理者', - processTime: '2017-04-02', + processTime: '2017-10-09', } */ @@ -140,7 +140,7 @@ class SupplyOrderProcessingAssociateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -150,7 +150,7 @@ class SupplyOrderProcessingAssociateForm extends Component { {getFieldDecorator('processTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.associateform.less b/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.associateform.less +++ b/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.base.js b/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.base.js index 04877efc3..2250a94bd 100644 --- a/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.base.js +++ b/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.base.js @@ -1,99 +1,78 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"供应订单处理", menuFor: "supplyOrderProcessing", subItems: [ - {name: 'consumerOrderList', displayName:'消费者订单', icon:'first-order',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'supplyOrderList', displayName:'供应订单', icon:'first-order',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'consumerOrderList', displayName:'消费者订单', icon:'first-order',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'supplyOrderList', displayName:'供应订单', icon:'first-order',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + who: '谁', + processTime: '过程的时间', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'supplyOrderProcessing') }, - { title: '谁', debugtype: 'string', dataIndex: 'who', width: '7',render: (text, record)=>renderTextCell(text,record) }, - { title: '过程的时间', dataIndex: 'processTime', render: (text, record) =>renderDateCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'supplyOrderProcessing') , sorter: true }, + { title: fieldLabels.who, debugtype: 'string', dataIndex: 'who', width: '7',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.processTime, dataIndex: 'processTime', render: (text, record) =>renderDateCell(text,record), sorter: true }, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({supplyOrderProcessing,targetComponent})=>{ -const fieldLabels = { - id: '序号', - who: '谁', - processTime: '过程的时间', + + + const {SupplyOrderProcessingService} = GlobalComponents + // const userContext = null + return ( + +{supplyOrderProcessing.id} +{supplyOrderProcessing.who} +{ moment(supplyOrderProcessing.processTime).format('YYYY-MM-DD')} + + {buildTransferModal(supplyOrderProcessing,targetComponent)} + + ) } + + -const SupplyOrderProcessingBase={menuData,displayColumns,fieldLabels} +const SupplyOrderProcessingBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default SupplyOrderProcessingBase diff --git a/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.createform.js b/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.createform.js index 0582ee1a4..6a002d004 100644 --- a/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.createform.js +++ b/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { who: '处理者', - processTime: '2018-04-30', + processTime: '2017-09-09', } */ @@ -207,7 +207,7 @@ class SupplyOrderProcessingCreateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -217,7 +217,7 @@ class SupplyOrderProcessingCreateForm extends Component { {getFieldDecorator('processTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.dashboard.js b/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.dashboard.js index f9e4692af..751902f88 100644 --- a/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.dashboard.js +++ b/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -138,6 +138,7 @@ class SupplyOrderProcessingDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -146,13 +147,17 @@ class SupplyOrderProcessingDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.model.js b/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.model.js index c3aa69402..26641949d 100644 --- a/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.model.js +++ b/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/supplyOrderProcessing/${id}/list/\ConsumerOrderList/消费者订单+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/supplyOrderProcessing/${id}/list/ConsumerOrderList/消费者订单+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateConsumerOrder({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/supplyOrderProcessing/${id}/list/\ConsumerOrderList/消费者订单列表`, state: newPlayload } + const location = { pathname: `/supplyOrderProcessing/${id}/list/ConsumerOrderList/消费者订单列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextConsumerOrderUpdateRow({ payload }, { call, put }) { @@ -206,7 +206,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/supplyOrderProcessing/${id}/list/\SupplyOrderList/供应订单+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/supplyOrderProcessing/${id}/list/SupplyOrderList/供应订单+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateSupplyOrder({ payload }, { call, put }) { @@ -228,7 +228,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/supplyOrderProcessing/${id}/list/\SupplyOrderList/供应订单列表`, state: newPlayload } + const location = { pathname: `/supplyOrderProcessing/${id}/list/SupplyOrderList/供应订单列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextSupplyOrderUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.permission.js b/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.permission.js new file mode 100644 index 000000000..53ececf18 --- /dev/null +++ b/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.permission.js @@ -0,0 +1,85 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './SupplyOrderProcessing.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (supplyOrderProcessing,targetComponent) =>{ + const userContext = null + return ( + +{supplyOrderProcessing.id} +{supplyOrderProcessing.who} +{ moment(supplyOrderProcessing.processTime).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = supplyOrderProcessing => { + const {SupplyOrderProcessingBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class SupplyOrderProcessingPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const supplyOrderProcessing = this.props.supplyOrderProcessing; + const { id,displayName, consumerOrderCount, supplyOrderCount } = supplyOrderProcessing + const cardsData = {cardsName:"供应订单处理",cardsFor: "supplyOrderProcessing",cardsSource: supplyOrderProcessing, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + supplyOrderProcessing: state._supplyOrderProcessing, +}))(Form.create()(SupplyOrderProcessingPermission)) + diff --git a/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.permission.less b/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.preference.js b/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.preference.js index 3818ec84f..af36253d2 100644 --- a/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.preference.js +++ b/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.preference.js @@ -300,8 +300,12 @@ class SupplyOrderProcessingPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, consumerOrderCount, supplyOrderCount } = this.props.supplyOrderProcessing - const cardsData = {cardsName:"供应订单处理",cardsFor: "supplyOrderProcessing",cardsSource: this.props.supplyOrderProcessing, + const supplyOrderProcessing = this.props.supplyOrderProcessing; + const { id,displayName, consumerOrderCount, supplyOrderCount } = supplyOrderProcessing + + + + const cardsData = {cardsName:"供应订单处理",cardsFor: "supplyOrderProcessing",cardsSource: supplyOrderProcessing, subItems: [ ], diff --git a/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.profile.js b/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.profile.js new file mode 100644 index 000000000..4bb01dd21 --- /dev/null +++ b/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.profile.js @@ -0,0 +1,92 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './SupplyOrderProcessing.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (supplyOrderProcessing,targetComponent) =>{ + const userContext = null + return ( + +{supplyOrderProcessing.id} +{supplyOrderProcessing.who} +{ moment(supplyOrderProcessing.processTime).format('YYYY-MM-DD')} + + + ) +} + + + +class SupplyOrderProcessingProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const supplyOrderProcessing = this.props.supplyOrderProcessing; + const { id,displayName, consumerOrderCount, supplyOrderCount } = supplyOrderProcessing + + const cardsData = {cardsName:"供应订单处理",cardsFor: "supplyOrderProcessing",cardsSource: supplyOrderProcessing, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + supplyOrderProcessing: state._supplyOrderProcessing, +}))(Form.create()(SupplyOrderProcessingProfile)) + diff --git a/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.profile.less b/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.search.js b/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.search.js index 761818431..89734f870 100644 --- a/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.search.js +++ b/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.searchform.js b/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.searchform.js index da848df61..a2cf8847e 100644 --- a/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.searchform.js +++ b/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`supplyOrderProcessingList.searchField`] = fieldName - value[`supplyOrderProcessingList.searchVerb`] = searchVerb - value[`supplyOrderProcessingList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,10 +127,11 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'who')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'who')) console.log("the final parameter", paramList) @@ -146,11 +147,12 @@ componentDidMount() { } - params['supplyOrderProcessingList'] = 1 - params['supplyOrderProcessingList.orderBy.0'] = "id" - params['supplyOrderProcessingList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -205,8 +207,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -261,8 +263,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.table.js b/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.table.js index 57a25a6c7..60f744420 100644 --- a/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.table.js +++ b/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.table.js @@ -40,24 +40,53 @@ class SupplyOrderProcessingTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = SupplyOrderProcessingBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class SupplyOrderProcessingTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class SupplyOrderProcessingTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.updateform.js b/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.updateform.js index e4ebe0eec..f30d515a0 100644 --- a/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.updateform.js +++ b/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.updateform.js @@ -262,7 +262,7 @@ class SupplyOrderProcessingUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class SupplyOrderProcessingUpdateForm extends Component { initialValue: selectedRow.who, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class SupplyOrderProcessingUpdateForm extends Component { initialValue: selectedRow.processTime, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.app.js b/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.app.js index 29f81ed70..6600506c6 100644 --- a/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.app.js +++ b/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class SupplyOrderShipmentBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -255,12 +264,14 @@ class SupplyOrderShipmentBizApp extends React.PureComponent { buildRouters = () =>{ const {SupplyOrderShipmentDashboard} = GlobalComponents - const {SupplyOrderShipmentPreference} = GlobalComponents + const {SupplyOrderShipmentPermission} = GlobalComponents + const {SupplyOrderShipmentProfile} = GlobalComponents const routers=[ {path:"/supplyOrderShipment/:id/dashboard", component: SupplyOrderShipmentDashboard}, - {path:"/supplyOrderShipment/:id/preference", component: SupplyOrderShipmentPreference}, + {path:"/supplyOrderShipment/:id/profile", component: SupplyOrderShipmentProfile}, + {path:"/supplyOrderShipment/:id/permission", component: SupplyOrderShipmentPermission}, diff --git a/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.associateform.js b/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.associateform.js index 392e23986..67b947d5c 100644 --- a/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.associateform.js +++ b/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { who: '运货者', - shipTime: '2018-03-30', + shipTime: '2017-10-12', } */ @@ -140,7 +140,7 @@ class SupplyOrderShipmentAssociateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -150,7 +150,7 @@ class SupplyOrderShipmentAssociateForm extends Component { {getFieldDecorator('shipTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.associateform.less b/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.associateform.less +++ b/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.base.js b/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.base.js index aea224032..1889d72e6 100644 --- a/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.base.js +++ b/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.base.js @@ -1,99 +1,78 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"供应货", menuFor: "supplyOrderShipment", subItems: [ - {name: 'consumerOrderList', displayName:'消费者订单', icon:'first-order',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'supplyOrderList', displayName:'供应订单', icon:'first-order',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'consumerOrderList', displayName:'消费者订单', icon:'first-order',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'supplyOrderList', displayName:'供应订单', icon:'first-order',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + who: '谁', + shipTime: '船的时间', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'supplyOrderShipment') }, - { title: '谁', debugtype: 'string', dataIndex: 'who', width: '7',render: (text, record)=>renderTextCell(text,record) }, - { title: '船的时间', dataIndex: 'shipTime', render: (text, record) =>renderDateCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'supplyOrderShipment') , sorter: true }, + { title: fieldLabels.who, debugtype: 'string', dataIndex: 'who', width: '7',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.shipTime, dataIndex: 'shipTime', render: (text, record) =>renderDateCell(text,record), sorter: true }, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({supplyOrderShipment,targetComponent})=>{ -const fieldLabels = { - id: '序号', - who: '谁', - shipTime: '船的时间', + + + const {SupplyOrderShipmentService} = GlobalComponents + // const userContext = null + return ( + +{supplyOrderShipment.id} +{supplyOrderShipment.who} +{ moment(supplyOrderShipment.shipTime).format('YYYY-MM-DD')} + + {buildTransferModal(supplyOrderShipment,targetComponent)} + + ) } + + -const SupplyOrderShipmentBase={menuData,displayColumns,fieldLabels} +const SupplyOrderShipmentBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default SupplyOrderShipmentBase diff --git a/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.createform.js b/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.createform.js index 00e3fd157..a588c4d09 100644 --- a/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.createform.js +++ b/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { who: '运货者', - shipTime: '2016-09-03', + shipTime: '2017-12-11', } */ @@ -207,7 +207,7 @@ class SupplyOrderShipmentCreateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -217,7 +217,7 @@ class SupplyOrderShipmentCreateForm extends Component { {getFieldDecorator('shipTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.dashboard.js b/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.dashboard.js index 58cfbb575..909eeb4aa 100644 --- a/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.dashboard.js +++ b/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -138,6 +138,7 @@ class SupplyOrderShipmentDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -146,13 +147,17 @@ class SupplyOrderShipmentDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.model.js b/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.model.js index 4da1be1cb..99313b7ad 100644 --- a/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.model.js +++ b/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/supplyOrderShipment/${id}/list/\ConsumerOrderList/消费者订单+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/supplyOrderShipment/${id}/list/ConsumerOrderList/消费者订单+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateConsumerOrder({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/supplyOrderShipment/${id}/list/\ConsumerOrderList/消费者订单列表`, state: newPlayload } + const location = { pathname: `/supplyOrderShipment/${id}/list/ConsumerOrderList/消费者订单列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextConsumerOrderUpdateRow({ payload }, { call, put }) { @@ -206,7 +206,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/supplyOrderShipment/${id}/list/\SupplyOrderList/供应订单+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/supplyOrderShipment/${id}/list/SupplyOrderList/供应订单+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateSupplyOrder({ payload }, { call, put }) { @@ -228,7 +228,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/supplyOrderShipment/${id}/list/\SupplyOrderList/供应订单列表`, state: newPlayload } + const location = { pathname: `/supplyOrderShipment/${id}/list/SupplyOrderList/供应订单列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextSupplyOrderUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.permission.js b/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.permission.js new file mode 100644 index 000000000..f4d1bd6f8 --- /dev/null +++ b/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.permission.js @@ -0,0 +1,85 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './SupplyOrderShipment.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (supplyOrderShipment,targetComponent) =>{ + const userContext = null + return ( + +{supplyOrderShipment.id} +{supplyOrderShipment.who} +{ moment(supplyOrderShipment.shipTime).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = supplyOrderShipment => { + const {SupplyOrderShipmentBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class SupplyOrderShipmentPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const supplyOrderShipment = this.props.supplyOrderShipment; + const { id,displayName, consumerOrderCount, supplyOrderCount } = supplyOrderShipment + const cardsData = {cardsName:"供应货",cardsFor: "supplyOrderShipment",cardsSource: supplyOrderShipment, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + supplyOrderShipment: state._supplyOrderShipment, +}))(Form.create()(SupplyOrderShipmentPermission)) + diff --git a/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.permission.less b/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.preference.js b/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.preference.js index 6cf0a13fb..b75bf544a 100644 --- a/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.preference.js +++ b/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.preference.js @@ -300,8 +300,12 @@ class SupplyOrderShipmentPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, consumerOrderCount, supplyOrderCount } = this.props.supplyOrderShipment - const cardsData = {cardsName:"供应货",cardsFor: "supplyOrderShipment",cardsSource: this.props.supplyOrderShipment, + const supplyOrderShipment = this.props.supplyOrderShipment; + const { id,displayName, consumerOrderCount, supplyOrderCount } = supplyOrderShipment + + + + const cardsData = {cardsName:"供应货",cardsFor: "supplyOrderShipment",cardsSource: supplyOrderShipment, subItems: [ ], diff --git a/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.profile.js b/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.profile.js new file mode 100644 index 000000000..30194ba8d --- /dev/null +++ b/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.profile.js @@ -0,0 +1,92 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './SupplyOrderShipment.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (supplyOrderShipment,targetComponent) =>{ + const userContext = null + return ( + +{supplyOrderShipment.id} +{supplyOrderShipment.who} +{ moment(supplyOrderShipment.shipTime).format('YYYY-MM-DD')} + + + ) +} + + + +class SupplyOrderShipmentProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const supplyOrderShipment = this.props.supplyOrderShipment; + const { id,displayName, consumerOrderCount, supplyOrderCount } = supplyOrderShipment + + const cardsData = {cardsName:"供应货",cardsFor: "supplyOrderShipment",cardsSource: supplyOrderShipment, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + supplyOrderShipment: state._supplyOrderShipment, +}))(Form.create()(SupplyOrderShipmentProfile)) + diff --git a/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.profile.less b/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.search.js b/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.search.js index 418e644a3..da6e9ec01 100644 --- a/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.search.js +++ b/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.searchform.js b/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.searchform.js index f58094be9..5e5a11d42 100644 --- a/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.searchform.js +++ b/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`supplyOrderShipmentList.searchField`] = fieldName - value[`supplyOrderShipmentList.searchVerb`] = searchVerb - value[`supplyOrderShipmentList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,10 +127,11 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'who')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'who')) console.log("the final parameter", paramList) @@ -146,11 +147,12 @@ componentDidMount() { } - params['supplyOrderShipmentList'] = 1 - params['supplyOrderShipmentList.orderBy.0'] = "id" - params['supplyOrderShipmentList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -205,8 +207,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -261,8 +263,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.table.js b/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.table.js index d978c3b3c..8fc2278ea 100644 --- a/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.table.js +++ b/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.table.js @@ -40,24 +40,53 @@ class SupplyOrderShipmentTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = SupplyOrderShipmentBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class SupplyOrderShipmentTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class SupplyOrderShipmentTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.updateform.js b/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.updateform.js index 698ce4085..d5924734c 100644 --- a/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.updateform.js +++ b/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.updateform.js @@ -262,7 +262,7 @@ class SupplyOrderShipmentUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class SupplyOrderShipmentUpdateForm extends Component { initialValue: selectedRow.who, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class SupplyOrderShipmentUpdateForm extends Component { initialValue: selectedRow.shipTime, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.app.js b/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.app.js index a81898bc5..4adeb5712 100644 --- a/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.app.js +++ b/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class SupplyOrderShippingGroupBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -157,12 +166,14 @@ class SupplyOrderShippingGroupBizApp extends React.PureComponent { buildRouters = () =>{ const {SupplyOrderShippingGroupDashboard} = GlobalComponents - const {SupplyOrderShippingGroupPreference} = GlobalComponents + const {SupplyOrderShippingGroupPermission} = GlobalComponents + const {SupplyOrderShippingGroupProfile} = GlobalComponents const routers=[ {path:"/supplyOrderShippingGroup/:id/dashboard", component: SupplyOrderShippingGroupDashboard}, - {path:"/supplyOrderShippingGroup/:id/preference", component: SupplyOrderShippingGroupPreference}, + {path:"/supplyOrderShippingGroup/:id/profile", component: SupplyOrderShippingGroupProfile}, + {path:"/supplyOrderShippingGroup/:id/permission", component: SupplyOrderShippingGroupPermission}, diff --git a/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.associateform.js b/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.associateform.js index 1588a9412..03570484c 100644 --- a/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.associateform.js +++ b/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { name: '送货到双链成都2号仓', - amount: '4.32', + amount: '5.79', bizOrderId: 'SO000001', } */ @@ -139,7 +139,7 @@ class SupplyOrderShippingGroupAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -149,7 +149,7 @@ class SupplyOrderShippingGroupAssociateForm extends Component { {getFieldDecorator('amount', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.associateform.less b/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.associateform.less +++ b/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.base.js b/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.base.js index 8f89a5110..fd6137577 100644 --- a/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.base.js +++ b/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.base.js @@ -1,10 +1,33 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"供应订单送货分组", menuFor: "supplyOrderShippingGroup", subItems: [ @@ -12,88 +35,50 @@ const menuData = {menuName:"供应订单送货分组", menuFor: "supplyOrderShip ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + name: '名称', + bizOrder: '订单', + amount: '金额', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record) }, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '14',render: (text, record)=>renderTextCell(text,record) }, - { title: '订单', dataIndex: 'bizOrder', render: (text, record) => renderReferenceCell(text, record)}, - { title: '金额', dataIndex: 'amount', className:'money', render: (text, record) => renderMoneyCell(text, record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '14',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.bizOrder, dataIndex: 'bizOrder', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.amount, dataIndex: 'amount', className:'money', render: (text, record) => renderMoneyCell(text, record), sorter: true }, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({supplyOrderShippingGroup,targetComponent})=>{ -const fieldLabels = { - id: '序号', - name: '名称', - bizOrder: '订单', - amount: '金额', + + + const {SupplyOrderShippingGroupService} = GlobalComponents + // const userContext = null + return ( + +{supplyOrderShippingGroup.id} +{supplyOrderShippingGroup.name} +{supplyOrderShippingGroup.bizOrder==null?appLocaleName(userContext,"NotAssigned"):`${supplyOrderShippingGroup.bizOrder.displayName}(${supplyOrderShippingGroup.bizOrder.id})`} + + showTransferModel(targetComponent,"订单","supplyOrder",SupplyOrderShippingGroupService.requestCandidateBizOrder, + SupplyOrderShippingGroupService.transferToAnotherBizOrder,"anotherBizOrderId",supplyOrderShippingGroup.bizOrder?supplyOrderShippingGroup.bizOrder.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{supplyOrderShippingGroup.amount} + + {buildTransferModal(supplyOrderShippingGroup,targetComponent)} + + ) } + + -const SupplyOrderShippingGroupBase={menuData,displayColumns,fieldLabels} +const SupplyOrderShippingGroupBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default SupplyOrderShippingGroupBase diff --git a/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.createform.js b/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.createform.js index 0f11533bb..26ce2ddc2 100644 --- a/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.createform.js +++ b/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { name: '送货到双链成都2号仓', - amount: '5.85', + amount: '4.55', bizOrderId: 'SO000001', } */ @@ -208,7 +208,7 @@ class SupplyOrderShippingGroupCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -218,7 +218,7 @@ class SupplyOrderShippingGroupCreateForm extends Component { {getFieldDecorator('amount', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.dashboard.js b/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.dashboard.js index 29094a221..5d682ccac 100644 --- a/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.dashboard.js +++ b/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -142,6 +142,7 @@ class SupplyOrderShippingGroupDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -150,13 +151,17 @@ class SupplyOrderShippingGroupDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.model.js b/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.model.js index 42efd9631..7f37f9b02 100644 --- a/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.model.js +++ b/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' diff --git a/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.permission.js b/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.permission.js new file mode 100644 index 000000000..9a4cc79f6 --- /dev/null +++ b/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.permission.js @@ -0,0 +1,85 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './SupplyOrderShippingGroup.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (supplyOrderShippingGroup,targetComponent) =>{ + const userContext = null + return ( + +{supplyOrderShippingGroup.id} +{supplyOrderShippingGroup.name} +{supplyOrderShippingGroup.amount} + + + ) +} + + +const renderPermissionSetting = supplyOrderShippingGroup => { + const {SupplyOrderShippingGroupBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class SupplyOrderShippingGroupPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const supplyOrderShippingGroup = this.props.supplyOrderShippingGroup; + const { id,displayName, } = supplyOrderShippingGroup + const cardsData = {cardsName:"供应订单送货分组",cardsFor: "supplyOrderShippingGroup",cardsSource: supplyOrderShippingGroup, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + supplyOrderShippingGroup: state._supplyOrderShippingGroup, +}))(Form.create()(SupplyOrderShippingGroupPermission)) + diff --git a/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.permission.less b/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.preference.js b/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.preference.js index 6d5a4c646..a0126fa7f 100644 --- a/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.preference.js +++ b/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.preference.js @@ -306,8 +306,12 @@ class SupplyOrderShippingGroupPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, } = this.props.supplyOrderShippingGroup - const cardsData = {cardsName:"供应订单送货分组",cardsFor: "supplyOrderShippingGroup",cardsSource: this.props.supplyOrderShippingGroup, + const supplyOrderShippingGroup = this.props.supplyOrderShippingGroup; + const { id,displayName, } = supplyOrderShippingGroup + + + + const cardsData = {cardsName:"供应订单送货分组",cardsFor: "supplyOrderShippingGroup",cardsSource: supplyOrderShippingGroup, subItems: [ ], diff --git a/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.profile.js b/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.profile.js new file mode 100644 index 000000000..a0e2d3864 --- /dev/null +++ b/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.profile.js @@ -0,0 +1,92 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './SupplyOrderShippingGroup.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (supplyOrderShippingGroup,targetComponent) =>{ + const userContext = null + return ( + +{supplyOrderShippingGroup.id} +{supplyOrderShippingGroup.name} +{supplyOrderShippingGroup.amount} + + + ) +} + + + +class SupplyOrderShippingGroupProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const supplyOrderShippingGroup = this.props.supplyOrderShippingGroup; + const { id,displayName, } = supplyOrderShippingGroup + + const cardsData = {cardsName:"供应订单送货分组",cardsFor: "supplyOrderShippingGroup",cardsSource: supplyOrderShippingGroup, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + supplyOrderShippingGroup: state._supplyOrderShippingGroup, +}))(Form.create()(SupplyOrderShippingGroupProfile)) + diff --git a/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.profile.less b/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.search.js b/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.search.js index 8e4e80b1b..50219b66c 100644 --- a/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.search.js +++ b/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.searchform.js b/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.searchform.js index bfa2eb0f2..59ce997f7 100644 --- a/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.searchform.js +++ b/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`supplyOrderShippingGroupList.searchField`] = fieldName - value[`supplyOrderShippingGroupList.searchVerb`] = searchVerb - value[`supplyOrderShippingGroupList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,11 +127,12 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'bizOrder')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'bizOrder')) console.log("the final parameter", paramList) @@ -147,11 +148,12 @@ componentDidMount() { } - params['supplyOrderShippingGroupList'] = 1 - params['supplyOrderShippingGroupList.orderBy.0'] = "id" - params['supplyOrderShippingGroupList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -206,8 +208,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -277,8 +279,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.table.js b/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.table.js index 0f602ae17..52fc077d5 100644 --- a/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.table.js +++ b/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.table.js @@ -40,24 +40,53 @@ class SupplyOrderShippingGroupTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = SupplyOrderShippingGroupBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class SupplyOrderShippingGroupTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class SupplyOrderShippingGroupTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.updateform.js b/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.updateform.js index bd734a95b..818275e43 100644 --- a/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.updateform.js +++ b/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.updateform.js @@ -261,7 +261,7 @@ class SupplyOrderShippingGroupUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class SupplyOrderShippingGroupUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -285,7 +285,7 @@ class SupplyOrderShippingGroupUpdateForm extends Component { initialValue: selectedRow.amount, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/termination/Termination.app.js b/bizui/src/bizcomponents/termination/Termination.app.js index f6d3c4014..7e89ab37b 100644 --- a/bizui/src/bizcomponents/termination/Termination.app.js +++ b/bizui/src/bizcomponents/termination/Termination.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class TerminationBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class TerminationBizApp extends React.PureComponent { buildRouters = () =>{ const {TerminationDashboard} = GlobalComponents - const {TerminationPreference} = GlobalComponents + const {TerminationPermission} = GlobalComponents + const {TerminationProfile} = GlobalComponents const routers=[ {path:"/termination/:id/dashboard", component: TerminationDashboard}, - {path:"/termination/:id/preference", component: TerminationPreference}, + {path:"/termination/:id/profile", component: TerminationProfile}, + {path:"/termination/:id/permission", component: TerminationPermission}, diff --git a/bizui/src/bizcomponents/termination/Termination.associateform.js b/bizui/src/bizcomponents/termination/Termination.associateform.js index 0528d5f84..02e681581 100644 --- a/bizui/src/bizcomponents/termination/Termination.associateform.js +++ b/bizui/src/bizcomponents/termination/Termination.associateform.js @@ -140,7 +140,7 @@ class TerminationAssociateForm extends Component { {getFieldDecorator('comment', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/termination/Termination.associateform.less b/bizui/src/bizcomponents/termination/Termination.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/termination/Termination.associateform.less +++ b/bizui/src/bizcomponents/termination/Termination.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/termination/Termination.base.js b/bizui/src/bizcomponents/termination/Termination.base.js index 6f559f05b..331ce8f8b 100644 --- a/bizui/src/bizcomponents/termination/Termination.base.js +++ b/bizui/src/bizcomponents/termination/Termination.base.js @@ -1,100 +1,90 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"雇佣终止", menuFor: "termination", subItems: [ - {name: 'employeeList', displayName:'员工', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'employeeList', displayName:'员工', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + reason: '原因', + type: '类型', + comment: '评论', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'termination') }, - { title: '原因', dataIndex: 'reason', render: (text, record) => renderReferenceCell(text, record)}, - { title: '类型', dataIndex: 'type', render: (text, record) => renderReferenceCell(text, record)}, - { title: '评论', debugtype: 'string', dataIndex: 'comment', width: '8',render: (text, record)=>renderTextCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'termination') , sorter: true }, + { title: fieldLabels.reason, dataIndex: 'reason', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.type, dataIndex: 'type', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.comment, debugtype: 'string', dataIndex: 'comment', width: '8',render: (text, record)=>renderTextCell(text,record)}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({termination,targetComponent})=>{ -const fieldLabels = { - id: '序号', - reason: '原因', - type: '类型', - comment: '评论', + + + const {TerminationService} = GlobalComponents + // const userContext = null + return ( + +{termination.id} +{termination.reason==null?appLocaleName(userContext,"NotAssigned"):`${termination.reason.displayName}(${termination.reason.id})`} + + showTransferModel(targetComponent,"原因","terminationReason",TerminationService.requestCandidateReason, + TerminationService.transferToAnotherReason,"anotherReasonId",termination.reason?termination.reason.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{termination.type==null?appLocaleName(userContext,"NotAssigned"):`${termination.type.displayName}(${termination.type.id})`} + + showTransferModel(targetComponent,"类型","terminationType",TerminationService.requestCandidateType, + TerminationService.transferToAnotherType,"anotherTypeId",termination.type?termination.type.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{termination.comment} + + {buildTransferModal(termination,targetComponent)} + + ) } + + -const TerminationBase={menuData,displayColumns,fieldLabels} +const TerminationBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default TerminationBase diff --git a/bizui/src/bizcomponents/termination/Termination.createform.js b/bizui/src/bizcomponents/termination/Termination.createform.js index 0821a4982..97a7adb7c 100644 --- a/bizui/src/bizcomponents/termination/Termination.createform.js +++ b/bizui/src/bizcomponents/termination/Termination.createform.js @@ -208,7 +208,7 @@ class TerminationCreateForm extends Component { {getFieldDecorator('comment', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/termination/Termination.dashboard.js b/bizui/src/bizcomponents/termination/Termination.dashboard.js index 668ff1acc..aa02e09fa 100644 --- a/bizui/src/bizcomponents/termination/Termination.dashboard.js +++ b/bizui/src/bizcomponents/termination/Termination.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -148,6 +148,7 @@ class TerminationDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -156,13 +157,17 @@ class TerminationDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/termination/Termination.model.js b/bizui/src/bizcomponents/termination/Termination.model.js index d7772331b..047bee274 100644 --- a/bizui/src/bizcomponents/termination/Termination.model.js +++ b/bizui/src/bizcomponents/termination/Termination.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/termination/${id}/list/\EmployeeList/员工+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/termination/${id}/list/EmployeeList/员工+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateEmployee({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/termination/${id}/list/\EmployeeList/员工列表`, state: newPlayload } + const location = { pathname: `/termination/${id}/list/EmployeeList/员工列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextEmployeeUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/termination/Termination.permission.js b/bizui/src/bizcomponents/termination/Termination.permission.js new file mode 100644 index 000000000..3c6411fc9 --- /dev/null +++ b/bizui/src/bizcomponents/termination/Termination.permission.js @@ -0,0 +1,84 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './Termination.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (termination,targetComponent) =>{ + const userContext = null + return ( + +{termination.id} +{termination.comment} + + + ) +} + + +const renderPermissionSetting = termination => { + const {TerminationBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class TerminationPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const termination = this.props.termination; + const { id,displayName, employeeCount } = termination + const cardsData = {cardsName:"雇佣终止",cardsFor: "termination",cardsSource: termination, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + termination: state._termination, +}))(Form.create()(TerminationPermission)) + diff --git a/bizui/src/bizcomponents/termination/Termination.permission.less b/bizui/src/bizcomponents/termination/Termination.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/termination/Termination.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/termination/Termination.preference.js b/bizui/src/bizcomponents/termination/Termination.preference.js index a6fd2c7f6..3fe784cc5 100644 --- a/bizui/src/bizcomponents/termination/Termination.preference.js +++ b/bizui/src/bizcomponents/termination/Termination.preference.js @@ -311,8 +311,12 @@ class TerminationPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, employeeCount } = this.props.termination - const cardsData = {cardsName:"雇佣终止",cardsFor: "termination",cardsSource: this.props.termination, + const termination = this.props.termination; + const { id,displayName, employeeCount } = termination + + + + const cardsData = {cardsName:"雇佣终止",cardsFor: "termination",cardsSource: termination, subItems: [ ], diff --git a/bizui/src/bizcomponents/termination/Termination.profile.js b/bizui/src/bizcomponents/termination/Termination.profile.js new file mode 100644 index 000000000..409fe0738 --- /dev/null +++ b/bizui/src/bizcomponents/termination/Termination.profile.js @@ -0,0 +1,91 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './Termination.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (termination,targetComponent) =>{ + const userContext = null + return ( + +{termination.id} +{termination.comment} + + + ) +} + + + +class TerminationProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const termination = this.props.termination; + const { id,displayName, employeeCount } = termination + + const cardsData = {cardsName:"雇佣终止",cardsFor: "termination",cardsSource: termination, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + termination: state._termination, +}))(Form.create()(TerminationProfile)) + diff --git a/bizui/src/bizcomponents/termination/Termination.profile.less b/bizui/src/bizcomponents/termination/Termination.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/termination/Termination.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/termination/Termination.search.js b/bizui/src/bizcomponents/termination/Termination.search.js index 7e32b51c6..01f03da2b 100644 --- a/bizui/src/bizcomponents/termination/Termination.search.js +++ b/bizui/src/bizcomponents/termination/Termination.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/termination/Termination.searchform.js b/bizui/src/bizcomponents/termination/Termination.searchform.js index 297a15f45..60b349834 100644 --- a/bizui/src/bizcomponents/termination/Termination.searchform.js +++ b/bizui/src/bizcomponents/termination/Termination.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`terminationList.searchField`] = fieldName - value[`terminationList.searchVerb`] = searchVerb - value[`terminationList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,12 +127,13 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'reason')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'type')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'comment')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'reason')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'type')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'comment')) console.log("the final parameter", paramList) @@ -148,11 +149,12 @@ componentDidMount() { } - params['terminationList'] = 1 - params['terminationList.orderBy.0'] = "id" - params['terminationList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -214,8 +216,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -300,8 +302,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/termination/Termination.table.js b/bizui/src/bizcomponents/termination/Termination.table.js index 7a7d6472c..7c73d54d6 100644 --- a/bizui/src/bizcomponents/termination/Termination.table.js +++ b/bizui/src/bizcomponents/termination/Termination.table.js @@ -40,24 +40,53 @@ class TerminationTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = TerminationBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class TerminationTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class TerminationTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/termination/Termination.updateform.js b/bizui/src/bizcomponents/termination/Termination.updateform.js index 211868e35..5519ed639 100644 --- a/bizui/src/bizcomponents/termination/Termination.updateform.js +++ b/bizui/src/bizcomponents/termination/Termination.updateform.js @@ -261,7 +261,7 @@ class TerminationUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class TerminationUpdateForm extends Component { initialValue: selectedRow.comment, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/terminationreason/TerminationReason.app.js b/bizui/src/bizcomponents/terminationreason/TerminationReason.app.js index 041255ced..a5f9cd00d 100644 --- a/bizui/src/bizcomponents/terminationreason/TerminationReason.app.js +++ b/bizui/src/bizcomponents/terminationreason/TerminationReason.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class TerminationReasonBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class TerminationReasonBizApp extends React.PureComponent { buildRouters = () =>{ const {TerminationReasonDashboard} = GlobalComponents - const {TerminationReasonPreference} = GlobalComponents + const {TerminationReasonPermission} = GlobalComponents + const {TerminationReasonProfile} = GlobalComponents const routers=[ {path:"/terminationReason/:id/dashboard", component: TerminationReasonDashboard}, - {path:"/terminationReason/:id/preference", component: TerminationReasonPreference}, + {path:"/terminationReason/:id/profile", component: TerminationReasonProfile}, + {path:"/terminationReason/:id/permission", component: TerminationReasonPermission}, diff --git a/bizui/src/bizcomponents/terminationreason/TerminationReason.associateform.js b/bizui/src/bizcomponents/terminationreason/TerminationReason.associateform.js index d7ddf6ff9..2590a2d1c 100644 --- a/bizui/src/bizcomponents/terminationreason/TerminationReason.associateform.js +++ b/bizui/src/bizcomponents/terminationreason/TerminationReason.associateform.js @@ -140,7 +140,7 @@ class TerminationReasonAssociateForm extends Component { {getFieldDecorator('code', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -150,7 +150,7 @@ class TerminationReasonAssociateForm extends Component { {getFieldDecorator('description', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/terminationreason/TerminationReason.associateform.less b/bizui/src/bizcomponents/terminationreason/TerminationReason.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/terminationreason/TerminationReason.associateform.less +++ b/bizui/src/bizcomponents/terminationreason/TerminationReason.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/terminationreason/TerminationReason.base.js b/bizui/src/bizcomponents/terminationreason/TerminationReason.base.js index 040fc0621..39168182f 100644 --- a/bizui/src/bizcomponents/terminationreason/TerminationReason.base.js +++ b/bizui/src/bizcomponents/terminationreason/TerminationReason.base.js @@ -1,100 +1,79 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"雇佣终止的原因", menuFor: "terminationReason", subItems: [ - {name: 'terminationList', displayName:'雇佣终止', icon:'at',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'terminationList', displayName:'雇佣终止', icon:'at',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + code: '代码', + company: '公司', + description: '描述', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'terminationReason') }, - { title: '代码', debugtype: 'string', dataIndex: 'code', width: '11',render: (text, record)=>renderTextCell(text,record) }, - { title: '公司', dataIndex: 'company', render: (text, record) => renderReferenceCell(text, record)}, - { title: '描述', debugtype: 'string', dataIndex: 'description', width: '13',render: (text, record)=>renderTextCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'terminationReason') , sorter: true }, + { title: fieldLabels.code, debugtype: 'string', dataIndex: 'code', width: '11',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.company, dataIndex: 'company', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.description, debugtype: 'string', dataIndex: 'description', width: '13',render: (text, record)=>renderTextCell(text,record)}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({terminationReason,targetComponent})=>{ -const fieldLabels = { - id: '序号', - code: '代码', - company: '公司', - description: '描述', + + + const {TerminationReasonService} = GlobalComponents + // const userContext = null + return ( + +{terminationReason.id} +{terminationReason.code} +{terminationReason.description} + + {buildTransferModal(terminationReason,targetComponent)} + + ) } + + -const TerminationReasonBase={menuData,displayColumns,fieldLabels} +const TerminationReasonBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default TerminationReasonBase diff --git a/bizui/src/bizcomponents/terminationreason/TerminationReason.createform.js b/bizui/src/bizcomponents/terminationreason/TerminationReason.createform.js index c820c8fd4..205cb0457 100644 --- a/bizui/src/bizcomponents/terminationreason/TerminationReason.createform.js +++ b/bizui/src/bizcomponents/terminationreason/TerminationReason.createform.js @@ -208,7 +208,7 @@ class TerminationReasonCreateForm extends Component { {getFieldDecorator('code', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -218,7 +218,7 @@ class TerminationReasonCreateForm extends Component { {getFieldDecorator('description', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/terminationreason/TerminationReason.dashboard.js b/bizui/src/bizcomponents/terminationreason/TerminationReason.dashboard.js index 7efbd8a4a..7a2468c0a 100644 --- a/bizui/src/bizcomponents/terminationreason/TerminationReason.dashboard.js +++ b/bizui/src/bizcomponents/terminationreason/TerminationReason.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -137,6 +137,7 @@ class TerminationReasonDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -145,13 +146,17 @@ class TerminationReasonDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/terminationreason/TerminationReason.model.js b/bizui/src/bizcomponents/terminationreason/TerminationReason.model.js index e852bf76e..1c5b38fed 100644 --- a/bizui/src/bizcomponents/terminationreason/TerminationReason.model.js +++ b/bizui/src/bizcomponents/terminationreason/TerminationReason.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/terminationReason/${id}/list/\TerminationList/雇佣终止+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/terminationReason/${id}/list/TerminationList/雇佣终止+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateTermination({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/terminationReason/${id}/list/\TerminationList/雇佣终止列表`, state: newPlayload } + const location = { pathname: `/terminationReason/${id}/list/TerminationList/雇佣终止列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextTerminationUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/terminationreason/TerminationReason.permission.js b/bizui/src/bizcomponents/terminationreason/TerminationReason.permission.js new file mode 100644 index 000000000..1bbf91e40 --- /dev/null +++ b/bizui/src/bizcomponents/terminationreason/TerminationReason.permission.js @@ -0,0 +1,85 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './TerminationReason.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (terminationReason,targetComponent) =>{ + const userContext = null + return ( + +{terminationReason.id} +{terminationReason.code} +{terminationReason.description} + + + ) +} + + +const renderPermissionSetting = terminationReason => { + const {TerminationReasonBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class TerminationReasonPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const terminationReason = this.props.terminationReason; + const { id,displayName, terminationCount } = terminationReason + const cardsData = {cardsName:"雇佣终止的原因",cardsFor: "terminationReason",cardsSource: terminationReason, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + terminationReason: state._terminationReason, +}))(Form.create()(TerminationReasonPermission)) + diff --git a/bizui/src/bizcomponents/terminationreason/TerminationReason.permission.less b/bizui/src/bizcomponents/terminationreason/TerminationReason.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/terminationreason/TerminationReason.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/terminationreason/TerminationReason.preference.js b/bizui/src/bizcomponents/terminationreason/TerminationReason.preference.js index dd91da83b..9f64df15d 100644 --- a/bizui/src/bizcomponents/terminationreason/TerminationReason.preference.js +++ b/bizui/src/bizcomponents/terminationreason/TerminationReason.preference.js @@ -300,8 +300,12 @@ class TerminationReasonPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, terminationCount } = this.props.terminationReason - const cardsData = {cardsName:"雇佣终止的原因",cardsFor: "terminationReason",cardsSource: this.props.terminationReason, + const terminationReason = this.props.terminationReason; + const { id,displayName, terminationCount } = terminationReason + + + + const cardsData = {cardsName:"雇佣终止的原因",cardsFor: "terminationReason",cardsSource: terminationReason, subItems: [ ], diff --git a/bizui/src/bizcomponents/terminationreason/TerminationReason.profile.js b/bizui/src/bizcomponents/terminationreason/TerminationReason.profile.js new file mode 100644 index 000000000..6b56002b0 --- /dev/null +++ b/bizui/src/bizcomponents/terminationreason/TerminationReason.profile.js @@ -0,0 +1,92 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './TerminationReason.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (terminationReason,targetComponent) =>{ + const userContext = null + return ( + +{terminationReason.id} +{terminationReason.code} +{terminationReason.description} + + + ) +} + + + +class TerminationReasonProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const terminationReason = this.props.terminationReason; + const { id,displayName, terminationCount } = terminationReason + + const cardsData = {cardsName:"雇佣终止的原因",cardsFor: "terminationReason",cardsSource: terminationReason, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + terminationReason: state._terminationReason, +}))(Form.create()(TerminationReasonProfile)) + diff --git a/bizui/src/bizcomponents/terminationreason/TerminationReason.profile.less b/bizui/src/bizcomponents/terminationreason/TerminationReason.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/terminationreason/TerminationReason.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/terminationreason/TerminationReason.search.js b/bizui/src/bizcomponents/terminationreason/TerminationReason.search.js index e16dd1e38..920f77fb5 100644 --- a/bizui/src/bizcomponents/terminationreason/TerminationReason.search.js +++ b/bizui/src/bizcomponents/terminationreason/TerminationReason.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/terminationreason/TerminationReason.searchform.js b/bizui/src/bizcomponents/terminationreason/TerminationReason.searchform.js index 49b10edda..fb9a03ec2 100644 --- a/bizui/src/bizcomponents/terminationreason/TerminationReason.searchform.js +++ b/bizui/src/bizcomponents/terminationreason/TerminationReason.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`terminationReasonList.searchField`] = fieldName - value[`terminationReasonList.searchVerb`] = searchVerb - value[`terminationReasonList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,12 +127,13 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'code')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'company')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'description')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'code')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'company')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'description')) console.log("the final parameter", paramList) @@ -148,11 +149,12 @@ componentDidMount() { } - params['terminationReasonList'] = 1 - params['terminationReasonList.orderBy.0'] = "id" - params['terminationReasonList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -207,8 +209,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -286,8 +288,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/terminationreason/TerminationReason.table.js b/bizui/src/bizcomponents/terminationreason/TerminationReason.table.js index 5911fcdb1..005693735 100644 --- a/bizui/src/bizcomponents/terminationreason/TerminationReason.table.js +++ b/bizui/src/bizcomponents/terminationreason/TerminationReason.table.js @@ -40,24 +40,53 @@ class TerminationReasonTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = TerminationReasonBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class TerminationReasonTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class TerminationReasonTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/terminationreason/TerminationReason.updateform.js b/bizui/src/bizcomponents/terminationreason/TerminationReason.updateform.js index 1a25b156a..fee5bcf90 100644 --- a/bizui/src/bizcomponents/terminationreason/TerminationReason.updateform.js +++ b/bizui/src/bizcomponents/terminationreason/TerminationReason.updateform.js @@ -261,7 +261,7 @@ class TerminationReasonUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class TerminationReasonUpdateForm extends Component { initialValue: selectedRow.code, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -285,7 +285,7 @@ class TerminationReasonUpdateForm extends Component { initialValue: selectedRow.description, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/terminationtype/TerminationType.app.js b/bizui/src/bizcomponents/terminationtype/TerminationType.app.js index 688938cf2..375cf2abf 100644 --- a/bizui/src/bizcomponents/terminationtype/TerminationType.app.js +++ b/bizui/src/bizcomponents/terminationtype/TerminationType.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class TerminationTypeBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class TerminationTypeBizApp extends React.PureComponent { buildRouters = () =>{ const {TerminationTypeDashboard} = GlobalComponents - const {TerminationTypePreference} = GlobalComponents + const {TerminationTypePermission} = GlobalComponents + const {TerminationTypeProfile} = GlobalComponents const routers=[ {path:"/terminationType/:id/dashboard", component: TerminationTypeDashboard}, - {path:"/terminationType/:id/preference", component: TerminationTypePreference}, + {path:"/terminationType/:id/profile", component: TerminationTypeProfile}, + {path:"/terminationType/:id/permission", component: TerminationTypePermission}, diff --git a/bizui/src/bizcomponents/terminationtype/TerminationType.associateform.js b/bizui/src/bizcomponents/terminationtype/TerminationType.associateform.js index 02866a51a..4b2039667 100644 --- a/bizui/src/bizcomponents/terminationtype/TerminationType.associateform.js +++ b/bizui/src/bizcomponents/terminationtype/TerminationType.associateform.js @@ -141,7 +141,7 @@ class TerminationTypeAssociateForm extends Component { {getFieldDecorator('code', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -151,7 +151,7 @@ class TerminationTypeAssociateForm extends Component { {getFieldDecorator('baseDescription', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -161,7 +161,7 @@ class TerminationTypeAssociateForm extends Component { {getFieldDecorator('detailDescription', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/terminationtype/TerminationType.associateform.less b/bizui/src/bizcomponents/terminationtype/TerminationType.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/terminationtype/TerminationType.associateform.less +++ b/bizui/src/bizcomponents/terminationtype/TerminationType.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/terminationtype/TerminationType.base.js b/bizui/src/bizcomponents/terminationtype/TerminationType.base.js index 3f08011a3..9a729bead 100644 --- a/bizui/src/bizcomponents/terminationtype/TerminationType.base.js +++ b/bizui/src/bizcomponents/terminationtype/TerminationType.base.js @@ -1,102 +1,82 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"雇佣终止类型", menuFor: "terminationType", subItems: [ - {name: 'terminationList', displayName:'雇佣终止', icon:'at',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'terminationList', displayName:'雇佣终止', icon:'at',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + code: '代码', + company: '公司', + baseDescription: '基本描述', + detailDescription: '详细描述', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'terminationType') }, - { title: '代码', debugtype: 'string', dataIndex: 'code', width: '11',render: (text, record)=>renderTextCell(text,record) }, - { title: '公司', dataIndex: 'company', render: (text, record) => renderReferenceCell(text, record)}, - { title: '基本描述', debugtype: 'string', dataIndex: 'baseDescription', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: '详细描述', debugtype: 'string', dataIndex: 'detailDescription', width: '66',render: (text, record)=>renderTextCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'terminationType') , sorter: true }, + { title: fieldLabels.code, debugtype: 'string', dataIndex: 'code', width: '11',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.company, dataIndex: 'company', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.baseDescription, debugtype: 'string', dataIndex: 'baseDescription', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.detailDescription, debugtype: 'string', dataIndex: 'detailDescription', width: '66',render: (text, record)=>renderTextCell(text,record)}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({terminationType,targetComponent})=>{ -const fieldLabels = { - id: '序号', - code: '代码', - company: '公司', - baseDescription: '基本描述', - detailDescription: '详细描述', + + + const {TerminationTypeService} = GlobalComponents + // const userContext = null + return ( + +{terminationType.id} +{terminationType.code} +{terminationType.baseDescription} +{terminationType.detailDescription} + + {buildTransferModal(terminationType,targetComponent)} + + ) } + + -const TerminationTypeBase={menuData,displayColumns,fieldLabels} +const TerminationTypeBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default TerminationTypeBase diff --git a/bizui/src/bizcomponents/terminationtype/TerminationType.createform.js b/bizui/src/bizcomponents/terminationtype/TerminationType.createform.js index ab116a544..87c08d3a4 100644 --- a/bizui/src/bizcomponents/terminationtype/TerminationType.createform.js +++ b/bizui/src/bizcomponents/terminationtype/TerminationType.createform.js @@ -209,7 +209,7 @@ class TerminationTypeCreateForm extends Component { {getFieldDecorator('code', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -219,7 +219,7 @@ class TerminationTypeCreateForm extends Component { {getFieldDecorator('baseDescription', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -229,7 +229,7 @@ class TerminationTypeCreateForm extends Component { {getFieldDecorator('detailDescription', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/terminationtype/TerminationType.dashboard.js b/bizui/src/bizcomponents/terminationtype/TerminationType.dashboard.js index 4839b9d05..48f505f9a 100644 --- a/bizui/src/bizcomponents/terminationtype/TerminationType.dashboard.js +++ b/bizui/src/bizcomponents/terminationtype/TerminationType.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -138,6 +138,7 @@ class TerminationTypeDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -146,13 +147,17 @@ class TerminationTypeDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/terminationtype/TerminationType.model.js b/bizui/src/bizcomponents/terminationtype/TerminationType.model.js index b553ab20c..e29ea52bb 100644 --- a/bizui/src/bizcomponents/terminationtype/TerminationType.model.js +++ b/bizui/src/bizcomponents/terminationtype/TerminationType.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/terminationType/${id}/list/\TerminationList/雇佣终止+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/terminationType/${id}/list/TerminationList/雇佣终止+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateTermination({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/terminationType/${id}/list/\TerminationList/雇佣终止列表`, state: newPlayload } + const location = { pathname: `/terminationType/${id}/list/TerminationList/雇佣终止列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextTerminationUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/terminationtype/TerminationType.permission.js b/bizui/src/bizcomponents/terminationtype/TerminationType.permission.js new file mode 100644 index 000000000..11bd095af --- /dev/null +++ b/bizui/src/bizcomponents/terminationtype/TerminationType.permission.js @@ -0,0 +1,86 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './TerminationType.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (terminationType,targetComponent) =>{ + const userContext = null + return ( + +{terminationType.id} +{terminationType.code} +{terminationType.baseDescription} +{terminationType.detailDescription} + + + ) +} + + +const renderPermissionSetting = terminationType => { + const {TerminationTypeBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class TerminationTypePermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const terminationType = this.props.terminationType; + const { id,displayName, terminationCount } = terminationType + const cardsData = {cardsName:"雇佣终止类型",cardsFor: "terminationType",cardsSource: terminationType, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + terminationType: state._terminationType, +}))(Form.create()(TerminationTypePermission)) + diff --git a/bizui/src/bizcomponents/terminationtype/TerminationType.permission.less b/bizui/src/bizcomponents/terminationtype/TerminationType.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/terminationtype/TerminationType.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/terminationtype/TerminationType.preference.js b/bizui/src/bizcomponents/terminationtype/TerminationType.preference.js index 7231cd333..d8db6f11b 100644 --- a/bizui/src/bizcomponents/terminationtype/TerminationType.preference.js +++ b/bizui/src/bizcomponents/terminationtype/TerminationType.preference.js @@ -301,8 +301,12 @@ class TerminationTypePreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, terminationCount } = this.props.terminationType - const cardsData = {cardsName:"雇佣终止类型",cardsFor: "terminationType",cardsSource: this.props.terminationType, + const terminationType = this.props.terminationType; + const { id,displayName, terminationCount } = terminationType + + + + const cardsData = {cardsName:"雇佣终止类型",cardsFor: "terminationType",cardsSource: terminationType, subItems: [ ], diff --git a/bizui/src/bizcomponents/terminationtype/TerminationType.profile.js b/bizui/src/bizcomponents/terminationtype/TerminationType.profile.js new file mode 100644 index 000000000..9b5e3dcbc --- /dev/null +++ b/bizui/src/bizcomponents/terminationtype/TerminationType.profile.js @@ -0,0 +1,93 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './TerminationType.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (terminationType,targetComponent) =>{ + const userContext = null + return ( + +{terminationType.id} +{terminationType.code} +{terminationType.baseDescription} +{terminationType.detailDescription} + + + ) +} + + + +class TerminationTypeProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const terminationType = this.props.terminationType; + const { id,displayName, terminationCount } = terminationType + + const cardsData = {cardsName:"雇佣终止类型",cardsFor: "terminationType",cardsSource: terminationType, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + terminationType: state._terminationType, +}))(Form.create()(TerminationTypeProfile)) + diff --git a/bizui/src/bizcomponents/terminationtype/TerminationType.profile.less b/bizui/src/bizcomponents/terminationtype/TerminationType.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/terminationtype/TerminationType.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/terminationtype/TerminationType.search.js b/bizui/src/bizcomponents/terminationtype/TerminationType.search.js index 4274055dd..365cbfb60 100644 --- a/bizui/src/bizcomponents/terminationtype/TerminationType.search.js +++ b/bizui/src/bizcomponents/terminationtype/TerminationType.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/terminationtype/TerminationType.searchform.js b/bizui/src/bizcomponents/terminationtype/TerminationType.searchform.js index da87e1ee8..933e7426e 100644 --- a/bizui/src/bizcomponents/terminationtype/TerminationType.searchform.js +++ b/bizui/src/bizcomponents/terminationtype/TerminationType.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`terminationTypeList.searchField`] = fieldName - value[`terminationTypeList.searchVerb`] = searchVerb - value[`terminationTypeList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,13 +127,14 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'code')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'company')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'baseDescription')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'detailDescription')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'code')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'company')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'baseDescription')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'detailDescription')) console.log("the final parameter", paramList) @@ -149,11 +150,12 @@ componentDidMount() { } - params['terminationTypeList'] = 1 - params['terminationTypeList.orderBy.0'] = "id" - params['terminationTypeList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -208,8 +210,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -295,8 +297,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/terminationtype/TerminationType.table.js b/bizui/src/bizcomponents/terminationtype/TerminationType.table.js index fb2ec8bfd..aeb68097a 100644 --- a/bizui/src/bizcomponents/terminationtype/TerminationType.table.js +++ b/bizui/src/bizcomponents/terminationtype/TerminationType.table.js @@ -40,24 +40,53 @@ class TerminationTypeTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = TerminationTypeBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class TerminationTypeTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class TerminationTypeTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/terminationtype/TerminationType.updateform.js b/bizui/src/bizcomponents/terminationtype/TerminationType.updateform.js index 2785cf5ba..79898dca8 100644 --- a/bizui/src/bizcomponents/terminationtype/TerminationType.updateform.js +++ b/bizui/src/bizcomponents/terminationtype/TerminationType.updateform.js @@ -261,7 +261,7 @@ class TerminationTypeUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class TerminationTypeUpdateForm extends Component { initialValue: selectedRow.code, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -285,7 +285,7 @@ class TerminationTypeUpdateForm extends Component { initialValue: selectedRow.baseDescription, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -297,7 +297,7 @@ class TerminationTypeUpdateForm extends Component { initialValue: selectedRow.detailDescription, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.app.js b/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.app.js index f475154c3..2c5fcf184 100644 --- a/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.app.js +++ b/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class TrainingCourseTypeBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class TrainingCourseTypeBizApp extends React.PureComponent { buildRouters = () =>{ const {TrainingCourseTypeDashboard} = GlobalComponents - const {TrainingCourseTypePreference} = GlobalComponents + const {TrainingCourseTypePermission} = GlobalComponents + const {TrainingCourseTypeProfile} = GlobalComponents const routers=[ {path:"/trainingCourseType/:id/dashboard", component: TrainingCourseTypeDashboard}, - {path:"/trainingCourseType/:id/preference", component: TrainingCourseTypePreference}, + {path:"/trainingCourseType/:id/profile", component: TrainingCourseTypeProfile}, + {path:"/trainingCourseType/:id/permission", component: TrainingCourseTypePermission}, diff --git a/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.associateform.js b/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.associateform.js index d00751002..f8b250d6c 100644 --- a/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.associateform.js +++ b/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.associateform.js @@ -141,7 +141,7 @@ class TrainingCourseTypeAssociateForm extends Component { {getFieldDecorator('code', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -151,7 +151,7 @@ class TrainingCourseTypeAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -161,7 +161,7 @@ class TrainingCourseTypeAssociateForm extends Component { {getFieldDecorator('description', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.associateform.less b/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.associateform.less +++ b/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.base.js b/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.base.js index 6c819cc89..f2d806ca6 100644 --- a/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.base.js +++ b/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.base.js @@ -1,102 +1,82 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"培训课程类型", menuFor: "trainingCourseType", subItems: [ - {name: 'companyTrainingList', displayName:'公司培训', icon:'om',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'companyTrainingList', displayName:'公司培训', icon:'om',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + code: '代码', + company: '公司', + name: '名称', + description: '描述', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'trainingCourseType') }, - { title: '代码', debugtype: 'string', dataIndex: 'code', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: '公司', dataIndex: 'company', render: (text, record) => renderReferenceCell(text, record)}, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: '描述', debugtype: 'string', dataIndex: 'description', width: '20',render: (text, record)=>renderTextCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'trainingCourseType') , sorter: true }, + { title: fieldLabels.code, debugtype: 'string', dataIndex: 'code', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.company, dataIndex: 'company', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.description, debugtype: 'string', dataIndex: 'description', width: '20',render: (text, record)=>renderTextCell(text,record)}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({trainingCourseType,targetComponent})=>{ -const fieldLabels = { - id: '序号', - code: '代码', - company: '公司', - name: '名称', - description: '描述', + + + const {TrainingCourseTypeService} = GlobalComponents + // const userContext = null + return ( + +{trainingCourseType.id} +{trainingCourseType.code} +{trainingCourseType.name} +{trainingCourseType.description} + + {buildTransferModal(trainingCourseType,targetComponent)} + + ) } + + -const TrainingCourseTypeBase={menuData,displayColumns,fieldLabels} +const TrainingCourseTypeBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default TrainingCourseTypeBase diff --git a/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.createform.js b/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.createform.js index c66663da3..065d8a3cc 100644 --- a/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.createform.js +++ b/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.createform.js @@ -209,7 +209,7 @@ class TrainingCourseTypeCreateForm extends Component { {getFieldDecorator('code', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -219,7 +219,7 @@ class TrainingCourseTypeCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -229,7 +229,7 @@ class TrainingCourseTypeCreateForm extends Component { {getFieldDecorator('description', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.dashboard.js b/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.dashboard.js index e12ca4d4a..14b553547 100644 --- a/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.dashboard.js +++ b/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -138,6 +138,7 @@ class TrainingCourseTypeDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -146,13 +147,17 @@ class TrainingCourseTypeDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.model.js b/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.model.js index bc5e81050..55e8287e0 100644 --- a/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.model.js +++ b/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/trainingCourseType/${id}/list/\CompanyTrainingList/公司培训+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/trainingCourseType/${id}/list/CompanyTrainingList/公司培训+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateCompanyTraining({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/trainingCourseType/${id}/list/\CompanyTrainingList/公司培训列表`, state: newPlayload } + const location = { pathname: `/trainingCourseType/${id}/list/CompanyTrainingList/公司培训列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextCompanyTrainingUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.permission.js b/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.permission.js new file mode 100644 index 000000000..f0b081699 --- /dev/null +++ b/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.permission.js @@ -0,0 +1,86 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './TrainingCourseType.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (trainingCourseType,targetComponent) =>{ + const userContext = null + return ( + +{trainingCourseType.id} +{trainingCourseType.code} +{trainingCourseType.name} +{trainingCourseType.description} + + + ) +} + + +const renderPermissionSetting = trainingCourseType => { + const {TrainingCourseTypeBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class TrainingCourseTypePermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const trainingCourseType = this.props.trainingCourseType; + const { id,displayName, companyTrainingCount } = trainingCourseType + const cardsData = {cardsName:"培训课程类型",cardsFor: "trainingCourseType",cardsSource: trainingCourseType, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + trainingCourseType: state._trainingCourseType, +}))(Form.create()(TrainingCourseTypePermission)) + diff --git a/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.permission.less b/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.preference.js b/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.preference.js index 776e16a7d..f766f6b97 100644 --- a/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.preference.js +++ b/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.preference.js @@ -301,8 +301,12 @@ class TrainingCourseTypePreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, companyTrainingCount } = this.props.trainingCourseType - const cardsData = {cardsName:"培训课程类型",cardsFor: "trainingCourseType",cardsSource: this.props.trainingCourseType, + const trainingCourseType = this.props.trainingCourseType; + const { id,displayName, companyTrainingCount } = trainingCourseType + + + + const cardsData = {cardsName:"培训课程类型",cardsFor: "trainingCourseType",cardsSource: trainingCourseType, subItems: [ ], diff --git a/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.profile.js b/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.profile.js new file mode 100644 index 000000000..b1fbedbec --- /dev/null +++ b/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.profile.js @@ -0,0 +1,93 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './TrainingCourseType.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (trainingCourseType,targetComponent) =>{ + const userContext = null + return ( + +{trainingCourseType.id} +{trainingCourseType.code} +{trainingCourseType.name} +{trainingCourseType.description} + + + ) +} + + + +class TrainingCourseTypeProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const trainingCourseType = this.props.trainingCourseType; + const { id,displayName, companyTrainingCount } = trainingCourseType + + const cardsData = {cardsName:"培训课程类型",cardsFor: "trainingCourseType",cardsSource: trainingCourseType, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + trainingCourseType: state._trainingCourseType, +}))(Form.create()(TrainingCourseTypeProfile)) + diff --git a/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.profile.less b/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.search.js b/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.search.js index c0a5deee6..a6abeb1d9 100644 --- a/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.search.js +++ b/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.searchform.js b/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.searchform.js index 9108f7eef..c22ef6c45 100644 --- a/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.searchform.js +++ b/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`trainingCourseTypeList.searchField`] = fieldName - value[`trainingCourseTypeList.searchVerb`] = searchVerb - value[`trainingCourseTypeList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,13 +127,14 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'code')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'company')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'description')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'code')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'company')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'description')) console.log("the final parameter", paramList) @@ -149,11 +150,12 @@ componentDidMount() { } - params['trainingCourseTypeList'] = 1 - params['trainingCourseTypeList.orderBy.0'] = "id" - params['trainingCourseTypeList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -208,8 +210,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -295,8 +297,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.table.js b/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.table.js index 4015e209d..2d585f861 100644 --- a/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.table.js +++ b/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.table.js @@ -40,24 +40,53 @@ class TrainingCourseTypeTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = TrainingCourseTypeBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class TrainingCourseTypeTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class TrainingCourseTypeTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.updateform.js b/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.updateform.js index 86e048995..935398c5a 100644 --- a/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.updateform.js +++ b/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.updateform.js @@ -261,7 +261,7 @@ class TrainingCourseTypeUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class TrainingCourseTypeUpdateForm extends Component { initialValue: selectedRow.code, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -285,7 +285,7 @@ class TrainingCourseTypeUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -297,7 +297,7 @@ class TrainingCourseTypeUpdateForm extends Component { initialValue: selectedRow.description, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/transportfleet/TransportFleet.app.js b/bizui/src/bizcomponents/transportfleet/TransportFleet.app.js index 3299fba53..b8f99d808 100644 --- a/bizui/src/bizcomponents/transportfleet/TransportFleet.app.js +++ b/bizui/src/bizcomponents/transportfleet/TransportFleet.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class TransportFleetBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -304,12 +313,14 @@ class TransportFleetBizApp extends React.PureComponent { buildRouters = () =>{ const {TransportFleetDashboard} = GlobalComponents - const {TransportFleetPreference} = GlobalComponents + const {TransportFleetPermission} = GlobalComponents + const {TransportFleetProfile} = GlobalComponents const routers=[ {path:"/transportFleet/:id/dashboard", component: TransportFleetDashboard}, - {path:"/transportFleet/:id/preference", component: TransportFleetPreference}, + {path:"/transportFleet/:id/profile", component: TransportFleetProfile}, + {path:"/transportFleet/:id/permission", component: TransportFleetPermission}, diff --git a/bizui/src/bizcomponents/transportfleet/TransportFleet.associateform.js b/bizui/src/bizcomponents/transportfleet/TransportFleet.associateform.js index fc7b6383e..4dae4fd80 100644 --- a/bizui/src/bizcomponents/transportfleet/TransportFleet.associateform.js +++ b/bizui/src/bizcomponents/transportfleet/TransportFleet.associateform.js @@ -142,7 +142,7 @@ class TransportFleetAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -152,7 +152,7 @@ class TransportFleetAssociateForm extends Component { {getFieldDecorator('contactNumber', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/transportfleet/TransportFleet.associateform.less b/bizui/src/bizcomponents/transportfleet/TransportFleet.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/transportfleet/TransportFleet.associateform.less +++ b/bizui/src/bizcomponents/transportfleet/TransportFleet.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/transportfleet/TransportFleet.base.js b/bizui/src/bizcomponents/transportfleet/TransportFleet.base.js index 1e210d431..bc58c50c4 100644 --- a/bizui/src/bizcomponents/transportfleet/TransportFleet.base.js +++ b/bizui/src/bizcomponents/transportfleet/TransportFleet.base.js @@ -1,104 +1,84 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"运输车队", menuFor: "transportFleet", subItems: [ - {name: 'transportTruckList', displayName:'运输车', icon:'truck',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'truckDriverList', displayName:'卡车司机', icon:'truck',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'transportTaskList', displayName:'运输任务', icon:'tasks',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'transportTruckList', displayName:'运输车', icon:'truck',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'truckDriverList', displayName:'卡车司机', icon:'truck',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'transportTaskList', displayName:'运输任务', icon:'tasks',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + name: '名称', + contactNumber: '联系电话', + owner: '业主', + lastUpdateTime: '最后更新时间', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'transportFleet') }, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '11',render: (text, record)=>renderTextCell(text,record) }, - { title: '联系电话', debugtype: 'string', dataIndex: 'contactNumber', width: '15',render: (text, record)=>renderTextCell(text,record) }, - { title: '业主', dataIndex: 'owner', render: (text, record) => renderReferenceCell(text, record)}, - { title: '最后更新时间', dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'transportFleet') , sorter: true }, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '11',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.contactNumber, debugtype: 'string', dataIndex: 'contactNumber', width: '15',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.owner, dataIndex: 'owner', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.lastUpdateTime, dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record), sorter: true}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({transportFleet,targetComponent})=>{ -const fieldLabels = { - id: '序号', - name: '名称', - contactNumber: '联系电话', - owner: '业主', - lastUpdateTime: '最后更新时间', + + + const {TransportFleetService} = GlobalComponents + // const userContext = null + return ( + +{transportFleet.id} +{transportFleet.name} +{transportFleet.contactNumber} +{ moment(transportFleet.lastUpdateTime).format('YYYY-MM-DD')} + + {buildTransferModal(transportFleet,targetComponent)} + + ) } + + -const TransportFleetBase={menuData,displayColumns,fieldLabels} +const TransportFleetBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default TransportFleetBase diff --git a/bizui/src/bizcomponents/transportfleet/TransportFleet.createform.js b/bizui/src/bizcomponents/transportfleet/TransportFleet.createform.js index 8451dcb22..115e5178c 100644 --- a/bizui/src/bizcomponents/transportfleet/TransportFleet.createform.js +++ b/bizui/src/bizcomponents/transportfleet/TransportFleet.createform.js @@ -208,7 +208,7 @@ class TransportFleetCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -218,7 +218,7 @@ class TransportFleetCreateForm extends Component { {getFieldDecorator('contactNumber', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/transportfleet/TransportFleet.dashboard.js b/bizui/src/bizcomponents/transportfleet/TransportFleet.dashboard.js index 6dc85ef4e..0513dd206 100644 --- a/bizui/src/bizcomponents/transportfleet/TransportFleet.dashboard.js +++ b/bizui/src/bizcomponents/transportfleet/TransportFleet.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -140,6 +140,7 @@ class TransportFleetDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -148,13 +149,17 @@ class TransportFleetDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/transportfleet/TransportFleet.model.js b/bizui/src/bizcomponents/transportfleet/TransportFleet.model.js index 503c7f8f7..a5bb0d70e 100644 --- a/bizui/src/bizcomponents/transportfleet/TransportFleet.model.js +++ b/bizui/src/bizcomponents/transportfleet/TransportFleet.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/transportFleet/${id}/list/\TransportTruckList/运输车+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/transportFleet/${id}/list/TransportTruckList/运输车+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateTransportTruck({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/transportFleet/${id}/list/\TransportTruckList/运输车列表`, state: newPlayload } + const location = { pathname: `/transportFleet/${id}/list/TransportTruckList/运输车列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextTransportTruckUpdateRow({ payload }, { call, put }) { @@ -206,7 +206,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/transportFleet/${id}/list/\TruckDriverList/卡车司机+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/transportFleet/${id}/list/TruckDriverList/卡车司机+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateTruckDriver({ payload }, { call, put }) { @@ -228,7 +228,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/transportFleet/${id}/list/\TruckDriverList/卡车司机列表`, state: newPlayload } + const location = { pathname: `/transportFleet/${id}/list/TruckDriverList/卡车司机列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextTruckDriverUpdateRow({ payload }, { call, put }) { @@ -275,7 +275,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/transportFleet/${id}/list/\TransportTaskList/运输任务+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/transportFleet/${id}/list/TransportTaskList/运输任务+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateTransportTask({ payload }, { call, put }) { @@ -297,7 +297,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/transportFleet/${id}/list/\TransportTaskList/运输任务列表`, state: newPlayload } + const location = { pathname: `/transportFleet/${id}/list/TransportTaskList/运输任务列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextTransportTaskUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/transportfleet/TransportFleet.permission.js b/bizui/src/bizcomponents/transportfleet/TransportFleet.permission.js new file mode 100644 index 000000000..c4f7d8e2a --- /dev/null +++ b/bizui/src/bizcomponents/transportfleet/TransportFleet.permission.js @@ -0,0 +1,86 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './TransportFleet.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (transportFleet,targetComponent) =>{ + const userContext = null + return ( + +{transportFleet.id} +{transportFleet.name} +{transportFleet.contactNumber} +{ moment(transportFleet.lastUpdateTime).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = transportFleet => { + const {TransportFleetBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class TransportFleetPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const transportFleet = this.props.transportFleet; + const { id,displayName, transportTruckCount, truckDriverCount, transportTaskCount } = transportFleet + const cardsData = {cardsName:"运输车队",cardsFor: "transportFleet",cardsSource: transportFleet, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + transportFleet: state._transportFleet, +}))(Form.create()(TransportFleetPermission)) + diff --git a/bizui/src/bizcomponents/transportfleet/TransportFleet.permission.less b/bizui/src/bizcomponents/transportfleet/TransportFleet.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/transportfleet/TransportFleet.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/transportfleet/TransportFleet.preference.js b/bizui/src/bizcomponents/transportfleet/TransportFleet.preference.js index a4d8855d1..35c09c0f6 100644 --- a/bizui/src/bizcomponents/transportfleet/TransportFleet.preference.js +++ b/bizui/src/bizcomponents/transportfleet/TransportFleet.preference.js @@ -301,8 +301,12 @@ class TransportFleetPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, transportTruckCount, truckDriverCount, transportTaskCount } = this.props.transportFleet - const cardsData = {cardsName:"运输车队",cardsFor: "transportFleet",cardsSource: this.props.transportFleet, + const transportFleet = this.props.transportFleet; + const { id,displayName, transportTruckCount, truckDriverCount, transportTaskCount } = transportFleet + + + + const cardsData = {cardsName:"运输车队",cardsFor: "transportFleet",cardsSource: transportFleet, subItems: [ ], diff --git a/bizui/src/bizcomponents/transportfleet/TransportFleet.profile.js b/bizui/src/bizcomponents/transportfleet/TransportFleet.profile.js new file mode 100644 index 000000000..9d2a1adce --- /dev/null +++ b/bizui/src/bizcomponents/transportfleet/TransportFleet.profile.js @@ -0,0 +1,93 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './TransportFleet.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (transportFleet,targetComponent) =>{ + const userContext = null + return ( + +{transportFleet.id} +{transportFleet.name} +{transportFleet.contactNumber} +{ moment(transportFleet.lastUpdateTime).format('YYYY-MM-DD')} + + + ) +} + + + +class TransportFleetProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const transportFleet = this.props.transportFleet; + const { id,displayName, transportTruckCount, truckDriverCount, transportTaskCount } = transportFleet + + const cardsData = {cardsName:"运输车队",cardsFor: "transportFleet",cardsSource: transportFleet, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + transportFleet: state._transportFleet, +}))(Form.create()(TransportFleetProfile)) + diff --git a/bizui/src/bizcomponents/transportfleet/TransportFleet.profile.less b/bizui/src/bizcomponents/transportfleet/TransportFleet.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/transportfleet/TransportFleet.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/transportfleet/TransportFleet.search.js b/bizui/src/bizcomponents/transportfleet/TransportFleet.search.js index 98fb4b7f3..c240a4c94 100644 --- a/bizui/src/bizcomponents/transportfleet/TransportFleet.search.js +++ b/bizui/src/bizcomponents/transportfleet/TransportFleet.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/transportfleet/TransportFleet.searchform.js b/bizui/src/bizcomponents/transportfleet/TransportFleet.searchform.js index 87f412d2f..dc83ad5bb 100644 --- a/bizui/src/bizcomponents/transportfleet/TransportFleet.searchform.js +++ b/bizui/src/bizcomponents/transportfleet/TransportFleet.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`transportFleetList.searchField`] = fieldName - value[`transportFleetList.searchVerb`] = searchVerb - value[`transportFleetList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,12 +127,13 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'contactNumber')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'owner')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'contactNumber')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'owner')) console.log("the final parameter", paramList) @@ -148,11 +149,12 @@ componentDidMount() { } - params['transportFleetList'] = 1 - params['transportFleetList.orderBy.0'] = "id" - params['transportFleetList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -207,8 +209,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -286,8 +288,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/transportfleet/TransportFleet.table.js b/bizui/src/bizcomponents/transportfleet/TransportFleet.table.js index 1b3e52aa0..927065d37 100644 --- a/bizui/src/bizcomponents/transportfleet/TransportFleet.table.js +++ b/bizui/src/bizcomponents/transportfleet/TransportFleet.table.js @@ -40,24 +40,53 @@ class TransportFleetTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = TransportFleetBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class TransportFleetTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class TransportFleetTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/transportfleet/TransportFleet.updateform.js b/bizui/src/bizcomponents/transportfleet/TransportFleet.updateform.js index 5868a9dc7..180d098cf 100644 --- a/bizui/src/bizcomponents/transportfleet/TransportFleet.updateform.js +++ b/bizui/src/bizcomponents/transportfleet/TransportFleet.updateform.js @@ -262,7 +262,7 @@ class TransportFleetUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class TransportFleetUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class TransportFleetUpdateForm extends Component { initialValue: selectedRow.contactNumber, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/transporttask/TransportTask.app.js b/bizui/src/bizcomponents/transporttask/TransportTask.app.js index 5fba29ba1..59dd5b512 100644 --- a/bizui/src/bizcomponents/transporttask/TransportTask.app.js +++ b/bizui/src/bizcomponents/transporttask/TransportTask.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class TransportTaskBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -255,12 +264,14 @@ class TransportTaskBizApp extends React.PureComponent { buildRouters = () =>{ const {TransportTaskDashboard} = GlobalComponents - const {TransportTaskPreference} = GlobalComponents + const {TransportTaskPermission} = GlobalComponents + const {TransportTaskProfile} = GlobalComponents const routers=[ {path:"/transportTask/:id/dashboard", component: TransportTaskDashboard}, - {path:"/transportTask/:id/preference", component: TransportTaskPreference}, + {path:"/transportTask/:id/profile", component: TransportTaskProfile}, + {path:"/transportTask/:id/permission", component: TransportTaskPermission}, diff --git a/bizui/src/bizcomponents/transporttask/TransportTask.associateform.js b/bizui/src/bizcomponents/transporttask/TransportTask.associateform.js index 1e102a2bc..368bf92ba 100644 --- a/bizui/src/bizcomponents/transporttask/TransportTask.associateform.js +++ b/bizui/src/bizcomponents/transporttask/TransportTask.associateform.js @@ -20,9 +20,9 @@ const testValues = {}; const testValues = { name: '货运记录', start: '双链二号仓', - beginTime: '2018-01-25', - latitude: '41.01318459628007', - longitude: '132.24939526543704', + beginTime: '2018-06-28', + latitude: '42.732027120718215', + longitude: '131.56985745108886', endId: 'RS000001', driverId: 'TD000001', truckId: 'TT000001', @@ -147,7 +147,7 @@ class TransportTaskAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -157,7 +157,7 @@ class TransportTaskAssociateForm extends Component { {getFieldDecorator('start', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -167,7 +167,7 @@ class TransportTaskAssociateForm extends Component { {getFieldDecorator('beginTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -177,7 +177,7 @@ class TransportTaskAssociateForm extends Component { {getFieldDecorator('latitude', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -187,7 +187,7 @@ class TransportTaskAssociateForm extends Component { {getFieldDecorator('longitude', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/transporttask/TransportTask.associateform.less b/bizui/src/bizcomponents/transporttask/TransportTask.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/transporttask/TransportTask.associateform.less +++ b/bizui/src/bizcomponents/transporttask/TransportTask.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/transporttask/TransportTask.base.js b/bizui/src/bizcomponents/transporttask/TransportTask.base.js index 5a4b83bb1..03bf1482d 100644 --- a/bizui/src/bizcomponents/transporttask/TransportTask.base.js +++ b/bizui/src/bizcomponents/transporttask/TransportTask.base.js @@ -1,97 +1,42 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"运输任务", menuFor: "transportTask", subItems: [ - {name: 'goodsList', displayName:'货物', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'transportTaskTrackList', displayName:'运输任务跟踪', icon:'tasks',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'goodsList', displayName:'货物', icon:'500px',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'transportTaskTrackList', displayName:'运输任务跟踪', icon:'tasks',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) - -} - -const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'transportTask') }, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: '开始', debugtype: 'string', dataIndex: 'start', width: '9',render: (text, record)=>renderTextCell(text,record) }, - { title: '开始时间', dataIndex: 'beginTime', render: (text, record) =>renderDateCell(text,record) }, - { title: '结束', dataIndex: 'end', render: (text, record) => renderReferenceCell(text, record)}, - { title: '司机', dataIndex: 'driver', render: (text, record) => renderReferenceCell(text, record)}, - { title: '卡车', dataIndex: 'truck', render: (text, record) => renderReferenceCell(text, record)}, - { title: '属于', dataIndex: 'belongsTo', render: (text, record) => renderReferenceCell(text, record)}, - { title: '纬度', debugtype: 'double', dataIndex: 'latitude', width: '13',render: (text, record)=>renderTextCell(text,record) }, - { title: '经度', debugtype: 'double', dataIndex: 'longitude', width: '14',render: (text, record)=>renderTextCell(text,record) }, - -] - const fieldLabels = { id: '序号', name: '名称', @@ -106,8 +51,69 @@ const fieldLabels = { } +const displayColumns = [ + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'transportTask') , sorter: true }, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.start, debugtype: 'string', dataIndex: 'start', width: '9',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.beginTime, dataIndex: 'beginTime', render: (text, record) =>renderDateCell(text,record), sorter: true }, + { title: fieldLabels.end, dataIndex: 'end', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.driver, dataIndex: 'driver', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.truck, dataIndex: 'truck', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.belongsTo, dataIndex: 'belongsTo', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.latitude, debugtype: 'double', dataIndex: 'latitude', width: '13',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.longitude, debugtype: 'double', dataIndex: 'longitude', width: '14',render: (text, record)=>renderTextCell(text,record)}, + +] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({transportTask,targetComponent})=>{ + + + + const {TransportTaskService} = GlobalComponents + // const userContext = null + return ( + +{transportTask.id} +{transportTask.name} +{transportTask.start} +{ moment(transportTask.beginTime).format('YYYY-MM-DD')} +{transportTask.end==null?appLocaleName(userContext,"NotAssigned"):`${transportTask.end.displayName}(${transportTask.end.id})`} + + showTransferModel(targetComponent,"结束","retailStore",TransportTaskService.requestCandidateEnd, + TransportTaskService.transferToAnotherEnd,"anotherEndId",transportTask.end?transportTask.end.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{transportTask.driver==null?appLocaleName(userContext,"NotAssigned"):`${transportTask.driver.displayName}(${transportTask.driver.id})`} + + showTransferModel(targetComponent,"司机","truckDriver",TransportTaskService.requestCandidateDriver, + TransportTaskService.transferToAnotherDriver,"anotherDriverId",transportTask.driver?transportTask.driver.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{transportTask.truck==null?appLocaleName(userContext,"NotAssigned"):`${transportTask.truck.displayName}(${transportTask.truck.id})`} + + showTransferModel(targetComponent,"卡车","transportTruck",TransportTaskService.requestCandidateTruck, + TransportTaskService.transferToAnotherTruck,"anotherTruckId",transportTask.truck?transportTask.truck.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{transportTask.belongsTo==null?appLocaleName(userContext,"NotAssigned"):`${transportTask.belongsTo.displayName}(${transportTask.belongsTo.id})`} + + showTransferModel(targetComponent,"属于","transportFleet",TransportTaskService.requestCandidateBelongsTo, + TransportTaskService.transferToAnotherBelongsTo,"anotherBelongsToId",transportTask.belongsTo?transportTask.belongsTo.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{transportTask.latitude} +{transportTask.longitude} + + {buildTransferModal(transportTask,targetComponent)} + + ) + +} + + + -const TransportTaskBase={menuData,displayColumns,fieldLabels} +const TransportTaskBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default TransportTaskBase diff --git a/bizui/src/bizcomponents/transporttask/TransportTask.createform.js b/bizui/src/bizcomponents/transporttask/TransportTask.createform.js index 6d2da172b..c08763c49 100644 --- a/bizui/src/bizcomponents/transporttask/TransportTask.createform.js +++ b/bizui/src/bizcomponents/transporttask/TransportTask.createform.js @@ -19,9 +19,9 @@ const testValues = {}; const testValues = { name: '货运记录', start: '双链二号仓', - beginTime: '2017-10-28', - latitude: '42.07601058612997', - longitude: '131.8711676749097', + beginTime: '2016-11-02', + latitude: '39.88682457024046', + longitude: '132.22401870991933', endId: 'RS000001', driverId: 'TD000001', truckId: 'TT000001', @@ -214,7 +214,7 @@ class TransportTaskCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -224,7 +224,7 @@ class TransportTaskCreateForm extends Component { {getFieldDecorator('start', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -234,7 +234,7 @@ class TransportTaskCreateForm extends Component { {getFieldDecorator('beginTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -244,7 +244,7 @@ class TransportTaskCreateForm extends Component { {getFieldDecorator('latitude', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -254,7 +254,7 @@ class TransportTaskCreateForm extends Component { {getFieldDecorator('longitude', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/transporttask/TransportTask.dashboard.js b/bizui/src/bizcomponents/transporttask/TransportTask.dashboard.js index 7c69d62e3..80697836e 100644 --- a/bizui/src/bizcomponents/transporttask/TransportTask.dashboard.js +++ b/bizui/src/bizcomponents/transporttask/TransportTask.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -165,6 +165,7 @@ class TransportTaskDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -173,13 +174,17 @@ class TransportTaskDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/transporttask/TransportTask.model.js b/bizui/src/bizcomponents/transporttask/TransportTask.model.js index 863bed27a..52eaad964 100644 --- a/bizui/src/bizcomponents/transporttask/TransportTask.model.js +++ b/bizui/src/bizcomponents/transporttask/TransportTask.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/transportTask/${id}/list/\GoodsList/货物+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/transportTask/${id}/list/GoodsList/货物+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateGoods({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/transportTask/${id}/list/\GoodsList/货物列表`, state: newPlayload } + const location = { pathname: `/transportTask/${id}/list/GoodsList/货物列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextGoodsUpdateRow({ payload }, { call, put }) { @@ -206,7 +206,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/transportTask/${id}/list/\TransportTaskTrackList/运输任务跟踪+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/transportTask/${id}/list/TransportTaskTrackList/运输任务跟踪+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateTransportTaskTrack({ payload }, { call, put }) { @@ -228,7 +228,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/transportTask/${id}/list/\TransportTaskTrackList/运输任务跟踪列表`, state: newPlayload } + const location = { pathname: `/transportTask/${id}/list/TransportTaskTrackList/运输任务跟踪列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextTransportTaskTrackUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/transporttask/TransportTask.permission.js b/bizui/src/bizcomponents/transporttask/TransportTask.permission.js new file mode 100644 index 000000000..e888bd9d0 --- /dev/null +++ b/bizui/src/bizcomponents/transporttask/TransportTask.permission.js @@ -0,0 +1,88 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './TransportTask.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (transportTask,targetComponent) =>{ + const userContext = null + return ( + +{transportTask.id} +{transportTask.name} +{transportTask.start} +{ moment(transportTask.beginTime).format('YYYY-MM-DD')} +{transportTask.latitude} +{transportTask.longitude} + + + ) +} + + +const renderPermissionSetting = transportTask => { + const {TransportTaskBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class TransportTaskPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const transportTask = this.props.transportTask; + const { id,displayName, goodsCount, transportTaskTrackCount } = transportTask + const cardsData = {cardsName:"运输任务",cardsFor: "transportTask",cardsSource: transportTask, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + transportTask: state._transportTask, +}))(Form.create()(TransportTaskPermission)) + diff --git a/bizui/src/bizcomponents/transporttask/TransportTask.permission.less b/bizui/src/bizcomponents/transporttask/TransportTask.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/transporttask/TransportTask.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/transporttask/TransportTask.preference.js b/bizui/src/bizcomponents/transporttask/TransportTask.preference.js index 20d78e86c..627aee69c 100644 --- a/bizui/src/bizcomponents/transporttask/TransportTask.preference.js +++ b/bizui/src/bizcomponents/transporttask/TransportTask.preference.js @@ -327,8 +327,12 @@ class TransportTaskPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, goodsCount, transportTaskTrackCount } = this.props.transportTask - const cardsData = {cardsName:"运输任务",cardsFor: "transportTask",cardsSource: this.props.transportTask, + const transportTask = this.props.transportTask; + const { id,displayName, goodsCount, transportTaskTrackCount } = transportTask + + + + const cardsData = {cardsName:"运输任务",cardsFor: "transportTask",cardsSource: transportTask, subItems: [ ], diff --git a/bizui/src/bizcomponents/transporttask/TransportTask.profile.js b/bizui/src/bizcomponents/transporttask/TransportTask.profile.js new file mode 100644 index 000000000..3691aa681 --- /dev/null +++ b/bizui/src/bizcomponents/transporttask/TransportTask.profile.js @@ -0,0 +1,95 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './TransportTask.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (transportTask,targetComponent) =>{ + const userContext = null + return ( + +{transportTask.id} +{transportTask.name} +{transportTask.start} +{ moment(transportTask.beginTime).format('YYYY-MM-DD')} +{transportTask.latitude} +{transportTask.longitude} + + + ) +} + + + +class TransportTaskProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const transportTask = this.props.transportTask; + const { id,displayName, goodsCount, transportTaskTrackCount } = transportTask + + const cardsData = {cardsName:"运输任务",cardsFor: "transportTask",cardsSource: transportTask, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + transportTask: state._transportTask, +}))(Form.create()(TransportTaskProfile)) + diff --git a/bizui/src/bizcomponents/transporttask/TransportTask.profile.less b/bizui/src/bizcomponents/transporttask/TransportTask.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/transporttask/TransportTask.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/transporttask/TransportTask.search.js b/bizui/src/bizcomponents/transporttask/TransportTask.search.js index b961688ab..71a332df5 100644 --- a/bizui/src/bizcomponents/transporttask/TransportTask.search.js +++ b/bizui/src/bizcomponents/transporttask/TransportTask.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/transporttask/TransportTask.searchform.js b/bizui/src/bizcomponents/transporttask/TransportTask.searchform.js index 476ed2f5b..b40262f59 100644 --- a/bizui/src/bizcomponents/transporttask/TransportTask.searchform.js +++ b/bizui/src/bizcomponents/transporttask/TransportTask.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`transportTaskList.searchField`] = fieldName - value[`transportTaskList.searchVerb`] = searchVerb - value[`transportTaskList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,15 +127,16 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'start')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'end')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'driver')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'truck')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'belongsTo')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'start')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'end')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'driver')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'truck')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'belongsTo')) console.log("the final parameter", paramList) @@ -151,11 +152,12 @@ componentDidMount() { } - params['transportTaskList'] = 1 - params['transportTaskList.orderBy.0'] = "id" - params['transportTaskList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -210,8 +212,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -334,8 +336,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/transporttask/TransportTask.table.js b/bizui/src/bizcomponents/transporttask/TransportTask.table.js index eec5184ec..3d909c6dc 100644 --- a/bizui/src/bizcomponents/transporttask/TransportTask.table.js +++ b/bizui/src/bizcomponents/transporttask/TransportTask.table.js @@ -40,24 +40,53 @@ class TransportTaskTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = TransportTaskBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class TransportTaskTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class TransportTaskTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/transporttask/TransportTask.updateform.js b/bizui/src/bizcomponents/transporttask/TransportTask.updateform.js index 1f3abfcad..7d946bd9d 100644 --- a/bizui/src/bizcomponents/transporttask/TransportTask.updateform.js +++ b/bizui/src/bizcomponents/transporttask/TransportTask.updateform.js @@ -262,7 +262,7 @@ class TransportTaskUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class TransportTaskUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class TransportTaskUpdateForm extends Component { initialValue: selectedRow.start, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -298,7 +298,7 @@ class TransportTaskUpdateForm extends Component { initialValue: selectedRow.beginTime, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -310,7 +310,7 @@ class TransportTaskUpdateForm extends Component { initialValue: selectedRow.latitude, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -322,7 +322,7 @@ class TransportTaskUpdateForm extends Component { initialValue: selectedRow.longitude, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.app.js b/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.app.js index 27a3aeafb..5b8c04b3a 100644 --- a/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.app.js +++ b/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class TransportTaskTrackBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -157,12 +166,14 @@ class TransportTaskTrackBizApp extends React.PureComponent { buildRouters = () =>{ const {TransportTaskTrackDashboard} = GlobalComponents - const {TransportTaskTrackPreference} = GlobalComponents + const {TransportTaskTrackPermission} = GlobalComponents + const {TransportTaskTrackProfile} = GlobalComponents const routers=[ {path:"/transportTaskTrack/:id/dashboard", component: TransportTaskTrackDashboard}, - {path:"/transportTaskTrack/:id/preference", component: TransportTaskTrackPreference}, + {path:"/transportTaskTrack/:id/profile", component: TransportTaskTrackProfile}, + {path:"/transportTaskTrack/:id/permission", component: TransportTaskTrackPermission}, diff --git a/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.associateform.js b/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.associateform.js index 6e89c533e..d84e786c5 100644 --- a/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.associateform.js +++ b/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.associateform.js @@ -18,9 +18,9 @@ const { TextArea } = Input const testValues = {}; /* const testValues = { - trackTime: '2016-08-23', - latitude: '31.081372415587587', - longitude: '105.40259069414206', + trackTime: '2018-03-22', + latitude: '32.77776208496111', + longitude: '105.81693854742218', movementId: 'TT000001', } */ @@ -140,7 +140,7 @@ class TransportTaskTrackAssociateForm extends Component { {getFieldDecorator('trackTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -150,7 +150,7 @@ class TransportTaskTrackAssociateForm extends Component { {getFieldDecorator('latitude', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -160,7 +160,7 @@ class TransportTaskTrackAssociateForm extends Component { {getFieldDecorator('longitude', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.associateform.less b/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.associateform.less +++ b/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.base.js b/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.base.js index d61cd78e1..e016c59cc 100644 --- a/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.base.js +++ b/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.base.js @@ -1,10 +1,33 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"运输任务跟踪", menuFor: "transportTaskTrack", subItems: [ @@ -12,90 +35,53 @@ const menuData = {menuName:"运输任务跟踪", menuFor: "transportTaskTrack", ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + trackTime: '跟踪时间', + latitude: '纬度', + longitude: '经度', + movement: '运动', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record) }, - { title: '跟踪时间', dataIndex: 'trackTime', render: (text, record) =>renderDateCell(text,record) }, - { title: '纬度', debugtype: 'double', dataIndex: 'latitude', width: '13',render: (text, record)=>renderTextCell(text,record) }, - { title: '经度', debugtype: 'double', dataIndex: 'longitude', width: '14',render: (text, record)=>renderTextCell(text,record) }, - { title: '运动', dataIndex: 'movement', render: (text, record) => renderReferenceCell(text, record)}, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.trackTime, dataIndex: 'trackTime', render: (text, record) =>renderDateCell(text,record), sorter: true }, + { title: fieldLabels.latitude, debugtype: 'double', dataIndex: 'latitude', width: '13',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.longitude, debugtype: 'double', dataIndex: 'longitude', width: '14',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.movement, dataIndex: 'movement', render: (text, record) => renderReferenceCell(text, record), sorter:true}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({transportTaskTrack,targetComponent})=>{ -const fieldLabels = { - id: '序号', - trackTime: '跟踪时间', - latitude: '纬度', - longitude: '经度', - movement: '运动', + + + const {TransportTaskTrackService} = GlobalComponents + // const userContext = null + return ( + +{transportTaskTrack.id} +{ moment(transportTaskTrack.trackTime).format('YYYY-MM-DD')} +{transportTaskTrack.latitude} +{transportTaskTrack.longitude} +{transportTaskTrack.movement==null?appLocaleName(userContext,"NotAssigned"):`${transportTaskTrack.movement.displayName}(${transportTaskTrack.movement.id})`} + + showTransferModel(targetComponent,"运动","transportTask",TransportTaskTrackService.requestCandidateMovement, + TransportTaskTrackService.transferToAnotherMovement,"anotherMovementId",transportTaskTrack.movement?transportTaskTrack.movement.id:"")} + style={{fontSize: 20,color:"red"}} /> + + + {buildTransferModal(transportTaskTrack,targetComponent)} + + ) } + + -const TransportTaskTrackBase={menuData,displayColumns,fieldLabels} +const TransportTaskTrackBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default TransportTaskTrackBase diff --git a/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.createform.js b/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.createform.js index 22faadba2..30862733c 100644 --- a/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.createform.js +++ b/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.createform.js @@ -17,9 +17,9 @@ const { TextArea } = Input const testValues = {}; /* const testValues = { - trackTime: '2017-02-11', - latitude: '31.343777027617143', - longitude: '104.21825410378209', + trackTime: '2018-04-13', + latitude: '30.84109771302419', + longitude: '104.80561656124341', movementId: 'TT000001', } */ @@ -209,7 +209,7 @@ class TransportTaskTrackCreateForm extends Component { {getFieldDecorator('trackTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -219,7 +219,7 @@ class TransportTaskTrackCreateForm extends Component { {getFieldDecorator('latitude', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -229,7 +229,7 @@ class TransportTaskTrackCreateForm extends Component { {getFieldDecorator('longitude', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.dashboard.js b/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.dashboard.js index 4392a89f0..9f7359bd8 100644 --- a/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.dashboard.js +++ b/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -143,6 +143,7 @@ class TransportTaskTrackDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -151,13 +152,17 @@ class TransportTaskTrackDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.model.js b/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.model.js index f23362a39..3a100beae 100644 --- a/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.model.js +++ b/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' diff --git a/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.permission.js b/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.permission.js new file mode 100644 index 000000000..16feb637f --- /dev/null +++ b/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.permission.js @@ -0,0 +1,86 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './TransportTaskTrack.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (transportTaskTrack,targetComponent) =>{ + const userContext = null + return ( + +{transportTaskTrack.id} +{ moment(transportTaskTrack.trackTime).format('YYYY-MM-DD')} +{transportTaskTrack.latitude} +{transportTaskTrack.longitude} + + + ) +} + + +const renderPermissionSetting = transportTaskTrack => { + const {TransportTaskTrackBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class TransportTaskTrackPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const transportTaskTrack = this.props.transportTaskTrack; + const { id,displayName, } = transportTaskTrack + const cardsData = {cardsName:"运输任务跟踪",cardsFor: "transportTaskTrack",cardsSource: transportTaskTrack, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + transportTaskTrack: state._transportTaskTrack, +}))(Form.create()(TransportTaskTrackPermission)) + diff --git a/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.permission.less b/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.preference.js b/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.preference.js index 77646347c..37b5f60a8 100644 --- a/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.preference.js +++ b/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.preference.js @@ -307,8 +307,12 @@ class TransportTaskTrackPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, } = this.props.transportTaskTrack - const cardsData = {cardsName:"运输任务跟踪",cardsFor: "transportTaskTrack",cardsSource: this.props.transportTaskTrack, + const transportTaskTrack = this.props.transportTaskTrack; + const { id,displayName, } = transportTaskTrack + + + + const cardsData = {cardsName:"运输任务跟踪",cardsFor: "transportTaskTrack",cardsSource: transportTaskTrack, subItems: [ ], diff --git a/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.profile.js b/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.profile.js new file mode 100644 index 000000000..898712f79 --- /dev/null +++ b/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.profile.js @@ -0,0 +1,93 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './TransportTaskTrack.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (transportTaskTrack,targetComponent) =>{ + const userContext = null + return ( + +{transportTaskTrack.id} +{ moment(transportTaskTrack.trackTime).format('YYYY-MM-DD')} +{transportTaskTrack.latitude} +{transportTaskTrack.longitude} + + + ) +} + + + +class TransportTaskTrackProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const transportTaskTrack = this.props.transportTaskTrack; + const { id,displayName, } = transportTaskTrack + + const cardsData = {cardsName:"运输任务跟踪",cardsFor: "transportTaskTrack",cardsSource: transportTaskTrack, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + transportTaskTrack: state._transportTaskTrack, +}))(Form.create()(TransportTaskTrackProfile)) + diff --git a/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.profile.less b/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.search.js b/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.search.js index 8814711b7..761cbae5d 100644 --- a/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.search.js +++ b/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.searchform.js b/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.searchform.js index ca7a3297d..b9f69c742 100644 --- a/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.searchform.js +++ b/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`transportTaskTrackList.searchField`] = fieldName - value[`transportTaskTrackList.searchVerb`] = searchVerb - value[`transportTaskTrackList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,10 +127,11 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'movement')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'movement')) console.log("the final parameter", paramList) @@ -146,11 +147,12 @@ componentDidMount() { } - params['transportTaskTrackList'] = 1 - params['transportTaskTrackList.orderBy.0'] = "id" - params['transportTaskTrackList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -212,8 +214,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -275,8 +277,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.table.js b/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.table.js index 7837f64a3..340eda4b5 100644 --- a/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.table.js +++ b/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.table.js @@ -40,24 +40,53 @@ class TransportTaskTrackTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = TransportTaskTrackBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class TransportTaskTrackTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class TransportTaskTrackTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.updateform.js b/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.updateform.js index 9ed73ba0b..26360845c 100644 --- a/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.updateform.js +++ b/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.updateform.js @@ -262,7 +262,7 @@ class TransportTaskTrackUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class TransportTaskTrackUpdateForm extends Component { initialValue: selectedRow.trackTime, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class TransportTaskTrackUpdateForm extends Component { initialValue: selectedRow.latitude, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -298,7 +298,7 @@ class TransportTaskTrackUpdateForm extends Component { initialValue: selectedRow.longitude, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/transporttruck/TransportTruck.app.js b/bizui/src/bizcomponents/transporttruck/TransportTruck.app.js index e84ecfa6b..8e6c0af33 100644 --- a/bizui/src/bizcomponents/transporttruck/TransportTruck.app.js +++ b/bizui/src/bizcomponents/transporttruck/TransportTruck.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class TransportTruckBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class TransportTruckBizApp extends React.PureComponent { buildRouters = () =>{ const {TransportTruckDashboard} = GlobalComponents - const {TransportTruckPreference} = GlobalComponents + const {TransportTruckPermission} = GlobalComponents + const {TransportTruckProfile} = GlobalComponents const routers=[ {path:"/transportTruck/:id/dashboard", component: TransportTruckDashboard}, - {path:"/transportTruck/:id/preference", component: TransportTruckPreference}, + {path:"/transportTruck/:id/profile", component: TransportTruckProfile}, + {path:"/transportTruck/:id/permission", component: TransportTruckPermission}, diff --git a/bizui/src/bizcomponents/transporttruck/TransportTruck.associateform.js b/bizui/src/bizcomponents/transporttruck/TransportTruck.associateform.js index 6e0605ae0..b4220090f 100644 --- a/bizui/src/bizcomponents/transporttruck/TransportTruck.associateform.js +++ b/bizui/src/bizcomponents/transporttruck/TransportTruck.associateform.js @@ -23,7 +23,7 @@ const testValues = { contactNumber: '02887654321', vehicleLicenseNumber: 'VL9198', engineNumber: 'EN00102', - makeDate: '2018-10-30', + makeDate: '2019-01-31', mileage: '100万公里', bodyColor: '红色', ownerId: 'TF000001', @@ -146,7 +146,7 @@ class TransportTruckAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -156,7 +156,7 @@ class TransportTruckAssociateForm extends Component { {getFieldDecorator('plateNumber', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -166,7 +166,7 @@ class TransportTruckAssociateForm extends Component { {getFieldDecorator('contactNumber', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -176,7 +176,7 @@ class TransportTruckAssociateForm extends Component { {getFieldDecorator('vehicleLicenseNumber', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -186,7 +186,7 @@ class TransportTruckAssociateForm extends Component { {getFieldDecorator('engineNumber', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -196,7 +196,7 @@ class TransportTruckAssociateForm extends Component { {getFieldDecorator('makeDate', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -206,7 +206,7 @@ class TransportTruckAssociateForm extends Component { {getFieldDecorator('mileage', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -216,7 +216,7 @@ class TransportTruckAssociateForm extends Component { {getFieldDecorator('bodyColor', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/transporttruck/TransportTruck.associateform.less b/bizui/src/bizcomponents/transporttruck/TransportTruck.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/transporttruck/TransportTruck.associateform.less +++ b/bizui/src/bizcomponents/transporttruck/TransportTruck.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/transporttruck/TransportTruck.base.js b/bizui/src/bizcomponents/transporttruck/TransportTruck.base.js index 9f40da74e..c73470231 100644 --- a/bizui/src/bizcomponents/transporttruck/TransportTruck.base.js +++ b/bizui/src/bizcomponents/transporttruck/TransportTruck.base.js @@ -1,96 +1,41 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"运输车", menuFor: "transportTruck", subItems: [ - {name: 'transportTaskList', displayName:'运输任务', icon:'tasks',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'transportTaskList', displayName:'运输任务', icon:'tasks',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) - -} - -const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'transportTruck') }, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: '车牌号码', debugtype: 'string', dataIndex: 'plateNumber', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: '联系电话', debugtype: 'string', dataIndex: 'contactNumber', width: '15',render: (text, record)=>renderTextCell(text,record) }, - { title: '汽车牌照号码', debugtype: 'string', dataIndex: 'vehicleLicenseNumber', width: '10',render: (text, record)=>renderTextCell(text,record) }, - { title: '发动机号', debugtype: 'string', dataIndex: 'engineNumber', width: '11',render: (text, record)=>renderTextCell(text,record) }, - { title: '制造日期', dataIndex: 'makeDate', render: (text, record) =>renderDateCell(text,record) }, - { title: '里程', debugtype: 'string', dataIndex: 'mileage', width: '10',render: (text, record)=>renderTextCell(text,record) }, - { title: '车身颜色', debugtype: 'string', dataIndex: 'bodyColor', width: '6',render: (text, record)=>renderTextCell(text,record) }, - { title: '业主', dataIndex: 'owner', render: (text, record) => renderReferenceCell(text, record)}, - -] - const fieldLabels = { id: '序号', name: '名称', @@ -105,8 +50,54 @@ const fieldLabels = { } +const displayColumns = [ + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'transportTruck') , sorter: true }, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.plateNumber, debugtype: 'string', dataIndex: 'plateNumber', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.contactNumber, debugtype: 'string', dataIndex: 'contactNumber', width: '15',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.vehicleLicenseNumber, debugtype: 'string', dataIndex: 'vehicleLicenseNumber', width: '10',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.engineNumber, debugtype: 'string', dataIndex: 'engineNumber', width: '11',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.makeDate, dataIndex: 'makeDate', render: (text, record) =>renderDateCell(text,record), sorter: true }, + { title: fieldLabels.mileage, debugtype: 'string', dataIndex: 'mileage', width: '10',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.bodyColor, debugtype: 'string', dataIndex: 'bodyColor', width: '6',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.owner, dataIndex: 'owner', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + +] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({transportTruck,targetComponent})=>{ + + + + const {TransportTruckService} = GlobalComponents + // const userContext = null + return ( + +{transportTruck.id} +{transportTruck.name} +{transportTruck.plateNumber} +{transportTruck.contactNumber} +{transportTruck.vehicleLicenseNumber} +{transportTruck.engineNumber} +{ moment(transportTruck.makeDate).format('YYYY-MM-DD')} +{transportTruck.mileage} +{transportTruck.bodyColor} +{transportTruck.owner==null?appLocaleName(userContext,"NotAssigned"):`${transportTruck.owner.displayName}(${transportTruck.owner.id})`} + + showTransferModel(targetComponent,"业主","transportFleet",TransportTruckService.requestCandidateOwner, + TransportTruckService.transferToAnotherOwner,"anotherOwnerId",transportTruck.owner?transportTruck.owner.id:"")} + style={{fontSize: 20,color:"red"}} /> + + + {buildTransferModal(transportTruck,targetComponent)} + + ) + +} + + + -const TransportTruckBase={menuData,displayColumns,fieldLabels} +const TransportTruckBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default TransportTruckBase diff --git a/bizui/src/bizcomponents/transporttruck/TransportTruck.createform.js b/bizui/src/bizcomponents/transporttruck/TransportTruck.createform.js index 6a24fd030..71a964701 100644 --- a/bizui/src/bizcomponents/transporttruck/TransportTruck.createform.js +++ b/bizui/src/bizcomponents/transporttruck/TransportTruck.createform.js @@ -22,7 +22,7 @@ const testValues = { contactNumber: '02887654321', vehicleLicenseNumber: 'VL9198', engineNumber: 'EN00102', - makeDate: '2018-07-04', + makeDate: '2017-08-11', mileage: '100万公里', bodyColor: '红色', ownerId: 'TF000001', @@ -214,7 +214,7 @@ class TransportTruckCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -224,7 +224,7 @@ class TransportTruckCreateForm extends Component { {getFieldDecorator('plateNumber', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -234,7 +234,7 @@ class TransportTruckCreateForm extends Component { {getFieldDecorator('contactNumber', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -244,7 +244,7 @@ class TransportTruckCreateForm extends Component { {getFieldDecorator('vehicleLicenseNumber', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -254,7 +254,7 @@ class TransportTruckCreateForm extends Component { {getFieldDecorator('engineNumber', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -264,7 +264,7 @@ class TransportTruckCreateForm extends Component { {getFieldDecorator('makeDate', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class TransportTruckCreateForm extends Component { {getFieldDecorator('mileage', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -284,7 +284,7 @@ class TransportTruckCreateForm extends Component { {getFieldDecorator('bodyColor', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/transporttruck/TransportTruck.dashboard.js b/bizui/src/bizcomponents/transporttruck/TransportTruck.dashboard.js index 96e776db5..17f6d9bed 100644 --- a/bizui/src/bizcomponents/transporttruck/TransportTruck.dashboard.js +++ b/bizui/src/bizcomponents/transporttruck/TransportTruck.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -149,6 +149,7 @@ class TransportTruckDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -157,13 +158,17 @@ class TransportTruckDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/transporttruck/TransportTruck.model.js b/bizui/src/bizcomponents/transporttruck/TransportTruck.model.js index 404177cb5..6e27bb92f 100644 --- a/bizui/src/bizcomponents/transporttruck/TransportTruck.model.js +++ b/bizui/src/bizcomponents/transporttruck/TransportTruck.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/transportTruck/${id}/list/\TransportTaskList/运输任务+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/transportTruck/${id}/list/TransportTaskList/运输任务+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateTransportTask({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/transportTruck/${id}/list/\TransportTaskList/运输任务列表`, state: newPlayload } + const location = { pathname: `/transportTruck/${id}/list/TransportTaskList/运输任务列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextTransportTaskUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/transporttruck/TransportTruck.permission.js b/bizui/src/bizcomponents/transporttruck/TransportTruck.permission.js new file mode 100644 index 000000000..71a16c22d --- /dev/null +++ b/bizui/src/bizcomponents/transporttruck/TransportTruck.permission.js @@ -0,0 +1,91 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './TransportTruck.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (transportTruck,targetComponent) =>{ + const userContext = null + return ( + +{transportTruck.id} +{transportTruck.name} +{transportTruck.plateNumber} +{transportTruck.contactNumber} +{transportTruck.vehicleLicenseNumber} +{transportTruck.engineNumber} +{ moment(transportTruck.makeDate).format('YYYY-MM-DD')} +{transportTruck.mileage} +{transportTruck.bodyColor} + + + ) +} + + +const renderPermissionSetting = transportTruck => { + const {TransportTruckBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class TransportTruckPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const transportTruck = this.props.transportTruck; + const { id,displayName, transportTaskCount } = transportTruck + const cardsData = {cardsName:"运输车",cardsFor: "transportTruck",cardsSource: transportTruck, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + transportTruck: state._transportTruck, +}))(Form.create()(TransportTruckPermission)) + diff --git a/bizui/src/bizcomponents/transporttruck/TransportTruck.permission.less b/bizui/src/bizcomponents/transporttruck/TransportTruck.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/transporttruck/TransportTruck.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/transporttruck/TransportTruck.preference.js b/bizui/src/bizcomponents/transporttruck/TransportTruck.preference.js index 2f3435f88..6a09da5e3 100644 --- a/bizui/src/bizcomponents/transporttruck/TransportTruck.preference.js +++ b/bizui/src/bizcomponents/transporttruck/TransportTruck.preference.js @@ -312,8 +312,12 @@ class TransportTruckPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, transportTaskCount } = this.props.transportTruck - const cardsData = {cardsName:"运输车",cardsFor: "transportTruck",cardsSource: this.props.transportTruck, + const transportTruck = this.props.transportTruck; + const { id,displayName, transportTaskCount } = transportTruck + + + + const cardsData = {cardsName:"运输车",cardsFor: "transportTruck",cardsSource: transportTruck, subItems: [ ], diff --git a/bizui/src/bizcomponents/transporttruck/TransportTruck.profile.js b/bizui/src/bizcomponents/transporttruck/TransportTruck.profile.js new file mode 100644 index 000000000..0505c43ec --- /dev/null +++ b/bizui/src/bizcomponents/transporttruck/TransportTruck.profile.js @@ -0,0 +1,98 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './TransportTruck.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (transportTruck,targetComponent) =>{ + const userContext = null + return ( + +{transportTruck.id} +{transportTruck.name} +{transportTruck.plateNumber} +{transportTruck.contactNumber} +{transportTruck.vehicleLicenseNumber} +{transportTruck.engineNumber} +{ moment(transportTruck.makeDate).format('YYYY-MM-DD')} +{transportTruck.mileage} +{transportTruck.bodyColor} + + + ) +} + + + +class TransportTruckProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const transportTruck = this.props.transportTruck; + const { id,displayName, transportTaskCount } = transportTruck + + const cardsData = {cardsName:"运输车",cardsFor: "transportTruck",cardsSource: transportTruck, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + transportTruck: state._transportTruck, +}))(Form.create()(TransportTruckProfile)) + diff --git a/bizui/src/bizcomponents/transporttruck/TransportTruck.profile.less b/bizui/src/bizcomponents/transporttruck/TransportTruck.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/transporttruck/TransportTruck.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/transporttruck/TransportTruck.search.js b/bizui/src/bizcomponents/transporttruck/TransportTruck.search.js index e410ad1b0..eb9ee4407 100644 --- a/bizui/src/bizcomponents/transporttruck/TransportTruck.search.js +++ b/bizui/src/bizcomponents/transporttruck/TransportTruck.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/transporttruck/TransportTruck.searchform.js b/bizui/src/bizcomponents/transporttruck/TransportTruck.searchform.js index 0052b6ff5..ac7e08b6b 100644 --- a/bizui/src/bizcomponents/transporttruck/TransportTruck.searchform.js +++ b/bizui/src/bizcomponents/transporttruck/TransportTruck.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`transportTruckList.searchField`] = fieldName - value[`transportTruckList.searchVerb`] = searchVerb - value[`transportTruckList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,17 +127,18 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'plateNumber')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'contactNumber')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'vehicleLicenseNumber')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'engineNumber')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'mileage')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'bodyColor')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'owner')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'plateNumber')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'contactNumber')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'vehicleLicenseNumber')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'engineNumber')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'mileage')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'bodyColor')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'owner')) console.log("the final parameter", paramList) @@ -153,11 +154,12 @@ componentDidMount() { } - params['transportTruckList'] = 1 - params['transportTruckList.orderBy.0'] = "id" - params['transportTruckList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -212,8 +214,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -331,8 +333,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/transporttruck/TransportTruck.table.js b/bizui/src/bizcomponents/transporttruck/TransportTruck.table.js index 84e08f8cf..4a073fc45 100644 --- a/bizui/src/bizcomponents/transporttruck/TransportTruck.table.js +++ b/bizui/src/bizcomponents/transporttruck/TransportTruck.table.js @@ -40,24 +40,53 @@ class TransportTruckTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = TransportTruckBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class TransportTruckTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class TransportTruckTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/transporttruck/TransportTruck.updateform.js b/bizui/src/bizcomponents/transporttruck/TransportTruck.updateform.js index 67ad641bd..f6650b0fb 100644 --- a/bizui/src/bizcomponents/transporttruck/TransportTruck.updateform.js +++ b/bizui/src/bizcomponents/transporttruck/TransportTruck.updateform.js @@ -262,7 +262,7 @@ class TransportTruckUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class TransportTruckUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class TransportTruckUpdateForm extends Component { initialValue: selectedRow.plateNumber, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -298,7 +298,7 @@ class TransportTruckUpdateForm extends Component { initialValue: selectedRow.contactNumber, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -310,7 +310,7 @@ class TransportTruckUpdateForm extends Component { initialValue: selectedRow.vehicleLicenseNumber, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -322,7 +322,7 @@ class TransportTruckUpdateForm extends Component { initialValue: selectedRow.engineNumber, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -334,7 +334,7 @@ class TransportTruckUpdateForm extends Component { initialValue: selectedRow.makeDate, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -346,7 +346,7 @@ class TransportTruckUpdateForm extends Component { initialValue: selectedRow.mileage, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -358,7 +358,7 @@ class TransportTruckUpdateForm extends Component { initialValue: selectedRow.bodyColor, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/truckdriver/TruckDriver.app.js b/bizui/src/bizcomponents/truckdriver/TruckDriver.app.js index b3fb0922e..84d76fa6b 100644 --- a/bizui/src/bizcomponents/truckdriver/TruckDriver.app.js +++ b/bizui/src/bizcomponents/truckdriver/TruckDriver.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class TruckDriverBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -206,12 +215,14 @@ class TruckDriverBizApp extends React.PureComponent { buildRouters = () =>{ const {TruckDriverDashboard} = GlobalComponents - const {TruckDriverPreference} = GlobalComponents + const {TruckDriverPermission} = GlobalComponents + const {TruckDriverProfile} = GlobalComponents const routers=[ {path:"/truckDriver/:id/dashboard", component: TruckDriverDashboard}, - {path:"/truckDriver/:id/preference", component: TruckDriverPreference}, + {path:"/truckDriver/:id/profile", component: TruckDriverProfile}, + {path:"/truckDriver/:id/permission", component: TruckDriverPermission}, diff --git a/bizui/src/bizcomponents/truckdriver/TruckDriver.associateform.js b/bizui/src/bizcomponents/truckdriver/TruckDriver.associateform.js index a4bb35f5e..a10ee7944 100644 --- a/bizui/src/bizcomponents/truckdriver/TruckDriver.associateform.js +++ b/bizui/src/bizcomponents/truckdriver/TruckDriver.associateform.js @@ -141,7 +141,7 @@ class TruckDriverAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -151,7 +151,7 @@ class TruckDriverAssociateForm extends Component { {getFieldDecorator('driverLicenseNumber', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -161,7 +161,7 @@ class TruckDriverAssociateForm extends Component { {getFieldDecorator('contactNumber', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/truckdriver/TruckDriver.associateform.less b/bizui/src/bizcomponents/truckdriver/TruckDriver.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/truckdriver/TruckDriver.associateform.less +++ b/bizui/src/bizcomponents/truckdriver/TruckDriver.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/truckdriver/TruckDriver.base.js b/bizui/src/bizcomponents/truckdriver/TruckDriver.base.js index cff87d9e2..38931c41a 100644 --- a/bizui/src/bizcomponents/truckdriver/TruckDriver.base.js +++ b/bizui/src/bizcomponents/truckdriver/TruckDriver.base.js @@ -1,102 +1,88 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"卡车司机", menuFor: "truckDriver", subItems: [ - {name: 'transportTaskList', displayName:'运输任务', icon:'tasks',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'transportTaskList', displayName:'运输任务', icon:'tasks',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + name: '名称', + driverLicenseNumber: '驾驶执照号码', + contactNumber: '联系电话', + belongsTo: '属于', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'truckDriver') }, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '10',render: (text, record)=>renderTextCell(text,record) }, - { title: '驾驶执照号码', debugtype: 'string', dataIndex: 'driverLicenseNumber', width: '15',render: (text, record)=>renderTextCell(text,record) }, - { title: '联系电话', debugtype: 'string_china_mobile_phone', dataIndex: 'contactNumber', width: '15',render: (text, record)=>renderTextCell(text,record) }, - { title: '属于', dataIndex: 'belongsTo', render: (text, record) => renderReferenceCell(text, record)}, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'truckDriver') , sorter: true }, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '10',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.driverLicenseNumber, debugtype: 'string', dataIndex: 'driverLicenseNumber', width: '15',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.contactNumber, debugtype: 'string_china_mobile_phone', dataIndex: 'contactNumber', width: '15',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.belongsTo, dataIndex: 'belongsTo', render: (text, record) => renderReferenceCell(text, record), sorter:true}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({truckDriver,targetComponent})=>{ -const fieldLabels = { - id: '序号', - name: '名称', - driverLicenseNumber: '驾驶执照号码', - contactNumber: '联系电话', - belongsTo: '属于', + + + const {TruckDriverService} = GlobalComponents + // const userContext = null + return ( + +{truckDriver.id} +{truckDriver.name} +{truckDriver.driverLicenseNumber} +{truckDriver.contactNumber} +{truckDriver.belongsTo==null?appLocaleName(userContext,"NotAssigned"):`${truckDriver.belongsTo.displayName}(${truckDriver.belongsTo.id})`} + + showTransferModel(targetComponent,"属于","transportFleet",TruckDriverService.requestCandidateBelongsTo, + TruckDriverService.transferToAnotherBelongsTo,"anotherBelongsToId",truckDriver.belongsTo?truckDriver.belongsTo.id:"")} + style={{fontSize: 20,color:"red"}} /> + + + {buildTransferModal(truckDriver,targetComponent)} + + ) } + + -const TruckDriverBase={menuData,displayColumns,fieldLabels} +const TruckDriverBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default TruckDriverBase diff --git a/bizui/src/bizcomponents/truckdriver/TruckDriver.createform.js b/bizui/src/bizcomponents/truckdriver/TruckDriver.createform.js index f2b4f388c..6b0abc874 100644 --- a/bizui/src/bizcomponents/truckdriver/TruckDriver.createform.js +++ b/bizui/src/bizcomponents/truckdriver/TruckDriver.createform.js @@ -209,7 +209,7 @@ class TruckDriverCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -219,7 +219,7 @@ class TruckDriverCreateForm extends Component { {getFieldDecorator('driverLicenseNumber', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -229,7 +229,7 @@ class TruckDriverCreateForm extends Component { {getFieldDecorator('contactNumber', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/truckdriver/TruckDriver.dashboard.js b/bizui/src/bizcomponents/truckdriver/TruckDriver.dashboard.js index 01d0b8d0a..3c71143d1 100644 --- a/bizui/src/bizcomponents/truckdriver/TruckDriver.dashboard.js +++ b/bizui/src/bizcomponents/truckdriver/TruckDriver.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -144,6 +144,7 @@ class TruckDriverDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -152,13 +153,17 @@ class TruckDriverDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/truckdriver/TruckDriver.model.js b/bizui/src/bizcomponents/truckdriver/TruckDriver.model.js index 310b4733c..c5df9ef31 100644 --- a/bizui/src/bizcomponents/truckdriver/TruckDriver.model.js +++ b/bizui/src/bizcomponents/truckdriver/TruckDriver.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/truckDriver/${id}/list/\TransportTaskList/运输任务+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/truckDriver/${id}/list/TransportTaskList/运输任务+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateTransportTask({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/truckDriver/${id}/list/\TransportTaskList/运输任务列表`, state: newPlayload } + const location = { pathname: `/truckDriver/${id}/list/TransportTaskList/运输任务列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextTransportTaskUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/truckdriver/TruckDriver.permission.js b/bizui/src/bizcomponents/truckdriver/TruckDriver.permission.js new file mode 100644 index 000000000..f2c046018 --- /dev/null +++ b/bizui/src/bizcomponents/truckdriver/TruckDriver.permission.js @@ -0,0 +1,86 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './TruckDriver.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (truckDriver,targetComponent) =>{ + const userContext = null + return ( + +{truckDriver.id} +{truckDriver.name} +{truckDriver.driverLicenseNumber} +{truckDriver.contactNumber} + + + ) +} + + +const renderPermissionSetting = truckDriver => { + const {TruckDriverBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class TruckDriverPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const truckDriver = this.props.truckDriver; + const { id,displayName, transportTaskCount } = truckDriver + const cardsData = {cardsName:"卡车司机",cardsFor: "truckDriver",cardsSource: truckDriver, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + truckDriver: state._truckDriver, +}))(Form.create()(TruckDriverPermission)) + diff --git a/bizui/src/bizcomponents/truckdriver/TruckDriver.permission.less b/bizui/src/bizcomponents/truckdriver/TruckDriver.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/truckdriver/TruckDriver.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/truckdriver/TruckDriver.preference.js b/bizui/src/bizcomponents/truckdriver/TruckDriver.preference.js index e3d4d4f7e..79a5f5566 100644 --- a/bizui/src/bizcomponents/truckdriver/TruckDriver.preference.js +++ b/bizui/src/bizcomponents/truckdriver/TruckDriver.preference.js @@ -307,8 +307,12 @@ class TruckDriverPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, transportTaskCount } = this.props.truckDriver - const cardsData = {cardsName:"卡车司机",cardsFor: "truckDriver",cardsSource: this.props.truckDriver, + const truckDriver = this.props.truckDriver; + const { id,displayName, transportTaskCount } = truckDriver + + + + const cardsData = {cardsName:"卡车司机",cardsFor: "truckDriver",cardsSource: truckDriver, subItems: [ ], diff --git a/bizui/src/bizcomponents/truckdriver/TruckDriver.profile.js b/bizui/src/bizcomponents/truckdriver/TruckDriver.profile.js new file mode 100644 index 000000000..33f2febe3 --- /dev/null +++ b/bizui/src/bizcomponents/truckdriver/TruckDriver.profile.js @@ -0,0 +1,93 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './TruckDriver.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (truckDriver,targetComponent) =>{ + const userContext = null + return ( + +{truckDriver.id} +{truckDriver.name} +{truckDriver.driverLicenseNumber} +{truckDriver.contactNumber} + + + ) +} + + + +class TruckDriverProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const truckDriver = this.props.truckDriver; + const { id,displayName, transportTaskCount } = truckDriver + + const cardsData = {cardsName:"卡车司机",cardsFor: "truckDriver",cardsSource: truckDriver, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + truckDriver: state._truckDriver, +}))(Form.create()(TruckDriverProfile)) + diff --git a/bizui/src/bizcomponents/truckdriver/TruckDriver.profile.less b/bizui/src/bizcomponents/truckdriver/TruckDriver.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/truckdriver/TruckDriver.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/truckdriver/TruckDriver.search.js b/bizui/src/bizcomponents/truckdriver/TruckDriver.search.js index 8b354b3ab..957c4cbe3 100644 --- a/bizui/src/bizcomponents/truckdriver/TruckDriver.search.js +++ b/bizui/src/bizcomponents/truckdriver/TruckDriver.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/truckdriver/TruckDriver.searchform.js b/bizui/src/bizcomponents/truckdriver/TruckDriver.searchform.js index dae16d0c7..73fe55a6e 100644 --- a/bizui/src/bizcomponents/truckdriver/TruckDriver.searchform.js +++ b/bizui/src/bizcomponents/truckdriver/TruckDriver.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`truckDriverList.searchField`] = fieldName - value[`truckDriverList.searchVerb`] = searchVerb - value[`truckDriverList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,13 +127,14 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'driverLicenseNumber')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'contactNumber')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'belongsTo')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'driverLicenseNumber')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'contactNumber')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'belongsTo')) console.log("the final parameter", paramList) @@ -149,11 +150,12 @@ componentDidMount() { } - params['truckDriverList'] = 1 - params['truckDriverList.orderBy.0'] = "id" - params['truckDriverList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -208,8 +210,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -295,8 +297,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/truckdriver/TruckDriver.table.js b/bizui/src/bizcomponents/truckdriver/TruckDriver.table.js index f2b9c242a..466ffe2ee 100644 --- a/bizui/src/bizcomponents/truckdriver/TruckDriver.table.js +++ b/bizui/src/bizcomponents/truckdriver/TruckDriver.table.js @@ -40,24 +40,53 @@ class TruckDriverTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = TruckDriverBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class TruckDriverTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class TruckDriverTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/truckdriver/TruckDriver.updateform.js b/bizui/src/bizcomponents/truckdriver/TruckDriver.updateform.js index adab4b7e4..632edacd4 100644 --- a/bizui/src/bizcomponents/truckdriver/TruckDriver.updateform.js +++ b/bizui/src/bizcomponents/truckdriver/TruckDriver.updateform.js @@ -261,7 +261,7 @@ class TruckDriverUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class TruckDriverUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -285,7 +285,7 @@ class TruckDriverUpdateForm extends Component { initialValue: selectedRow.driverLicenseNumber, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -297,7 +297,7 @@ class TruckDriverUpdateForm extends Component { initialValue: selectedRow.contactNumber, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/userapp/UserApp.app.js b/bizui/src/bizcomponents/userapp/UserApp.app.js index fcccbc79d..2c01831ed 100644 --- a/bizui/src/bizcomponents/userapp/UserApp.app.js +++ b/bizui/src/bizcomponents/userapp/UserApp.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class UserAppBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -255,12 +264,14 @@ class UserAppBizApp extends React.PureComponent { buildRouters = () =>{ const {UserAppDashboard} = GlobalComponents - const {UserAppPreference} = GlobalComponents + const {UserAppPermission} = GlobalComponents + const {UserAppProfile} = GlobalComponents const routers=[ {path:"/userApp/:id/dashboard", component: UserAppDashboard}, - {path:"/userApp/:id/preference", component: UserAppPreference}, + {path:"/userApp/:id/profile", component: UserAppProfile}, + {path:"/userApp/:id/permission", component: UserAppPermission}, diff --git a/bizui/src/bizcomponents/userapp/UserApp.associateform.js b/bizui/src/bizcomponents/userapp/UserApp.associateform.js index b0052ac9e..2b27fc60c 100644 --- a/bizui/src/bizcomponents/userapp/UserApp.associateform.js +++ b/bizui/src/bizcomponents/userapp/UserApp.associateform.js @@ -145,7 +145,7 @@ class UserAppAssociateForm extends Component { {getFieldDecorator('title', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -155,7 +155,7 @@ class UserAppAssociateForm extends Component { {getFieldDecorator('appIcon', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -165,7 +165,7 @@ class UserAppAssociateForm extends Component { {getFieldDecorator('permission', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -175,7 +175,7 @@ class UserAppAssociateForm extends Component { {getFieldDecorator('objectType', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -185,7 +185,7 @@ class UserAppAssociateForm extends Component { {getFieldDecorator('objectId', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -195,7 +195,7 @@ class UserAppAssociateForm extends Component { {getFieldDecorator('location', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/userapp/UserApp.associateform.less b/bizui/src/bizcomponents/userapp/UserApp.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/userapp/UserApp.associateform.less +++ b/bizui/src/bizcomponents/userapp/UserApp.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/userapp/UserApp.base.js b/bizui/src/bizcomponents/userapp/UserApp.base.js index ff95c313c..3aa4101f6 100644 --- a/bizui/src/bizcomponents/userapp/UserApp.base.js +++ b/bizui/src/bizcomponents/userapp/UserApp.base.js @@ -1,96 +1,42 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"用户应用程序", menuFor: "userApp", subItems: [ - {name: 'listAccessList', displayName:'访问列表', icon:'list',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'objectAccessList', displayName:'对象访问', icon:'accessible-icon',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'listAccessList', displayName:'访问列表', icon:'list',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'objectAccessList', displayName:'对象访问', icon:'accessible-icon',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) - -} - -const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'userApp') }, - { title: '头衔', debugtype: 'string', dataIndex: 'title', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: 'SEC的用户', dataIndex: 'secUser', render: (text, record) => renderReferenceCell(text, record)}, - { title: '应用程序图标', debugtype: 'string', dataIndex: 'appIcon', width: '13',render: (text, record)=>renderTextCell(text,record) }, - { title: '完全访问', dataIndex: 'fullAccess', render: (text, record) =>renderBooleanCell(text, record) }, - { title: '许可', debugtype: 'string', dataIndex: 'permission', width: '8',render: (text, record)=>renderTextCell(text,record) }, - { title: '对象类型', debugtype: 'string', dataIndex: 'objectType', width: '31',render: (text, record)=>renderTextCell(text,record) }, - { title: '对象ID', debugtype: 'string', dataIndex: 'objectId', width: '14',render: (text, record)=>renderTextCell(text,record) }, - { title: '位置', debugtype: 'string', dataIndex: 'location', width: '16',render: (text, record)=>renderTextCell(text,record) }, - -] - const fieldLabels = { id: '序号', title: '头衔', @@ -104,8 +50,51 @@ const fieldLabels = { } +const displayColumns = [ + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'userApp') , sorter: true }, + { title: fieldLabels.title, debugtype: 'string', dataIndex: 'title', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.secUser, dataIndex: 'secUser', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.appIcon, debugtype: 'string', dataIndex: 'appIcon', width: '13',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.fullAccess, dataIndex: 'fullAccess', render: (text, record) =>renderBooleanCell(text, record), sorter:true }, + { title: fieldLabels.permission, debugtype: 'string', dataIndex: 'permission', width: '8',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.objectType, debugtype: 'string', dataIndex: 'objectType', width: '31',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.objectId, debugtype: 'string', dataIndex: 'objectId', width: '14',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.location, debugtype: 'string', dataIndex: 'location', width: '16',render: (text, record)=>renderTextCell(text,record)}, + +] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({userApp,targetComponent})=>{ + + + + const {UserAppService} = GlobalComponents + // const userContext = null + return ( + +{userApp.id} +{userApp.title} +{userApp.secUser==null?appLocaleName(userContext,"NotAssigned"):`${userApp.secUser.displayName}(${userApp.secUser.id})`} + + showTransferModel(targetComponent,"SEC的用户","secUser",UserAppService.requestCandidateSecUser, + UserAppService.transferToAnotherSecUser,"anotherSecUserId",userApp.secUser?userApp.secUser.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{userApp.appIcon} +{userApp.permission} +{userApp.objectType} +{userApp.objectId} +{userApp.location} + + {buildTransferModal(userApp,targetComponent)} + + ) + +} + + + -const UserAppBase={menuData,displayColumns,fieldLabels} +const UserAppBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default UserAppBase diff --git a/bizui/src/bizcomponents/userapp/UserApp.createform.js b/bizui/src/bizcomponents/userapp/UserApp.createform.js index 3b51e50dc..158785e79 100644 --- a/bizui/src/bizcomponents/userapp/UserApp.createform.js +++ b/bizui/src/bizcomponents/userapp/UserApp.createform.js @@ -212,7 +212,7 @@ class UserAppCreateForm extends Component { {getFieldDecorator('title', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -222,7 +222,7 @@ class UserAppCreateForm extends Component { {getFieldDecorator('appIcon', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -232,7 +232,7 @@ class UserAppCreateForm extends Component { {getFieldDecorator('permission', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -242,7 +242,7 @@ class UserAppCreateForm extends Component { {getFieldDecorator('objectType', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -252,7 +252,7 @@ class UserAppCreateForm extends Component { {getFieldDecorator('objectId', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -262,7 +262,7 @@ class UserAppCreateForm extends Component { {getFieldDecorator('location', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/userapp/UserApp.dashboard.js b/bizui/src/bizcomponents/userapp/UserApp.dashboard.js index 6fad8ed03..67adb5dd4 100644 --- a/bizui/src/bizcomponents/userapp/UserApp.dashboard.js +++ b/bizui/src/bizcomponents/userapp/UserApp.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -149,6 +149,7 @@ class UserAppDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -157,13 +158,17 @@ class UserAppDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/userapp/UserApp.model.js b/bizui/src/bizcomponents/userapp/UserApp.model.js index 243a8556a..e47d98b06 100644 --- a/bizui/src/bizcomponents/userapp/UserApp.model.js +++ b/bizui/src/bizcomponents/userapp/UserApp.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/userApp/${id}/list/\ListAccessList/访问列表+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/userApp/${id}/list/ListAccessList/访问列表+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateListAccess({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/userApp/${id}/list/\ListAccessList/访问列表列表`, state: newPlayload } + const location = { pathname: `/userApp/${id}/list/ListAccessList/访问列表列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextListAccessUpdateRow({ payload }, { call, put }) { @@ -206,7 +206,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/userApp/${id}/list/\ObjectAccessList/对象访问+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/userApp/${id}/list/ObjectAccessList/对象访问+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateObjectAccess({ payload }, { call, put }) { @@ -228,7 +228,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/userApp/${id}/list/\ObjectAccessList/对象访问列表`, state: newPlayload } + const location = { pathname: `/userApp/${id}/list/ObjectAccessList/对象访问列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextObjectAccessUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/userapp/UserApp.permission.js b/bizui/src/bizcomponents/userapp/UserApp.permission.js new file mode 100644 index 000000000..7feadedd2 --- /dev/null +++ b/bizui/src/bizcomponents/userapp/UserApp.permission.js @@ -0,0 +1,89 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './UserApp.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (userApp,targetComponent) =>{ + const userContext = null + return ( + +{userApp.id} +{userApp.title} +{userApp.appIcon} +{userApp.permission} +{userApp.objectType} +{userApp.objectId} +{userApp.location} + + + ) +} + + +const renderPermissionSetting = userApp => { + const {UserAppBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class UserAppPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const userApp = this.props.userApp; + const { id,displayName, listAccessCount, objectAccessCount } = userApp + const cardsData = {cardsName:"用户应用程序",cardsFor: "userApp",cardsSource: userApp, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + userApp: state._userApp, +}))(Form.create()(UserAppPermission)) + diff --git a/bizui/src/bizcomponents/userapp/UserApp.permission.less b/bizui/src/bizcomponents/userapp/UserApp.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/userapp/UserApp.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/userapp/UserApp.preference.js b/bizui/src/bizcomponents/userapp/UserApp.preference.js index 3a767a84f..0dd5ac3e4 100644 --- a/bizui/src/bizcomponents/userapp/UserApp.preference.js +++ b/bizui/src/bizcomponents/userapp/UserApp.preference.js @@ -311,8 +311,12 @@ class UserAppPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, listAccessCount, objectAccessCount } = this.props.userApp - const cardsData = {cardsName:"用户应用程序",cardsFor: "userApp",cardsSource: this.props.userApp, + const userApp = this.props.userApp; + const { id,displayName, listAccessCount, objectAccessCount } = userApp + + + + const cardsData = {cardsName:"用户应用程序",cardsFor: "userApp",cardsSource: userApp, subItems: [ ], diff --git a/bizui/src/bizcomponents/userapp/UserApp.profile.js b/bizui/src/bizcomponents/userapp/UserApp.profile.js new file mode 100644 index 000000000..873273244 --- /dev/null +++ b/bizui/src/bizcomponents/userapp/UserApp.profile.js @@ -0,0 +1,96 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './UserApp.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (userApp,targetComponent) =>{ + const userContext = null + return ( + +{userApp.id} +{userApp.title} +{userApp.appIcon} +{userApp.permission} +{userApp.objectType} +{userApp.objectId} +{userApp.location} + + + ) +} + + + +class UserAppProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const userApp = this.props.userApp; + const { id,displayName, listAccessCount, objectAccessCount } = userApp + + const cardsData = {cardsName:"用户应用程序",cardsFor: "userApp",cardsSource: userApp, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + userApp: state._userApp, +}))(Form.create()(UserAppProfile)) + diff --git a/bizui/src/bizcomponents/userapp/UserApp.profile.less b/bizui/src/bizcomponents/userapp/UserApp.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/userapp/UserApp.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/userapp/UserApp.search.js b/bizui/src/bizcomponents/userapp/UserApp.search.js index f91c6179a..a421c9ef6 100644 --- a/bizui/src/bizcomponents/userapp/UserApp.search.js +++ b/bizui/src/bizcomponents/userapp/UserApp.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/userapp/UserApp.searchform.js b/bizui/src/bizcomponents/userapp/UserApp.searchform.js index 804fa40a4..a1bad733a 100644 --- a/bizui/src/bizcomponents/userapp/UserApp.searchform.js +++ b/bizui/src/bizcomponents/userapp/UserApp.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`userAppList.searchField`] = fieldName - value[`userAppList.searchVerb`] = searchVerb - value[`userAppList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,16 +127,17 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'title')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'secUser')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'appIcon')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'permission')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'objectType')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'objectId')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'location')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'title')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'secUser')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'appIcon')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'permission')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'objectType')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'objectId')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'location')) console.log("the final parameter", paramList) @@ -152,11 +153,12 @@ componentDidMount() { } - params['userAppList'] = 1 - params['userAppList.orderBy.0'] = "id" - params['userAppList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -211,8 +213,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -322,8 +324,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/userapp/UserApp.table.js b/bizui/src/bizcomponents/userapp/UserApp.table.js index 413b8a1b7..134ca2da8 100644 --- a/bizui/src/bizcomponents/userapp/UserApp.table.js +++ b/bizui/src/bizcomponents/userapp/UserApp.table.js @@ -40,24 +40,53 @@ class UserAppTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = UserAppBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class UserAppTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class UserAppTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/userapp/UserApp.updateform.js b/bizui/src/bizcomponents/userapp/UserApp.updateform.js index 1fdd78837..0e364597a 100644 --- a/bizui/src/bizcomponents/userapp/UserApp.updateform.js +++ b/bizui/src/bizcomponents/userapp/UserApp.updateform.js @@ -261,7 +261,7 @@ class UserAppUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class UserAppUpdateForm extends Component { initialValue: selectedRow.title, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -285,7 +285,7 @@ class UserAppUpdateForm extends Component { initialValue: selectedRow.appIcon, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -297,7 +297,7 @@ class UserAppUpdateForm extends Component { initialValue: selectedRow.permission, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -309,7 +309,7 @@ class UserAppUpdateForm extends Component { initialValue: selectedRow.objectType, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -321,7 +321,7 @@ class UserAppUpdateForm extends Component { initialValue: selectedRow.objectId, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -333,7 +333,7 @@ class UserAppUpdateForm extends Component { initialValue: selectedRow.location, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/userdomain/UserDomain.app.js b/bizui/src/bizcomponents/userdomain/UserDomain.app.js index d605eab51..0d1fdf35f 100644 --- a/bizui/src/bizcomponents/userdomain/UserDomain.app.js +++ b/bizui/src/bizcomponents/userdomain/UserDomain.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class UserDomainBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -255,12 +264,14 @@ class UserDomainBizApp extends React.PureComponent { buildRouters = () =>{ const {UserDomainDashboard} = GlobalComponents - const {UserDomainPreference} = GlobalComponents + const {UserDomainPermission} = GlobalComponents + const {UserDomainProfile} = GlobalComponents const routers=[ {path:"/userDomain/:id/dashboard", component: UserDomainDashboard}, - {path:"/userDomain/:id/preference", component: UserDomainPreference}, + {path:"/userDomain/:id/profile", component: UserDomainProfile}, + {path:"/userDomain/:id/permission", component: UserDomainPermission}, diff --git a/bizui/src/bizcomponents/userdomain/UserDomain.associateform.js b/bizui/src/bizcomponents/userdomain/UserDomain.associateform.js index 5f5eec3c1..b43a33a87 100644 --- a/bizui/src/bizcomponents/userdomain/UserDomain.associateform.js +++ b/bizui/src/bizcomponents/userdomain/UserDomain.associateform.js @@ -139,7 +139,7 @@ class UserDomainAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/userdomain/UserDomain.associateform.less b/bizui/src/bizcomponents/userdomain/UserDomain.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/userdomain/UserDomain.associateform.less +++ b/bizui/src/bizcomponents/userdomain/UserDomain.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/userdomain/UserDomain.base.js b/bizui/src/bizcomponents/userdomain/UserDomain.base.js index 94a28cae3..db8a28605 100644 --- a/bizui/src/bizcomponents/userdomain/UserDomain.base.js +++ b/bizui/src/bizcomponents/userdomain/UserDomain.base.js @@ -1,96 +1,74 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"用户域", menuFor: "userDomain", subItems: [ - {name: 'secUserList', displayName:'SEC的用户', icon:'user',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'secUserList', displayName:'SEC的用户', icon:'user',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + name: '名称', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'userDomain') }, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '8',render: (text, record)=>renderTextCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'userDomain') , sorter: true }, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '8',render: (text, record)=>renderTextCell(text,record)}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({userDomain,targetComponent})=>{ -const fieldLabels = { - id: '序号', - name: '名称', + + + const {UserDomainService} = GlobalComponents + // const userContext = null + return ( + +{userDomain.id} +{userDomain.name} + + {buildTransferModal(userDomain,targetComponent)} + + ) } + + -const UserDomainBase={menuData,displayColumns,fieldLabels} +const UserDomainBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default UserDomainBase diff --git a/bizui/src/bizcomponents/userdomain/UserDomain.createform.js b/bizui/src/bizcomponents/userdomain/UserDomain.createform.js index 0bc1f4c96..8e91ba2a1 100644 --- a/bizui/src/bizcomponents/userdomain/UserDomain.createform.js +++ b/bizui/src/bizcomponents/userdomain/UserDomain.createform.js @@ -206,7 +206,7 @@ class UserDomainCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/userdomain/UserDomain.dashboard.js b/bizui/src/bizcomponents/userdomain/UserDomain.dashboard.js index 66ac4f036..e9565dd41 100644 --- a/bizui/src/bizcomponents/userdomain/UserDomain.dashboard.js +++ b/bizui/src/bizcomponents/userdomain/UserDomain.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -136,6 +136,7 @@ class UserDomainDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -144,13 +145,17 @@ class UserDomainDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/userdomain/UserDomain.model.js b/bizui/src/bizcomponents/userdomain/UserDomain.model.js index c4fc28a2d..3c0c418e2 100644 --- a/bizui/src/bizcomponents/userdomain/UserDomain.model.js +++ b/bizui/src/bizcomponents/userdomain/UserDomain.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/userDomain/${id}/list/\UserWhiteListList/用户白名单+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/userDomain/${id}/list/UserWhiteListList/用户白名单+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateUserWhiteList({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/userDomain/${id}/list/\UserWhiteListList/用户白名单列表`, state: newPlayload } + const location = { pathname: `/userDomain/${id}/list/UserWhiteListList/用户白名单列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextUserWhiteListUpdateRow({ payload }, { call, put }) { @@ -206,7 +206,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/userDomain/${id}/list/\SecUserList/SEC的用户+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/userDomain/${id}/list/SecUserList/SEC的用户+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateSecUser({ payload }, { call, put }) { @@ -228,7 +228,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/userDomain/${id}/list/\SecUserList/SEC的用户列表`, state: newPlayload } + const location = { pathname: `/userDomain/${id}/list/SecUserList/SEC的用户列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextSecUserUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/userdomain/UserDomain.permission.js b/bizui/src/bizcomponents/userdomain/UserDomain.permission.js new file mode 100644 index 000000000..e95e17159 --- /dev/null +++ b/bizui/src/bizcomponents/userdomain/UserDomain.permission.js @@ -0,0 +1,85 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './UserDomain.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (userDomain,targetComponent) =>{ + const userContext = null + return ( + +{userDomain.id} +{userDomain.name} + + + ) +} + + +const renderPermissionSetting = userDomain => { + const {UserDomainBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class UserDomainPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const userDomain = this.props.userDomain; + const { id,displayName, userWhiteListCount, secUserCount } = userDomain + const cardsData = {cardsName:"用户域",cardsFor: "userDomain",cardsSource: userDomain, + subItems: [ +{name: 'userWhiteListList', displayName:'用户白名单',type:'userWhiteList',count:userWhiteListCount,addFunction: true, role: 'userWhiteList', data: userDomain.userWhiteListList}, + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + userDomain: state._userDomain, +}))(Form.create()(UserDomainPermission)) + diff --git a/bizui/src/bizcomponents/userdomain/UserDomain.permission.less b/bizui/src/bizcomponents/userdomain/UserDomain.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/userdomain/UserDomain.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/userdomain/UserDomain.preference.js b/bizui/src/bizcomponents/userdomain/UserDomain.preference.js index 82600a4e5..f55efce2f 100644 --- a/bizui/src/bizcomponents/userdomain/UserDomain.preference.js +++ b/bizui/src/bizcomponents/userdomain/UserDomain.preference.js @@ -299,10 +299,14 @@ class UserDomainPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, userWhiteListCount, secUserCount } = this.props.userDomain - const cardsData = {cardsName:"用户域",cardsFor: "userDomain",cardsSource: this.props.userDomain, + const userDomain = this.props.userDomain; + const { id,displayName, userWhiteListCount, secUserCount } = userDomain + + + + const cardsData = {cardsName:"用户域",cardsFor: "userDomain",cardsSource: userDomain, subItems: [ -{name: 'userWhiteListList', displayName:'用户白名单',type:'userWhiteList',count:userWhiteListCount,addFunction: true, role: 'userWhiteList'}, +{name: 'userWhiteListList', displayName:'用户白名单',type:'userWhiteList',count:userWhiteListCount,addFunction: true, role: 'userWhiteList', data: userDomain.userWhiteListList}, ], }; diff --git a/bizui/src/bizcomponents/userdomain/UserDomain.profile.js b/bizui/src/bizcomponents/userdomain/UserDomain.profile.js new file mode 100644 index 000000000..3671b36f3 --- /dev/null +++ b/bizui/src/bizcomponents/userdomain/UserDomain.profile.js @@ -0,0 +1,92 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './UserDomain.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (userDomain,targetComponent) =>{ + const userContext = null + return ( + +{userDomain.id} +{userDomain.name} + + + ) +} + + + +class UserDomainProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const userDomain = this.props.userDomain; + const { id,displayName, userWhiteListCount, secUserCount } = userDomain + + const cardsData = {cardsName:"用户域",cardsFor: "userDomain",cardsSource: userDomain, + subItems: [ +{name: 'userWhiteListList', displayName:'用户白名单',type:'userWhiteList',count:userWhiteListCount,addFunction: true, role: 'userWhiteList', data: userDomain.userWhiteListList}, + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + userDomain: state._userDomain, +}))(Form.create()(UserDomainProfile)) + diff --git a/bizui/src/bizcomponents/userdomain/UserDomain.profile.less b/bizui/src/bizcomponents/userdomain/UserDomain.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/userdomain/UserDomain.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/userdomain/UserDomain.search.js b/bizui/src/bizcomponents/userdomain/UserDomain.search.js index 71fb22a01..7c6e17737 100644 --- a/bizui/src/bizcomponents/userdomain/UserDomain.search.js +++ b/bizui/src/bizcomponents/userdomain/UserDomain.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/userdomain/UserDomain.searchform.js b/bizui/src/bizcomponents/userdomain/UserDomain.searchform.js index 7c84cfb80..72b6ad676 100644 --- a/bizui/src/bizcomponents/userdomain/UserDomain.searchform.js +++ b/bizui/src/bizcomponents/userdomain/UserDomain.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`userDomainList.searchField`] = fieldName - value[`userDomainList.searchVerb`] = searchVerb - value[`userDomainList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,10 +127,11 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) console.log("the final parameter", paramList) @@ -146,11 +147,12 @@ componentDidMount() { } - params['userDomainList'] = 1 - params['userDomainList.orderBy.0'] = "id" - params['userDomainList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -205,8 +207,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -261,8 +263,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/userdomain/UserDomain.table.js b/bizui/src/bizcomponents/userdomain/UserDomain.table.js index 464c0e54b..c2d1ce592 100644 --- a/bizui/src/bizcomponents/userdomain/UserDomain.table.js +++ b/bizui/src/bizcomponents/userdomain/UserDomain.table.js @@ -40,24 +40,53 @@ class UserDomainTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = UserDomainBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class UserDomainTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class UserDomainTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/userdomain/UserDomain.updateform.js b/bizui/src/bizcomponents/userdomain/UserDomain.updateform.js index c180c1e4b..832fb8006 100644 --- a/bizui/src/bizcomponents/userdomain/UserDomain.updateform.js +++ b/bizui/src/bizcomponents/userdomain/UserDomain.updateform.js @@ -261,7 +261,7 @@ class UserDomainUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class UserDomainUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/userwhitelist/UserWhiteList.app.js b/bizui/src/bizcomponents/userwhitelist/UserWhiteList.app.js index c4273b6c3..0e88ade8f 100644 --- a/bizui/src/bizcomponents/userwhitelist/UserWhiteList.app.js +++ b/bizui/src/bizcomponents/userwhitelist/UserWhiteList.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class UserWhiteListBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -157,12 +166,14 @@ class UserWhiteListBizApp extends React.PureComponent { buildRouters = () =>{ const {UserWhiteListDashboard} = GlobalComponents - const {UserWhiteListPreference} = GlobalComponents + const {UserWhiteListPermission} = GlobalComponents + const {UserWhiteListProfile} = GlobalComponents const routers=[ {path:"/userWhiteList/:id/dashboard", component: UserWhiteListDashboard}, - {path:"/userWhiteList/:id/preference", component: UserWhiteListPreference}, + {path:"/userWhiteList/:id/profile", component: UserWhiteListProfile}, + {path:"/userWhiteList/:id/permission", component: UserWhiteListPermission}, diff --git a/bizui/src/bizcomponents/userwhitelist/UserWhiteList.associateform.js b/bizui/src/bizcomponents/userwhitelist/UserWhiteList.associateform.js index 709d53f22..1d1af235c 100644 --- a/bizui/src/bizcomponents/userwhitelist/UserWhiteList.associateform.js +++ b/bizui/src/bizcomponents/userwhitelist/UserWhiteList.associateform.js @@ -139,7 +139,7 @@ class UserWhiteListAssociateForm extends Component { {getFieldDecorator('userIdentity', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -149,7 +149,7 @@ class UserWhiteListAssociateForm extends Component { {getFieldDecorator('userSpecialFunctions', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/userwhitelist/UserWhiteList.associateform.less b/bizui/src/bizcomponents/userwhitelist/UserWhiteList.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/userwhitelist/UserWhiteList.associateform.less +++ b/bizui/src/bizcomponents/userwhitelist/UserWhiteList.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/userwhitelist/UserWhiteList.base.js b/bizui/src/bizcomponents/userwhitelist/UserWhiteList.base.js index 0f9c59a51..a0bf9265b 100644 --- a/bizui/src/bizcomponents/userwhitelist/UserWhiteList.base.js +++ b/bizui/src/bizcomponents/userwhitelist/UserWhiteList.base.js @@ -1,10 +1,33 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"用户白名单", menuFor: "userWhiteList", subItems: [ @@ -12,88 +35,44 @@ const menuData = {menuName:"用户白名单", menuFor: "userWhiteList", ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + userIdentity: '用户身份', + userSpecialFunctions: '用户特殊功能', + domain: '域', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record) }, - { title: '用户身份', debugtype: 'string', dataIndex: 'userIdentity', width: '15',render: (text, record)=>renderTextCell(text,record) }, - { title: '用户特殊功能', debugtype: 'string', dataIndex: 'userSpecialFunctions', width: '27',render: (text, record)=>renderTextCell(text,record) }, - { title: '域', dataIndex: 'domain', render: (text, record) => renderReferenceCell(text, record)}, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.userIdentity, debugtype: 'string', dataIndex: 'userIdentity', width: '15',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.userSpecialFunctions, debugtype: 'string', dataIndex: 'userSpecialFunctions', width: '27',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.domain, dataIndex: 'domain', render: (text, record) => renderReferenceCell(text, record), sorter:true}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({userWhiteList,targetComponent})=>{ -const fieldLabels = { - id: '序号', - userIdentity: '用户身份', - userSpecialFunctions: '用户特殊功能', - domain: '域', + + + const {UserWhiteListService} = GlobalComponents + // const userContext = null + return ( + +{userWhiteList.id} +{userWhiteList.userIdentity} +{userWhiteList.userSpecialFunctions} + + {buildTransferModal(userWhiteList,targetComponent)} + + ) } + + -const UserWhiteListBase={menuData,displayColumns,fieldLabels} +const UserWhiteListBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default UserWhiteListBase diff --git a/bizui/src/bizcomponents/userwhitelist/UserWhiteList.createform.js b/bizui/src/bizcomponents/userwhitelist/UserWhiteList.createform.js index 2b7b2016c..92d951972 100644 --- a/bizui/src/bizcomponents/userwhitelist/UserWhiteList.createform.js +++ b/bizui/src/bizcomponents/userwhitelist/UserWhiteList.createform.js @@ -208,7 +208,7 @@ class UserWhiteListCreateForm extends Component { {getFieldDecorator('userIdentity', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -218,7 +218,7 @@ class UserWhiteListCreateForm extends Component { {getFieldDecorator('userSpecialFunctions', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/userwhitelist/UserWhiteList.dashboard.js b/bizui/src/bizcomponents/userwhitelist/UserWhiteList.dashboard.js index 205db54b4..6798c3e29 100644 --- a/bizui/src/bizcomponents/userwhitelist/UserWhiteList.dashboard.js +++ b/bizui/src/bizcomponents/userwhitelist/UserWhiteList.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -136,6 +136,7 @@ class UserWhiteListDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -144,13 +145,17 @@ class UserWhiteListDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/userwhitelist/UserWhiteList.model.js b/bizui/src/bizcomponents/userwhitelist/UserWhiteList.model.js index 3e23fe024..c119269f4 100644 --- a/bizui/src/bizcomponents/userwhitelist/UserWhiteList.model.js +++ b/bizui/src/bizcomponents/userwhitelist/UserWhiteList.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' diff --git a/bizui/src/bizcomponents/userwhitelist/UserWhiteList.permission.js b/bizui/src/bizcomponents/userwhitelist/UserWhiteList.permission.js new file mode 100644 index 000000000..c53c09db0 --- /dev/null +++ b/bizui/src/bizcomponents/userwhitelist/UserWhiteList.permission.js @@ -0,0 +1,85 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './UserWhiteList.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (userWhiteList,targetComponent) =>{ + const userContext = null + return ( + +{userWhiteList.id} +{userWhiteList.userIdentity} +{userWhiteList.userSpecialFunctions} + + + ) +} + + +const renderPermissionSetting = userWhiteList => { + const {UserWhiteListBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class UserWhiteListPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const userWhiteList = this.props.userWhiteList; + const { id,displayName, } = userWhiteList + const cardsData = {cardsName:"用户白名单",cardsFor: "userWhiteList",cardsSource: userWhiteList, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + userWhiteList: state._userWhiteList, +}))(Form.create()(UserWhiteListPermission)) + diff --git a/bizui/src/bizcomponents/userwhitelist/UserWhiteList.permission.less b/bizui/src/bizcomponents/userwhitelist/UserWhiteList.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/userwhitelist/UserWhiteList.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/userwhitelist/UserWhiteList.preference.js b/bizui/src/bizcomponents/userwhitelist/UserWhiteList.preference.js index 12d58deb4..34a06ca5c 100644 --- a/bizui/src/bizcomponents/userwhitelist/UserWhiteList.preference.js +++ b/bizui/src/bizcomponents/userwhitelist/UserWhiteList.preference.js @@ -300,8 +300,12 @@ class UserWhiteListPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, } = this.props.userWhiteList - const cardsData = {cardsName:"用户白名单",cardsFor: "userWhiteList",cardsSource: this.props.userWhiteList, + const userWhiteList = this.props.userWhiteList; + const { id,displayName, } = userWhiteList + + + + const cardsData = {cardsName:"用户白名单",cardsFor: "userWhiteList",cardsSource: userWhiteList, subItems: [ ], diff --git a/bizui/src/bizcomponents/userwhitelist/UserWhiteList.profile.js b/bizui/src/bizcomponents/userwhitelist/UserWhiteList.profile.js new file mode 100644 index 000000000..cb48d15d5 --- /dev/null +++ b/bizui/src/bizcomponents/userwhitelist/UserWhiteList.profile.js @@ -0,0 +1,92 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './UserWhiteList.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (userWhiteList,targetComponent) =>{ + const userContext = null + return ( + +{userWhiteList.id} +{userWhiteList.userIdentity} +{userWhiteList.userSpecialFunctions} + + + ) +} + + + +class UserWhiteListProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const userWhiteList = this.props.userWhiteList; + const { id,displayName, } = userWhiteList + + const cardsData = {cardsName:"用户白名单",cardsFor: "userWhiteList",cardsSource: userWhiteList, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + userWhiteList: state._userWhiteList, +}))(Form.create()(UserWhiteListProfile)) + diff --git a/bizui/src/bizcomponents/userwhitelist/UserWhiteList.profile.less b/bizui/src/bizcomponents/userwhitelist/UserWhiteList.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/userwhitelist/UserWhiteList.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/userwhitelist/UserWhiteList.search.js b/bizui/src/bizcomponents/userwhitelist/UserWhiteList.search.js index 71793e261..215fbaad7 100644 --- a/bizui/src/bizcomponents/userwhitelist/UserWhiteList.search.js +++ b/bizui/src/bizcomponents/userwhitelist/UserWhiteList.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/userwhitelist/UserWhiteList.searchform.js b/bizui/src/bizcomponents/userwhitelist/UserWhiteList.searchform.js index 176769cd9..cb4605114 100644 --- a/bizui/src/bizcomponents/userwhitelist/UserWhiteList.searchform.js +++ b/bizui/src/bizcomponents/userwhitelist/UserWhiteList.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`userWhiteListList.searchField`] = fieldName - value[`userWhiteListList.searchVerb`] = searchVerb - value[`userWhiteListList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,12 +127,13 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'userIdentity')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'userSpecialFunctions')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'domain')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'userIdentity')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'userSpecialFunctions')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'domain')) console.log("the final parameter", paramList) @@ -148,11 +149,12 @@ componentDidMount() { } - params['userWhiteListList'] = 1 - params['userWhiteListList.orderBy.0'] = "id" - params['userWhiteListList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -207,8 +209,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -286,8 +288,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/userwhitelist/UserWhiteList.table.js b/bizui/src/bizcomponents/userwhitelist/UserWhiteList.table.js index 8b97c6b80..c314033ff 100644 --- a/bizui/src/bizcomponents/userwhitelist/UserWhiteList.table.js +++ b/bizui/src/bizcomponents/userwhitelist/UserWhiteList.table.js @@ -40,24 +40,53 @@ class UserWhiteListTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = UserWhiteListBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class UserWhiteListTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class UserWhiteListTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/userwhitelist/UserWhiteList.updateform.js b/bizui/src/bizcomponents/userwhitelist/UserWhiteList.updateform.js index 4540b930e..b87f70cab 100644 --- a/bizui/src/bizcomponents/userwhitelist/UserWhiteList.updateform.js +++ b/bizui/src/bizcomponents/userwhitelist/UserWhiteList.updateform.js @@ -261,7 +261,7 @@ class UserWhiteListUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -273,7 +273,7 @@ class UserWhiteListUpdateForm extends Component { initialValue: selectedRow.userIdentity, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -285,7 +285,7 @@ class UserWhiteListUpdateForm extends Component { initialValue: selectedRow.userSpecialFunctions, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/view/View.app.js b/bizui/src/bizcomponents/view/View.app.js index 5cadca59b..1b8faccc0 100644 --- a/bizui/src/bizcomponents/view/View.app.js +++ b/bizui/src/bizcomponents/view/View.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class ViewBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -157,12 +166,14 @@ class ViewBizApp extends React.PureComponent { buildRouters = () =>{ const {ViewDashboard} = GlobalComponents - const {ViewPreference} = GlobalComponents + const {ViewPermission} = GlobalComponents + const {ViewProfile} = GlobalComponents const routers=[ {path:"/view/:id/dashboard", component: ViewDashboard}, - {path:"/view/:id/preference", component: ViewPreference}, + {path:"/view/:id/profile", component: ViewProfile}, + {path:"/view/:id/permission", component: ViewPermission}, diff --git a/bizui/src/bizcomponents/view/View.associateform.js b/bizui/src/bizcomponents/view/View.associateform.js index 7a252760b..530ca6fbe 100644 --- a/bizui/src/bizcomponents/view/View.associateform.js +++ b/bizui/src/bizcomponents/view/View.associateform.js @@ -20,7 +20,7 @@ const testValues = {}; const testValues = { who: '面试官', assessment: '小伙子不错,值得培养', - interviewTime: '2016-03-28', + interviewTime: '2018-12-20', } */ @@ -139,7 +139,7 @@ class ViewAssociateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -149,7 +149,7 @@ class ViewAssociateForm extends Component { {getFieldDecorator('assessment', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -159,7 +159,7 @@ class ViewAssociateForm extends Component { {getFieldDecorator('interviewTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/view/View.associateform.less b/bizui/src/bizcomponents/view/View.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/view/View.associateform.less +++ b/bizui/src/bizcomponents/view/View.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/view/View.base.js b/bizui/src/bizcomponents/view/View.base.js index 5bd4f7044..3480c22fa 100644 --- a/bizui/src/bizcomponents/view/View.base.js +++ b/bizui/src/bizcomponents/view/View.base.js @@ -1,10 +1,33 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"观", menuFor: "view", subItems: [ @@ -12,88 +35,45 @@ const menuData = {menuName:"观", menuFor: "view", ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + who: '谁', + assessment: '评估', + interviewTime: '面试时间', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record) }, - { title: '谁', debugtype: 'string', dataIndex: 'who', width: '7',render: (text, record)=>renderTextCell(text,record) }, - { title: '评估', debugtype: 'string', dataIndex: 'assessment', width: '14',render: (text, record)=>renderTextCell(text,record) }, - { title: '面试时间', dataIndex: 'interviewTime', render: (text, record) =>renderDateCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.who, debugtype: 'string', dataIndex: 'who', width: '7',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.assessment, debugtype: 'string', dataIndex: 'assessment', width: '14',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.interviewTime, dataIndex: 'interviewTime', render: (text, record) =>renderDateCell(text,record), sorter: true }, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({view,targetComponent})=>{ -const fieldLabels = { - id: '序号', - who: '谁', - assessment: '评估', - interviewTime: '面试时间', + + + const {ViewService} = GlobalComponents + // const userContext = null + return ( + +{view.id} +{view.who} +{view.assessment} +{ moment(view.interviewTime).format('YYYY-MM-DD')} + + {buildTransferModal(view,targetComponent)} + + ) } + + -const ViewBase={menuData,displayColumns,fieldLabels} +const ViewBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default ViewBase diff --git a/bizui/src/bizcomponents/view/View.createform.js b/bizui/src/bizcomponents/view/View.createform.js index 37865398e..dd3c6901b 100644 --- a/bizui/src/bizcomponents/view/View.createform.js +++ b/bizui/src/bizcomponents/view/View.createform.js @@ -19,7 +19,7 @@ const testValues = {}; const testValues = { who: '面试官', assessment: '小伙子不错,值得培养', - interviewTime: '2017-08-01', + interviewTime: '2018-12-24', } */ @@ -208,7 +208,7 @@ class ViewCreateForm extends Component { {getFieldDecorator('who', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -218,7 +218,7 @@ class ViewCreateForm extends Component { {getFieldDecorator('assessment', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -228,7 +228,7 @@ class ViewCreateForm extends Component { {getFieldDecorator('interviewTime', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/view/View.dashboard.js b/bizui/src/bizcomponents/view/View.dashboard.js index cc2481fea..ba0a98536 100644 --- a/bizui/src/bizcomponents/view/View.dashboard.js +++ b/bizui/src/bizcomponents/view/View.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -137,6 +137,7 @@ class ViewDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -145,13 +146,17 @@ class ViewDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/view/View.model.js b/bizui/src/bizcomponents/view/View.model.js index eca450772..df0e535e5 100644 --- a/bizui/src/bizcomponents/view/View.model.js +++ b/bizui/src/bizcomponents/view/View.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' diff --git a/bizui/src/bizcomponents/view/View.permission.js b/bizui/src/bizcomponents/view/View.permission.js new file mode 100644 index 000000000..8c8243a55 --- /dev/null +++ b/bizui/src/bizcomponents/view/View.permission.js @@ -0,0 +1,86 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './View.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (view,targetComponent) =>{ + const userContext = null + return ( + +{view.id} +{view.who} +{view.assessment} +{ moment(view.interviewTime).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = view => { + const {ViewBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class ViewPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const view = this.props.view; + const { id,displayName, } = view + const cardsData = {cardsName:"观",cardsFor: "view",cardsSource: view, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + view: state._view, +}))(Form.create()(ViewPermission)) + diff --git a/bizui/src/bizcomponents/view/View.permission.less b/bizui/src/bizcomponents/view/View.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/view/View.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/view/View.preference.js b/bizui/src/bizcomponents/view/View.preference.js index b93b4f45d..32177fa0a 100644 --- a/bizui/src/bizcomponents/view/View.preference.js +++ b/bizui/src/bizcomponents/view/View.preference.js @@ -301,8 +301,12 @@ class ViewPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, } = this.props.view - const cardsData = {cardsName:"观",cardsFor: "view",cardsSource: this.props.view, + const view = this.props.view; + const { id,displayName, } = view + + + + const cardsData = {cardsName:"观",cardsFor: "view",cardsSource: view, subItems: [ ], diff --git a/bizui/src/bizcomponents/view/View.profile.js b/bizui/src/bizcomponents/view/View.profile.js new file mode 100644 index 000000000..99a55564a --- /dev/null +++ b/bizui/src/bizcomponents/view/View.profile.js @@ -0,0 +1,93 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './View.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (view,targetComponent) =>{ + const userContext = null + return ( + +{view.id} +{view.who} +{view.assessment} +{ moment(view.interviewTime).format('YYYY-MM-DD')} + + + ) +} + + + +class ViewProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const view = this.props.view; + const { id,displayName, } = view + + const cardsData = {cardsName:"观",cardsFor: "view",cardsSource: view, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + view: state._view, +}))(Form.create()(ViewProfile)) + diff --git a/bizui/src/bizcomponents/view/View.profile.less b/bizui/src/bizcomponents/view/View.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/view/View.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/view/View.search.js b/bizui/src/bizcomponents/view/View.search.js index a9c960ec3..57706574b 100644 --- a/bizui/src/bizcomponents/view/View.search.js +++ b/bizui/src/bizcomponents/view/View.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/view/View.searchform.js b/bizui/src/bizcomponents/view/View.searchform.js index ff7229b2b..bbb0ef76a 100644 --- a/bizui/src/bizcomponents/view/View.searchform.js +++ b/bizui/src/bizcomponents/view/View.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`viewList.searchField`] = fieldName - value[`viewList.searchVerb`] = searchVerb - value[`viewList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,11 +127,12 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'who')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'assessment')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'who')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'assessment')) console.log("the final parameter", paramList) @@ -147,11 +148,12 @@ componentDidMount() { } - params['viewList'] = 1 - params['viewList.orderBy.0'] = "id" - params['viewList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -206,8 +208,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -270,8 +272,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/view/View.table.js b/bizui/src/bizcomponents/view/View.table.js index 9773ab3b3..92c729848 100644 --- a/bizui/src/bizcomponents/view/View.table.js +++ b/bizui/src/bizcomponents/view/View.table.js @@ -40,24 +40,53 @@ class ViewTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = ViewBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class ViewTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class ViewTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/view/View.updateform.js b/bizui/src/bizcomponents/view/View.updateform.js index 83f47a28c..5d2391fb9 100644 --- a/bizui/src/bizcomponents/view/View.updateform.js +++ b/bizui/src/bizcomponents/view/View.updateform.js @@ -262,7 +262,7 @@ class ViewUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class ViewUpdateForm extends Component { initialValue: selectedRow.who, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class ViewUpdateForm extends Component { initialValue: selectedRow.assessment, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -298,7 +298,7 @@ class ViewUpdateForm extends Component { initialValue: selectedRow.interviewTime, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/warehouse/Warehouse.app.js b/bizui/src/bizcomponents/warehouse/Warehouse.app.js index 305bc325b..96e2123dc 100644 --- a/bizui/src/bizcomponents/warehouse/Warehouse.app.js +++ b/bizui/src/bizcomponents/warehouse/Warehouse.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class WarehouseBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -500,12 +509,14 @@ class WarehouseBizApp extends React.PureComponent { buildRouters = () =>{ const {WarehouseDashboard} = GlobalComponents - const {WarehousePreference} = GlobalComponents + const {WarehousePermission} = GlobalComponents + const {WarehouseProfile} = GlobalComponents const routers=[ {path:"/warehouse/:id/dashboard", component: WarehouseDashboard}, - {path:"/warehouse/:id/preference", component: WarehousePreference}, + {path:"/warehouse/:id/profile", component: WarehouseProfile}, + {path:"/warehouse/:id/permission", component: WarehousePermission}, diff --git a/bizui/src/bizcomponents/warehouse/Warehouse.associateform.js b/bizui/src/bizcomponents/warehouse/Warehouse.associateform.js index 633a1fbaa..0ef58c9a0 100644 --- a/bizui/src/bizcomponents/warehouse/Warehouse.associateform.js +++ b/bizui/src/bizcomponents/warehouse/Warehouse.associateform.js @@ -21,8 +21,8 @@ const testValues = { location: '成都龙泉驿飞鹤路20号', contactNumber: '02887654321', totalArea: '187672平方米', - latitude: '42.65592249725567', - longitude: '131.12883725223614', + latitude: '40.20817202569889', + longitude: '131.45832692684533', ownerId: 'RSCC000001', } */ @@ -149,7 +149,7 @@ class WarehouseAssociateForm extends Component { {getFieldDecorator('location', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -159,7 +159,7 @@ class WarehouseAssociateForm extends Component { {getFieldDecorator('contactNumber', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -169,7 +169,7 @@ class WarehouseAssociateForm extends Component { {getFieldDecorator('totalArea', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -179,7 +179,7 @@ class WarehouseAssociateForm extends Component { {getFieldDecorator('latitude', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -189,7 +189,7 @@ class WarehouseAssociateForm extends Component { {getFieldDecorator('longitude', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/warehouse/Warehouse.associateform.less b/bizui/src/bizcomponents/warehouse/Warehouse.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/warehouse/Warehouse.associateform.less +++ b/bizui/src/bizcomponents/warehouse/Warehouse.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/warehouse/Warehouse.base.js b/bizui/src/bizcomponents/warehouse/Warehouse.base.js index 74f643bc8..b943c6f97 100644 --- a/bizui/src/bizcomponents/warehouse/Warehouse.base.js +++ b/bizui/src/bizcomponents/warehouse/Warehouse.base.js @@ -1,100 +1,47 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"仓库", menuFor: "warehouse", subItems: [ - {name: 'storageSpaceList', displayName:'存货区', icon:'backspace',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'smartPalletList', displayName:'智能托盘', icon:'pallet',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'supplierSpaceList', displayName:'供应商的空间', icon:'backspace',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'receivingSpaceList', displayName:'收货区', icon:'backspace',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'shippingSpaceList', displayName:'发货区', icon:'backspace',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'damageSpaceList', displayName:'残次货物存放区', icon:'backspace',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, - {name: 'warehouseAssetList', displayName:'仓库资产', icon:'warehouse',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false}, + {name: 'storageSpaceList', displayName:'存货区', icon:'backspace',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'smartPalletList', displayName:'智能托盘', icon:'pallet',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'supplierSpaceList', displayName:'供应商的空间', icon:'backspace',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'receivingSpaceList', displayName:'收货区', icon:'backspace',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'shippingSpaceList', displayName:'发货区', icon:'backspace',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'damageSpaceList', displayName:'残次货物存放区', icon:'backspace',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, + {name: 'warehouseAssetList', displayName:'仓库资产', icon:'warehouse',readPermission: false,createPermission: false,deletePermission: false,updatePermission: false,executionPermission: false, viewGroup: '__no_group'}, ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) - -} - -const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'warehouse') }, - { title: '位置', debugtype: 'string', dataIndex: 'location', width: '15',render: (text, record)=>renderTextCell(text,record) }, - { title: '联系电话', debugtype: 'string', dataIndex: 'contactNumber', width: '15',render: (text, record)=>renderTextCell(text,record) }, - { title: '总面积', debugtype: 'string', dataIndex: 'totalArea', width: '13',render: (text, record)=>renderTextCell(text,record) }, - { title: '业主', dataIndex: 'owner', render: (text, record) => renderReferenceCell(text, record)}, - { title: '纬度', debugtype: 'double', dataIndex: 'latitude', width: '13',render: (text, record)=>renderTextCell(text,record) }, - { title: '经度', debugtype: 'double', dataIndex: 'longitude', width: '14',render: (text, record)=>renderTextCell(text,record) }, - { title: '最后更新时间', dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record) }, - -] - const fieldLabels = { id: '序号', location: '位置', @@ -107,8 +54,44 @@ const fieldLabels = { } +const displayColumns = [ + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20', render: (text, record)=>renderTextCell(text,record,'warehouse') , sorter: true }, + { title: fieldLabels.location, debugtype: 'string', dataIndex: 'location', width: '15',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.contactNumber, debugtype: 'string', dataIndex: 'contactNumber', width: '15',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.totalArea, debugtype: 'string', dataIndex: 'totalArea', width: '13',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.owner, dataIndex: 'owner', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.latitude, debugtype: 'double', dataIndex: 'latitude', width: '13',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.longitude, debugtype: 'double', dataIndex: 'longitude', width: '14',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.lastUpdateTime, dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record), sorter: true}, + +] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({warehouse,targetComponent})=>{ + + + + const {WarehouseService} = GlobalComponents + // const userContext = null + return ( + +{warehouse.id} +{warehouse.location} +{warehouse.contactNumber} +{warehouse.totalArea} +{warehouse.latitude} +{warehouse.longitude} +{ moment(warehouse.lastUpdateTime).format('YYYY-MM-DD')} + + {buildTransferModal(warehouse,targetComponent)} + + ) + +} + + + -const WarehouseBase={menuData,displayColumns,fieldLabels} +const WarehouseBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default WarehouseBase diff --git a/bizui/src/bizcomponents/warehouse/Warehouse.createform.js b/bizui/src/bizcomponents/warehouse/Warehouse.createform.js index ba61e1493..0ccceba6a 100644 --- a/bizui/src/bizcomponents/warehouse/Warehouse.createform.js +++ b/bizui/src/bizcomponents/warehouse/Warehouse.createform.js @@ -20,8 +20,8 @@ const testValues = { location: '成都龙泉驿飞鹤路20号', contactNumber: '02887654321', totalArea: '187672平方米', - latitude: '41.832356473732105', - longitude: '130.718847034261', + latitude: '41.17036458881215', + longitude: '129.49449691498248', ownerId: 'RSCC000001', } */ @@ -211,7 +211,7 @@ class WarehouseCreateForm extends Component { {getFieldDecorator('location', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -221,7 +221,7 @@ class WarehouseCreateForm extends Component { {getFieldDecorator('contactNumber', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -231,7 +231,7 @@ class WarehouseCreateForm extends Component { {getFieldDecorator('totalArea', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -241,7 +241,7 @@ class WarehouseCreateForm extends Component { {getFieldDecorator('latitude', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -251,7 +251,7 @@ class WarehouseCreateForm extends Component { {getFieldDecorator('longitude', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/warehouse/Warehouse.dashboard.js b/bizui/src/bizcomponents/warehouse/Warehouse.dashboard.js index c056679c7..414b61af1 100644 --- a/bizui/src/bizcomponents/warehouse/Warehouse.dashboard.js +++ b/bizui/src/bizcomponents/warehouse/Warehouse.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -147,6 +147,7 @@ class WarehouseDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -155,13 +156,17 @@ class WarehouseDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/warehouse/Warehouse.model.js b/bizui/src/bizcomponents/warehouse/Warehouse.model.js index b7d6bb50c..7167392a5 100644 --- a/bizui/src/bizcomponents/warehouse/Warehouse.model.js +++ b/bizui/src/bizcomponents/warehouse/Warehouse.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' @@ -137,7 +137,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/warehouse/${id}/list/\StorageSpaceList/存货区+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/warehouse/${id}/list/StorageSpaceList/存货区+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateStorageSpace({ payload }, { call, put }) { @@ -159,7 +159,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/warehouse/${id}/list/\StorageSpaceList/存货区列表`, state: newPlayload } + const location = { pathname: `/warehouse/${id}/list/StorageSpaceList/存货区列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextStorageSpaceUpdateRow({ payload }, { call, put }) { @@ -206,7 +206,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/warehouse/${id}/list/\SmartPalletList/智能托盘+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/warehouse/${id}/list/SmartPalletList/智能托盘+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateSmartPallet({ payload }, { call, put }) { @@ -228,7 +228,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/warehouse/${id}/list/\SmartPalletList/智能托盘列表`, state: newPlayload } + const location = { pathname: `/warehouse/${id}/list/SmartPalletList/智能托盘列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextSmartPalletUpdateRow({ payload }, { call, put }) { @@ -275,7 +275,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/warehouse/${id}/list/\SupplierSpaceList/供应商的空间+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/warehouse/${id}/list/SupplierSpaceList/供应商的空间+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateSupplierSpace({ payload }, { call, put }) { @@ -297,7 +297,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/warehouse/${id}/list/\SupplierSpaceList/供应商的空间列表`, state: newPlayload } + const location = { pathname: `/warehouse/${id}/list/SupplierSpaceList/供应商的空间列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextSupplierSpaceUpdateRow({ payload }, { call, put }) { @@ -344,7 +344,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/warehouse/${id}/list/\ReceivingSpaceList/收货区+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/warehouse/${id}/list/ReceivingSpaceList/收货区+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateReceivingSpace({ payload }, { call, put }) { @@ -366,7 +366,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/warehouse/${id}/list/\ReceivingSpaceList/收货区列表`, state: newPlayload } + const location = { pathname: `/warehouse/${id}/list/ReceivingSpaceList/收货区列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextReceivingSpaceUpdateRow({ payload }, { call, put }) { @@ -413,7 +413,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/warehouse/${id}/list/\ShippingSpaceList/发货区+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/warehouse/${id}/list/ShippingSpaceList/发货区+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateShippingSpace({ payload }, { call, put }) { @@ -435,7 +435,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/warehouse/${id}/list/\ShippingSpaceList/发货区列表`, state: newPlayload } + const location = { pathname: `/warehouse/${id}/list/ShippingSpaceList/发货区列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextShippingSpaceUpdateRow({ payload }, { call, put }) { @@ -482,7 +482,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/warehouse/${id}/list/\DamageSpaceList/残次货物存放区+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/warehouse/${id}/list/DamageSpaceList/残次货物存放区+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateDamageSpace({ payload }, { call, put }) { @@ -504,7 +504,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/warehouse/${id}/list/\DamageSpaceList/残次货物存放区列表`, state: newPlayload } + const location = { pathname: `/warehouse/${id}/list/DamageSpaceList/残次货物存放区列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextDamageSpaceUpdateRow({ payload }, { call, put }) { @@ -551,7 +551,7 @@ export default { } const partialList = true const newState = {...data, partialList} - const location = { pathname: `/warehouse/${id}/list/\WarehouseAssetList/仓库资产+${appLocaleName(userContext,'List')}`, state: newState } + const location = { pathname: `/warehouse/${id}/list/WarehouseAssetList/仓库资产+${appLocaleName(userContext,'List')}`, state: newState } yield put(routerRedux.push(location)) }, *updateWarehouseAsset({ payload }, { call, put }) { @@ -573,7 +573,7 @@ export default { if (continueNext) { return } - const location = { pathname: `/warehouse/${id}/list/\WarehouseAssetList/仓库资产列表`, state: newPlayload } + const location = { pathname: `/warehouse/${id}/list/WarehouseAssetList/仓库资产列表`, state: newPlayload } yield put(routerRedux.push(location)) }, *gotoNextWarehouseAssetUpdateRow({ payload }, { call, put }) { diff --git a/bizui/src/bizcomponents/warehouse/Warehouse.permission.js b/bizui/src/bizcomponents/warehouse/Warehouse.permission.js new file mode 100644 index 000000000..8c4cbaf70 --- /dev/null +++ b/bizui/src/bizcomponents/warehouse/Warehouse.permission.js @@ -0,0 +1,89 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './Warehouse.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (warehouse,targetComponent) =>{ + const userContext = null + return ( + +{warehouse.id} +{warehouse.location} +{warehouse.contactNumber} +{warehouse.totalArea} +{warehouse.latitude} +{warehouse.longitude} +{ moment(warehouse.lastUpdateTime).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = warehouse => { + const {WarehouseBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class WarehousePermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const warehouse = this.props.warehouse; + const { id,displayName, storageSpaceCount, smartPalletCount, supplierSpaceCount, receivingSpaceCount, shippingSpaceCount, damageSpaceCount, warehouseAssetCount } = warehouse + const cardsData = {cardsName:"仓库",cardsFor: "warehouse",cardsSource: warehouse, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + warehouse: state._warehouse, +}))(Form.create()(WarehousePermission)) + diff --git a/bizui/src/bizcomponents/warehouse/Warehouse.permission.less b/bizui/src/bizcomponents/warehouse/Warehouse.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/warehouse/Warehouse.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/warehouse/Warehouse.preference.js b/bizui/src/bizcomponents/warehouse/Warehouse.preference.js index 7f2234897..be56d097e 100644 --- a/bizui/src/bizcomponents/warehouse/Warehouse.preference.js +++ b/bizui/src/bizcomponents/warehouse/Warehouse.preference.js @@ -304,8 +304,12 @@ class WarehousePreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, storageSpaceCount, smartPalletCount, supplierSpaceCount, receivingSpaceCount, shippingSpaceCount, damageSpaceCount, warehouseAssetCount } = this.props.warehouse - const cardsData = {cardsName:"仓库",cardsFor: "warehouse",cardsSource: this.props.warehouse, + const warehouse = this.props.warehouse; + const { id,displayName, storageSpaceCount, smartPalletCount, supplierSpaceCount, receivingSpaceCount, shippingSpaceCount, damageSpaceCount, warehouseAssetCount } = warehouse + + + + const cardsData = {cardsName:"仓库",cardsFor: "warehouse",cardsSource: warehouse, subItems: [ ], diff --git a/bizui/src/bizcomponents/warehouse/Warehouse.profile.js b/bizui/src/bizcomponents/warehouse/Warehouse.profile.js new file mode 100644 index 000000000..84705f616 --- /dev/null +++ b/bizui/src/bizcomponents/warehouse/Warehouse.profile.js @@ -0,0 +1,96 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './Warehouse.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (warehouse,targetComponent) =>{ + const userContext = null + return ( + +{warehouse.id} +{warehouse.location} +{warehouse.contactNumber} +{warehouse.totalArea} +{warehouse.latitude} +{warehouse.longitude} +{ moment(warehouse.lastUpdateTime).format('YYYY-MM-DD')} + + + ) +} + + + +class WarehouseProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const warehouse = this.props.warehouse; + const { id,displayName, storageSpaceCount, smartPalletCount, supplierSpaceCount, receivingSpaceCount, shippingSpaceCount, damageSpaceCount, warehouseAssetCount } = warehouse + + const cardsData = {cardsName:"仓库",cardsFor: "warehouse",cardsSource: warehouse, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + warehouse: state._warehouse, +}))(Form.create()(WarehouseProfile)) + diff --git a/bizui/src/bizcomponents/warehouse/Warehouse.profile.less b/bizui/src/bizcomponents/warehouse/Warehouse.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/warehouse/Warehouse.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/warehouse/Warehouse.search.js b/bizui/src/bizcomponents/warehouse/Warehouse.search.js index 2b2f13e76..3dd352207 100644 --- a/bizui/src/bizcomponents/warehouse/Warehouse.search.js +++ b/bizui/src/bizcomponents/warehouse/Warehouse.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/warehouse/Warehouse.searchform.js b/bizui/src/bizcomponents/warehouse/Warehouse.searchform.js index 401f84c18..18621d05b 100644 --- a/bizui/src/bizcomponents/warehouse/Warehouse.searchform.js +++ b/bizui/src/bizcomponents/warehouse/Warehouse.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`warehouseList.searchField`] = fieldName - value[`warehouseList.searchVerb`] = searchVerb - value[`warehouseList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,13 +127,14 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'location')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'contactNumber')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'totalArea')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'owner')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'location')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'contactNumber')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'totalArea')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'owner')) console.log("the final parameter", paramList) @@ -149,11 +150,12 @@ componentDidMount() { } - params['warehouseList'] = 1 - params['warehouseList.orderBy.0'] = "id" - params['warehouseList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -208,8 +210,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -295,8 +297,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/warehouse/Warehouse.table.js b/bizui/src/bizcomponents/warehouse/Warehouse.table.js index bd068fc52..603acb8f4 100644 --- a/bizui/src/bizcomponents/warehouse/Warehouse.table.js +++ b/bizui/src/bizcomponents/warehouse/Warehouse.table.js @@ -40,24 +40,53 @@ class WarehouseTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = WarehouseBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class WarehouseTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class WarehouseTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/warehouse/Warehouse.updateform.js b/bizui/src/bizcomponents/warehouse/Warehouse.updateform.js index 97d145d77..8524da9e4 100644 --- a/bizui/src/bizcomponents/warehouse/Warehouse.updateform.js +++ b/bizui/src/bizcomponents/warehouse/Warehouse.updateform.js @@ -262,7 +262,7 @@ class WarehouseUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class WarehouseUpdateForm extends Component { initialValue: selectedRow.location, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class WarehouseUpdateForm extends Component { initialValue: selectedRow.contactNumber, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -298,7 +298,7 @@ class WarehouseUpdateForm extends Component { initialValue: selectedRow.totalArea, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -310,7 +310,7 @@ class WarehouseUpdateForm extends Component { initialValue: selectedRow.latitude, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -322,7 +322,7 @@ class WarehouseUpdateForm extends Component { initialValue: selectedRow.longitude, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.app.js b/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.app.js index e02d5fa45..f1852a1ea 100644 --- a/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.app.js +++ b/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.app.js @@ -32,23 +32,23 @@ import GlobalComponents from '../../custcomponents'; import PermissionSettingService from '../../permission/PermissionSetting.service' import appLocaleName from '../../common/Locale.tool' +import BizAppTool from '../../common/BizApp.tool' -const { filterForMenuPermission } = PermissionSettingService +const { Header, Sider, Content } = Layout +const { SubMenu } = Menu +const { + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, -const isMenuItemForDisplay = (item, targetObject, targetComponent) => { - return true -} +} = BizAppTool -const filteredMenuItems = (targetObject, targetComponent) => { - const menuData = sessionObject('menuData') - const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||isMenuItemForDisplay - return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) -} +const filteredNoGroupMenuItems = defaultFilteredNoGroupMenuItems +const filteredMenuItemsGroup = defaultFilteredMenuItemsGroup +const renderMenuItem=defaultRenderMenuItem -const { Header, Sider, Content } = Layout -const { SubMenu } = Menu const query = { 'screen-xs': { @@ -135,17 +135,26 @@ class WarehouseAssetBizApp extends React.PureComponent { {appLocaleName(userContext,"Dashboard")} - - {filteredMenuItems(targetObject,this).map((item)=>( - - {item.displayName} - - ))} - - - {appLocaleName(userContext,"Preference")} - + {filteredNoGroupMenuItems(targetObject,this).map((item)=>(renderMenuItem(item)))} + {filteredMenuItemsGroup(targetObject,this).map((groupedMenuItem,index)=>{ + return( + {`${groupedMenuItem.viewGroup}`}} > + {groupedMenuItem.subItems.map((item)=>(renderMenuItem(item)))} + + + )} + )} + + {appLocaleName(userContext,"Setting")}} > + + {appLocaleName(userContext,"Permission")} + + + {appLocaleName(userContext,"Profile")} + + + ) } @@ -157,12 +166,14 @@ class WarehouseAssetBizApp extends React.PureComponent { buildRouters = () =>{ const {WarehouseAssetDashboard} = GlobalComponents - const {WarehouseAssetPreference} = GlobalComponents + const {WarehouseAssetPermission} = GlobalComponents + const {WarehouseAssetProfile} = GlobalComponents const routers=[ {path:"/warehouseAsset/:id/dashboard", component: WarehouseAssetDashboard}, - {path:"/warehouseAsset/:id/preference", component: WarehouseAssetPreference}, + {path:"/warehouseAsset/:id/profile", component: WarehouseAssetProfile}, + {path:"/warehouseAsset/:id/permission", component: WarehouseAssetPermission}, diff --git a/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.associateform.js b/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.associateform.js index 2e3c1b8f8..ffd181b43 100644 --- a/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.associateform.js +++ b/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.associateform.js @@ -139,7 +139,7 @@ class WarehouseAssetAssociateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -149,7 +149,7 @@ class WarehouseAssetAssociateForm extends Component { {getFieldDecorator('position', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.associateform.less b/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.associateform.less index a62925926..be72b522d 100644 --- a/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.associateform.less +++ b/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.associateform.less @@ -4,90 +4,4 @@ margin-bottom: 24px; } -.heading { - font-size: 14px; - line-height: 22px; - margin: 0 0 16px 0; -} - -.steps { - max-width: 750px; - margin: 16px auto; -} - -.errorIcon { - cursor: pointer; - color: @error-color; - margin-right: 24px; - i { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - padding: 0; - max-height: 290px; - overflow: auto; - min-width: 256px; - } - } -} - -.errorListItem { - list-style: none; - border-bottom: 1px solid @border-color-split; - padding: 8px 16px; - cursor: pointer; - transition: all .3s; - &:hover { - background: @primary-1; - } - &:last-child { - border: 0; - } - .errorIcon { - color: @error-color; - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - } - .errorField { - font-size: 12px; - color: @text-color-secondary; - margin-top: 2px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} - -// custom footer for fixed footer toolbar -.advancedForm + div { - padding-bottom: 64px; -} - -.advancedForm { - :global { - .ant-form .ant-row:last-child .ant-form-item { - margin-bottom: 24px; - } - .ant-table td { - transition: none !important; - } - } -} - -.optional { - color: @text-color-secondary; - font-style: normal; -} - - diff --git a/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.base.js b/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.base.js index 337ab7e98..14e77e33e 100644 --- a/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.base.js +++ b/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.base.js @@ -1,10 +1,33 @@ - -import ImagePreview from '../../components/ImagePreview' +import React from 'react' +import { Icon } from 'antd' import { Link } from 'dva/router' import moment from 'moment' +import ImagePreview from '../../components/ImagePreview' import appLocaleName from '../../common/Locale.tool' +import BaseTool from '../../common/Base.tool' +import GlobalComponents from '../../custcomponents' +import DescriptionList from '../../components/DescriptionList' + +const { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, +} = BaseTool + +const renderTextCell=defaultRenderTextCell +const renderIdentifier=defaultRenderIdentifier +const renderDateCell=defaultRenderDateCell +const renderDateTimeCell=defaultRenderDateTimeCell +const renderImageCell=defaultRenderImageCell +const renderMoneyCell=defaultRenderMoneyCell +const renderBooleanCell=defaultRenderBooleanCell +const renderReferenceCell=defaultRenderReferenceCell -import { Icon } from 'antd'; const menuData = {menuName:"仓库资产", menuFor: "warehouseAsset", subItems: [ @@ -12,90 +35,53 @@ const menuData = {menuName:"仓库资产", menuFor: "warehouseAsset", ], } -const renderTextCell=(value, record)=>{ - const userContext = null - if(!value){ - return ''; - } - if(value==null){ - return ''; - } - if(value.length>15){ - return value.substring(0,15)+"...("+value.length+appLocaleName(userContext,"Chars")+")" - } - return value - -} - -const renderIdentifier=(value, record, targtObjectType)=>{ - - return ({value}) - -} - -const renderDateCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD'); -} -const renderDateTimeCell=(value, record)=>{ - return moment(value).format('YYYY-MM-DD HH:mm'); -} - -const renderImageCell=(value, record, title)=>{ - return () -} - - -const formatMoney=(amount)=>{ - const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} - const moneyFormat = new Intl.NumberFormat('en-US',options); - return moneyFormat.format(amount) - -} - -const renderMoneyCell=(value, record)=>{ - const userContext = null - if(!value){ - return appLocaleName(userContext,"Empty") - } - if(value == null){ - return appLocaleName(userContext,"Empty") - } - return (`${appLocaleName(userContext,"Currency")}${formatMoney(value)}`) -} - -const renderBooleanCell=(value, record)=>{ - const userContext = null - - return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) - -} - -const renderReferenceCell=(value, record)=>{ - const userContext = null - return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) +const fieldLabels = { + id: '序号', + name: '名称', + position: '位置', + owner: '业主', + lastUpdateTime: '最后更新时间', } const displayColumns = [ - { title: '序号', debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record) }, - { title: '名称', debugtype: 'string', dataIndex: 'name', width: '9',render: (text, record)=>renderTextCell(text,record) }, - { title: '位置', debugtype: 'string', dataIndex: 'position', width: '14',render: (text, record)=>renderTextCell(text,record) }, - { title: '业主', dataIndex: 'owner', render: (text, record) => renderReferenceCell(text, record)}, - { title: '最后更新时间', dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record) }, + { title: fieldLabels.id, debugtype: 'string', dataIndex: 'id', width: '20',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.name, debugtype: 'string', dataIndex: 'name', width: '9',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.position, debugtype: 'string', dataIndex: 'position', width: '14',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.owner, dataIndex: 'owner', render: (text, record) => renderReferenceCell(text, record), sorter:true}, + { title: fieldLabels.lastUpdateTime, dataIndex: 'lastUpdateTime', render: (text, record) =>renderDateTimeCell(text,record), sorter: true}, ] +// refernce to https://ant.design/components/list-cn/ +const renderItemOfList=({warehouseAsset,targetComponent})=>{ -const fieldLabels = { - id: '序号', - name: '名称', - position: '位置', - owner: '业主', - lastUpdateTime: '最后更新时间', + + + const {WarehouseAssetService} = GlobalComponents + // const userContext = null + return ( + +{warehouseAsset.id} +{warehouseAsset.name} +{warehouseAsset.position} +{warehouseAsset.owner==null?appLocaleName(userContext,"NotAssigned"):`${warehouseAsset.owner.displayName}(${warehouseAsset.owner.id})`} + + showTransferModel(targetComponent,"业主","warehouse",WarehouseAssetService.requestCandidateOwner, + WarehouseAssetService.transferToAnotherOwner,"anotherOwnerId",warehouseAsset.owner?warehouseAsset.owner.id:"")} + style={{fontSize: 20,color:"red"}} /> + +{ moment(warehouseAsset.lastUpdateTime).format('YYYY-MM-DD')} + + {buildTransferModal(warehouseAsset,targetComponent)} + + ) } + + -const WarehouseAssetBase={menuData,displayColumns,fieldLabels} +const WarehouseAssetBase={menuData,displayColumns,fieldLabels,renderItemOfList} export default WarehouseAssetBase diff --git a/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.createform.js b/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.createform.js index 0055dbbfc..7b6c07fd8 100644 --- a/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.createform.js +++ b/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.createform.js @@ -208,7 +208,7 @@ class WarehouseAssetCreateForm extends Component { {getFieldDecorator('name', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -218,7 +218,7 @@ class WarehouseAssetCreateForm extends Component { {getFieldDecorator('position', { rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.dashboard.js b/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.dashboard.js index 72d7d309e..442f42720 100644 --- a/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.dashboard.js +++ b/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.dashboard.js @@ -26,7 +26,7 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultImageListOf,defaultSettingListOf,defaultBuildTransferModal, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf,defaultRenderAnalytics, defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions }= DashboardTool @@ -143,6 +143,7 @@ class WarehouseAssetDashboard extends Component { const summaryOf = this.props.summaryOf || internalSummaryOf const renderTitle = this.props.renderTitle || internalRenderTitle const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter + const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions return ( @@ -151,13 +152,17 @@ class WarehouseAssetDashboard extends Component { content={summaryOf(cardsData.cardsSource,this)} wrapperClassName={styles.advancedForm} > - {quickFunctions(cardsData)} + {renderExtraHeader(cardsData.cardsSource)} + {quickFunctions(cardsData)} + {renderAnalytics(cardsData.cardsSource)} {settingListOf(cardsData.cardsSource)} {imageListOf(cardsData.cardsSource)} {largeTextOf(cardsData.cardsSource)} + {renderExtraFooter(cardsData.cardsSource)} + ) } } diff --git a/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.model.js b/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.model.js index 0a01c4361..741243164 100644 --- a/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.model.js +++ b/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.model.js @@ -1,5 +1,5 @@ - +import React from 'react' import pathToRegexp from 'path-to-regexp' import { routerRedux } from 'dva/router' import { notification } from 'antd' diff --git a/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.permission.js b/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.permission.js new file mode 100644 index 000000000..f3de1d6c4 --- /dev/null +++ b/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.permission.js @@ -0,0 +1,86 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' +import BooleanOption from 'components/BooleanOption'; +import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' +import { Link, Route, Redirect} from 'dva/router' +import numeral from 'numeral' + +import DashboardTool from '../../common/Dashboard.tool' +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './WarehouseAsset.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import GlobalComponents from '../../custcomponents'; +import PermissionSetting from '../../permission/PermissionSetting' +import appLocaleName from '../../common/Locale.tool' +const { Description } = DescriptionList; +const {defaultRenderExtraHeader}= DashboardTool + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +const internalSummaryOf = (warehouseAsset,targetComponent) =>{ + const userContext = null + return ( + +{warehouseAsset.id} +{warehouseAsset.name} +{warehouseAsset.position} +{ moment(warehouseAsset.lastUpdateTime).format('YYYY-MM-DD')} + + + ) +} + + +const renderPermissionSetting = warehouseAsset => { + const {WarehouseAssetBase} = GlobalComponents + return +} + +const internalRenderExtraHeader = defaultRenderExtraHeader + +class WarehouseAssetPermission extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const warehouseAsset = this.props.warehouseAsset; + const { id,displayName, } = warehouseAsset + const cardsData = {cardsName:"仓库资产",cardsFor: "warehouseAsset",cardsSource: warehouseAsset, + subItems: [ + + ], + }; + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {renderPermissionSetting(cardsData.cardsSource)} + + + ) + } +} + +export default connect(state => ({ + warehouseAsset: state._warehouseAsset, +}))(Form.create()(WarehouseAssetPermission)) + diff --git a/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.permission.less b/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.permission.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.permission.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.preference.js b/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.preference.js index e5e09dec1..ed9cf5be8 100644 --- a/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.preference.js +++ b/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.preference.js @@ -307,8 +307,12 @@ class WarehouseAssetPreference extends Component { render() { // eslint-disable-next-line max-len - const { id,displayName, } = this.props.warehouseAsset - const cardsData = {cardsName:"仓库资产",cardsFor: "warehouseAsset",cardsSource: this.props.warehouseAsset, + const warehouseAsset = this.props.warehouseAsset; + const { id,displayName, } = warehouseAsset + + + + const cardsData = {cardsName:"仓库资产",cardsFor: "warehouseAsset",cardsSource: warehouseAsset, subItems: [ ], diff --git a/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.profile.js b/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.profile.js new file mode 100644 index 000000000..9327e8341 --- /dev/null +++ b/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.profile.js @@ -0,0 +1,93 @@ + + +import React, { Component } from 'react' +import FontAwesome from 'react-fontawesome'; +import { connect } from 'dva' +import moment from 'moment' + +import {Form } from 'antd' +import { Link } from 'dva/router' + +import PageHeaderLayout from '../../layouts/PageHeaderLayout' +import styles from './WarehouseAsset.preference.less' +import DescriptionList from '../../components/DescriptionList'; + +import DashboardTool from '../../common/Dashboard.tool' +import appLocaleName from '../../common/Locale.tool' + +const { + defaultRenderExtraHeader, + defaultSubListsOf, + +}= DashboardTool + +const { Description } = DescriptionList; + +const internalRenderExtraHeader = defaultRenderExtraHeader + +const internalSubListsOf = defaultSubListsOf + + +const internalRenderTitle = (cardsData,targetComponent) =>{ + const linkComp=cardsData.returnURL? :null + return (
{linkComp}{cardsData.cardsName}: {cardsData.displayName}
) + +} + + +const internalSummaryOf = (warehouseAsset,targetComponent) =>{ + const userContext = null + return ( + +{warehouseAsset.id} +{warehouseAsset.name} +{warehouseAsset.position} +{ moment(warehouseAsset.lastUpdateTime).format('YYYY-MM-DD')} + + + ) +} + + + +class WarehouseAssetProfile extends Component { + + + componentDidMount() { + + } + + + render() { + // eslint-disable-next-line max-len + const warehouseAsset = this.props.warehouseAsset; + const { id,displayName, } = warehouseAsset + + const cardsData = {cardsName:"仓库资产",cardsFor: "warehouseAsset",cardsSource: warehouseAsset, + subItems: [ + + ], + }; + + const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader + const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + + return ( + + + {renderExtraHeader(cardsData.cardsSource)} + {subListsOf(cardsData)} + + ) + } +} + +export default connect(state => ({ + warehouseAsset: state._warehouseAsset, +}))(Form.create()(WarehouseAssetProfile)) + diff --git a/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.profile.less b/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.profile.less new file mode 100644 index 000000000..ae2c9b596 --- /dev/null +++ b/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.profile.less @@ -0,0 +1,3 @@ +@import "../../common/Preference.tool.less"; + + diff --git a/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.search.js b/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.search.js index 1b6516f0f..7cf6e5706 100644 --- a/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.search.js +++ b/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.search.js @@ -38,14 +38,16 @@ const showListActionBar = (targetComponent)=>{ const userContext = null return (
- - {hasCreatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} - - {hasUpdatePermission(metaInfo)&&} + {hasCreatePermission(metaInfo)&&} + + + {hasUpdatePermission(metaInfo)&&} + + {hasDeletePermission(metaInfo)&&} + + diff --git a/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.searchform.js b/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.searchform.js index 9a1ce7e7b..f3bb439d5 100644 --- a/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.searchform.js +++ b/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.searchform.js @@ -102,7 +102,7 @@ componentDidMount() { } } */ - buildStringSearchParameters = (formValues, searchVerb, fieldName) => { + buildStringSearchParameters = (listName, formValues, searchVerb, fieldName) => { const fieldValue = formValues[fieldName] if (!fieldValue) { return null @@ -111,9 +111,9 @@ componentDidMount() { //paramHolder.length const value = {} - value[`warehouseAssetList.searchField`] = fieldName - value[`warehouseAssetList.searchVerb`] = searchVerb - value[`warehouseAssetList.searchValue`] = fieldValue + value[`${listName}.searchField`] = fieldName + value[`${listName}.searchVerb`] = searchVerb + value[`${listName}.searchValue`] = fieldValue return value @@ -127,12 +127,13 @@ componentDidMount() { form.validateFields((err, fieldsValue) => { if (err) return const paramList = [] - + const { owner } = this.props + const {listName} = owner - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'id')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'name')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'contains', 'position')) - pushIfNotNull(paramList,this.buildStringSearchParameters(fieldsValue,'eq', 'owner')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'id')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'name')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'position')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'owner')) console.log("the final parameter", paramList) @@ -148,11 +149,12 @@ componentDidMount() { } - params['warehouseAssetList'] = 1 - params['warehouseAssetList.orderBy.0'] = "id" - params['warehouseAssetList.descOrAsc.0'] = "desc" - const { owner } = this.props + params[`${listName}`] = 1 + params[`${listName}.orderBy.0`] = "id" + params[`${listName}.descOrAsc.0`] = "desc" + + const expandForm = overrideValue([this.state.expandForm],false) dispatch({ type: `${owner.type}/load`, @@ -207,8 +209,8 @@ componentDidMount() { - - + + {appLocaleName(userContext,"Expand")} @@ -286,8 +288,8 @@ componentDidMount() {
- - + + {appLocaleName(userContext,"Collapse")}
diff --git a/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.table.js b/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.table.js index 919b8b143..6b5a7ae91 100644 --- a/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.table.js +++ b/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.table.js @@ -40,24 +40,53 @@ class WarehouseAssetTable extends PureComponent { cleanSelectedKeys = () => { this.handleRowSelectChange([], []) } - calcDisplayColumns=()=>{ - - const {owner, metaInfo} = this.props - const {referenceName} = owner - const userContext = null - + + enhanceColumnsWithSorter=()=>{ const {displayColumns} = WarehouseAssetBase + const {owner, searchParameters} = this.props + const {referenceName, listName} = owner if(!referenceName){ return displayColumns } - const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!=referenceName&&index<7&&item.dataIndex!=='content') - //fixed: 'right', + const remainColumns = displayColumns.filter((item,index)=> item.dataIndex!==referenceName&&index<7&&item.dataIndex!=='content') + + if(!searchParameters){ + return remainColumns + } + if(!searchParameters[listName]){ + return remainColumns + } + const sorter = {field: searchParameters[`${listName}.orderBy.0`], order:searchParameters[`${listName}.descOrAsc.0`]} + console.log("sorter in table", sorter) + const convertSorter=(targetSorter)=>{ + if(targetSorter.order==="desc"){ + return "descend" + } + return "ascend" + + } + const enhancedColumns = remainColumns.map(item=>{ + if(sorter.field===item.dataIndex){ + return {...item, sortOrder: convertSorter(sorter)} + } + return item + }) + return enhancedColumns + + } + + calcDisplayColumns=()=>{ + + const { metaInfo} = this.props + const userContext = null + const enhancedColumns = this.enhanceColumnsWithSorter() + const operationColumn={ title: appLocaleName(userContext,"Operate"), render: (text, record) => ( - { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} + { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} @@ -69,11 +98,11 @@ class WarehouseAssetTable extends PureComponent { ), } - remainColumns.push( + enhancedColumns.push( operationColumn ) - return remainColumns + return enhancedColumns } executeAction = (action, text, record) => { @@ -127,8 +156,6 @@ class WarehouseAssetTable extends PureComponent { const calcDisplayColumns = this.props.calcDisplayColumns||this.calcDisplayColumns const userContext = null const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, pageSize: 20, total: count, current, diff --git a/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.updateform.js b/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.updateform.js index 5daf2f41d..757674e58 100644 --- a/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.updateform.js +++ b/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.updateform.js @@ -262,7 +262,7 @@ class WarehouseAssetUpdateForm extends Component { initialValue: selectedRow.id, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -274,7 +274,7 @@ class WarehouseAssetUpdateForm extends Component { initialValue: selectedRow.name, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} @@ -286,7 +286,7 @@ class WarehouseAssetUpdateForm extends Component { initialValue: selectedRow.position, rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], })( - + )} diff --git a/bizui/src/common/Base.tool.js b/bizui/src/common/Base.tool.js new file mode 100644 index 000000000..8473ac332 --- /dev/null +++ b/bizui/src/common/Base.tool.js @@ -0,0 +1,89 @@ + +import React from 'react' +import { Link } from 'dva/router' +import moment from 'moment' +import ImagePreview from '../components/ImagePreview' +import appLocaleName from './Locale.tool' + +const defaultRenderTextCell=(value, record)=>{ + const userContext = null + if(!value){ + return ''; + } + if(value==null){ + return ''; + } + if(value.length>15){ + + return `${value.substring(0,15)}...(${value.length})${appLocaleName(userContext,"Chars")}` + + } + return value + +} + +const defaultRenderIdentifier=(value, record, targtObjectType)=>{ + + return ({value}) + +} + +const defaultRenderDateCell=(value, record)=>{ + return moment(value).format('YYYY-MM-DD'); +} +const defaultRenderDateTimeCell=(value, record)=>{ + return moment(value).format('YYYY-MM-DD HH:mm'); +} + +const defaultRenderImageCell=(value, record, title)=>{ + return () +} + + +const defaultFormatMoney=(amount)=>{ + const options={style: 'decimal',minimumFractionDigits: 2,maximumFractionDigits:2} + const moneyFormat = new Intl.NumberFormat('en-US',options); + return moneyFormat.format(amount) + +} + +const defaultRenderMoneyCell=(value, record)=>{ + const userContext = null + if(!value){ + return appLocaleName(userContext,"Empty") + } + if(value == null){ + return appLocaleName(userContext,"Empty") + } + return (`${appLocaleName(userContext,"Currency")}${defaultFormatMoney(value)}`) +} + +const defaultRenderBooleanCell=(value, record)=>{ + const userContext = null + + return (value? appLocaleName(userContext,"Yes") : appLocaleName(userContext,"No")) + +} + +const defaultRenderReferenceCell=(value, record)=>{ + const userContext = null + return (value ? {value.displayName} : appLocaleName(userContext,"NotAssigned")) + +} + + +const BaseTool = { + defaultRenderReferenceCell, + defaultRenderBooleanCell, + defaultRenderMoneyCell, + defaultFormatMoney, + defaultRenderDateTimeCell, + defaultRenderImageCell, + defaultRenderDateCell, + defaultRenderIdentifier, + defaultRenderTextCell, + + }; + + export default BaseTool; + \ No newline at end of file diff --git a/bizui/src/common/BizApp.tool.js b/bizui/src/common/BizApp.tool.js index e69de29bb..e4d7ecee8 100644 --- a/bizui/src/common/BizApp.tool.js +++ b/bizui/src/common/BizApp.tool.js @@ -0,0 +1,78 @@ + +import React from 'react' +import { Link } from 'dva/router' +import { + Menu, + Icon, + } from 'antd' +import PermissionSettingService from '../permission/PermissionSetting.service' +import appLocaleName from './Locale.tool' +import {sessionObject} from '../utils/utils' + + +const { filterForMenuPermission } = PermissionSettingService + + + +const defaultIsMenuItemForDisplay = (item, targetObject, targetComponent) => { + return true + } + + const defaultFilteredMenuItems = (targetObject, targetComponent) => { + const menuData = sessionObject('menuData') + const isMenuItemForDisplayFunc = targetComponent.props.isMenuItemForDisplayFunc||defaultIsMenuItemForDisplay + return menuData.subItems.filter(item=>filterForMenuPermission(item,targetObject,targetComponent)).filter(item=>isMenuItemForDisplayFunc(item,targetObject,targetComponent)) + } + const defaultFilteredNoGroupMenuItems = (targetObject, targetComponent) => { + return defaultFilteredMenuItems(targetObject, targetComponent).filter(item=>item.viewGroup==='__no_group') + } + + const defaultFilteredMenuItemsGroup = (targetObject, targetComponent) => { + const groupedMenuItems = [] + + defaultFilteredMenuItems(targetObject, targetComponent).filter(item=>item.viewGroup!=='__no_group').map(item=>{ + const {viewGroup} = item + + let result = groupedMenuItems.find(viewGroupItem=>(viewGroupItem.viewGroup===viewGroup)) + + if(!result){ + // group not found + result = {viewGroup, subItems: []} + groupedMenuItems.push(result) + } + + const {subItems} = result + subItems.push(item) + return item + + }) + + return groupedMenuItems + } + + const defaultRenderMenuItem=(item,targetObject,targetComponent)=>{ + + const menuData = sessionObject('menuData') + const targetApp = sessionObject('targetApp') + const {objectId}=targetApp; + const userContext = null + return ( + + {item.displayName} + + ) + + + } + + const BizAppTool = { + + defaultIsMenuItemForDisplay, + defaultFilteredMenuItems, + defaultFilteredNoGroupMenuItems, + defaultFilteredMenuItemsGroup, + defaultRenderMenuItem, + + } + + export default BizAppTool \ No newline at end of file diff --git a/bizui/src/common/BizApp.tool.less b/bizui/src/common/BizApp.tool.less index 5812e3892..fea3c5e22 100644 --- a/bizui/src/common/BizApp.tool.less +++ b/bizui/src/common/BizApp.tool.less @@ -50,17 +50,7 @@ } } -:global{ - .ant-menu-inline{ - line-height: 25px; - height: 30px; - - } - .ant-menu-inline > .ant-menu-item, .ant-menu-vertical > .ant-menu-submenu > .ant-menu-submenu-title, .ant-menu-vertical-left > .ant-menu-submenu > .ant-menu-submenu-title, .ant-menu-vertical-right > .ant-menu-submenu > .ant-menu-submenu-title, .ant-menu-inline > .ant-menu-submenu > .ant-menu-submenu-title { - line-height: 25px; - height: 30px; - } -} + :global(.ant-layout-sider-collapsed) .logo { padding-left: 24px; diff --git a/bizui/src/common/Dashboard.tool.js b/bizui/src/common/Dashboard.tool.js index e0a6f59b8..bb94c9eb7 100644 --- a/bizui/src/common/Dashboard.tool.js +++ b/bizui/src/common/Dashboard.tool.js @@ -41,6 +41,8 @@ import { TimelineChart, } from 'components/Charts'; +import { PREFIX } from '../axios/tools' + import echarts from 'echarts'; import Themes from './Dashboard.echartstheme'; import { isWeekend } from 'date-fns'; @@ -299,7 +301,7 @@ const aggregateDataset = mainObject => { const itemkey = calcKey(item); const existedValue = dataMap[itemkey]; const itemValue = {}; - const displayName = series.displayName; + const {displayName} = series itemValue[displayName] = item.count; dimensionSet.add(displayName); if (!existedValue) { @@ -542,11 +544,16 @@ const defaultBuildTransferModal = (mainObject, targetComponent) => { }; const defaultRenderExtraHeader = mainObject => { + +}; + + +const defaultRenderAnalytics= mainObject => { const data = aggregateDataset(mainObject); if (!data.dataArray) { return null; } - if (data.dataArray.length == 0) { + if (data.dataArray.length === 0) { return null; } return ( @@ -597,11 +604,26 @@ const defaultSubListsOf = cardsData => { const defaultQuickFunctions = cardsData => { - const userContext = null; - const { id } = cardsData.cardsSource; + + const { id, actionList } = cardsData.cardsSource; return ( - + { + actionList.filter(item => item.actionGroup==="custom") + .map(item=>( + + + + + + {item.actionName} + + + + )) + + + } {cardsData.subItems .filter(item => hasItemReadPermission(item)) @@ -654,6 +676,7 @@ const DashboardTool = { defaultHandleTransferSearch, defaultShowTransferModel, defaultRenderExtraHeader, + defaultRenderAnalytics, defaultSubListsOf, defaultRenderExtraFooter, renderForTimeLine, diff --git a/bizui/src/common/ListView.tool.js b/bizui/src/common/ListView.tool.js index 14b74e222..333612fde 100644 --- a/bizui/src/common/ListView.tool.js +++ b/bizui/src/common/ListView.tool.js @@ -140,7 +140,23 @@ const handleDeletionModalVisible = (event,targetComponent) => { ) } - + const convertToBackendSorter=({listName,sorter})=>{ + + const sortProperties = {} + + if(!sorter){ + return sortProperties + } + if(sorter.field){ + sortProperties[`${listName}.orderBy.0`]=sorter.field + sortProperties[`${listName}.descOrAsc.0`]=(sorter.order==="ascend"?"asc":"desc") + return sortProperties + } + delete sortProperties[`${listName}.orderBy.0`] + delete sortProperties[`${listName}..descOrAsc.0`] + + return sortProperties + } const handleStandardTableChange = (pagination, filtersArg, sorter,targetComponent) => { const { dispatch } = targetComponent.props const { formValues } = targetComponent.state @@ -152,40 +168,32 @@ const handleDeletionModalVisible = (event,targetComponent) => { }, {}) const { owner,searchParameters } = targetComponent.props const {listName} = owner; - let listParameters = {}; + const listParameters = {}; listParameters[listName]=1; listParameters[`${listName}CurrentPage`]=pagination.current; listParameters[`${listName}RowsPerPage`]=pagination.pageSize; - if(!searchParameters||!searchParameters[`${listName}.orderBy.0`]){ - listParameters[`${listName}.orderBy.0`]="id" - } - if(!searchParameters||!searchParameters[`${listName}.descOrAsc.0`]){ - listParameters[`${listName}.descOrAsc.0`]="desc" + const sortProperties = convertToBackendSorter({listName,sorter}) + const newSearchParameters = {...searchParameters,...listParameters,...sortProperties} + console.log("newSearchParameters",newSearchParameters) + if(!sorter.field){ + delete newSearchParameters[`${listName}.orderBy.0`] + delete newSearchParameters[`${listName}..descOrAsc.0`] } - - - - - - console.log("searchParameters",searchParameters) - const params = { - ...listParameters, ...searchParameters, + ...listParameters, + ...sortProperties, ...formValues, ...filters, } - if (sorter.field) { - params.sorter = '_' - } - - console.log("handleStandardTableChange", params) + + console.log("handleStandardTableChange", params,"sorter",sorter) dispatch({ type: `${owner.type}/load`, - payload: { id: owner.id, parameters: params,searchParameters }, + payload: { id: owner.id, parameters: params,searchParameters: newSearchParameters}, }) } diff --git a/bizui/src/common/Locale.tool.js b/bizui/src/common/Locale.tool.js index f2df6d0aa..ebcc0b56d 100644 --- a/bizui/src/common/Locale.tool.js +++ b/bizui/src/common/Locale.tool.js @@ -85,6 +85,12 @@ bizAppZhCN.ScanQRCodetoUploadfromSmartPhone = '扫描二维码可以从手机上 bizAppEnUS.ScanQRCodetoUploadfromSmartPhone = 'Scan QR Code to Upload from Smart Phone'; bizAppZhCN.Preference = '设置'; bizAppEnUS.Preference = 'Preference'; +bizAppZhCN.Setting = '设置'; +bizAppEnUS.Setting = 'Preference'; +bizAppZhCN.Profile = '基础数据'; +bizAppEnUS.Profile = 'Profile'; +bizAppZhCN.Permission = '权限配置'; +bizAppEnUS.Permission = 'Permission'; bizAppZhCN.Yes = '是'; bizAppEnUS.Yes = 'Yes'; bizAppZhCN.Submit = '提交'; diff --git a/bizui/src/components/ImagePreview/index.js b/bizui/src/components/ImagePreview/index.js index 5a94f2e81..4d6894bd1 100644 --- a/bizui/src/components/ImagePreview/index.js +++ b/bizui/src/components/ImagePreview/index.js @@ -1,6 +1,6 @@ import { Upload, Icon, Modal } from 'antd'; -//?x-oss-process=style/small + const resizeDispayImageInList=(imageLocation)=>resizeDispayImage(imageLocation,"small") @@ -16,9 +16,8 @@ const resizeDispayImage=(imageLocation, style)=>{ return imageLocation } if(imageLocation.indexOf("?")<0){ - return imageLocation+"?x-oss-process=style/"+style + return `${imageLocation}?x-oss-process=style/${style}` } - //there is a style return imageLocation.replace("small",style) } diff --git a/bizui/src/components/OSSPictureEdit/index.js b/bizui/src/components/OSSPictureEdit/index.js index 68aa037a3..07c81ffbd 100644 --- a/bizui/src/components/OSSPictureEdit/index.js +++ b/bizui/src/components/OSSPictureEdit/index.js @@ -135,7 +135,8 @@ export default class OSSPictureEdit extends React.Component { getURLPrefix() + 'secUserManager/testoss/' ); }; - axios.get(getSTSURL()).then(res => { + + axios.get(getSTSURL(),{headers:{"X-App-Version":35}}).then(res => { const token = res.data; this.setState({ token }); }); diff --git a/bizui/src/index.ejs b/bizui/src/index.ejs index 410058af5..d59f16077 100644 --- a/bizui/src/index.ejs +++ b/bizui/src/index.ejs @@ -5,7 +5,7 @@ - 双链小超全流程供应链系统@V190120T2329 + 双链小超全流程供应链系统@V190403T1129 diff --git a/bizui/src/launcher/HomeScreen.js b/bizui/src/launcher/HomeScreen.js index 550fde061..a39e1499a 100644 --- a/bizui/src/launcher/HomeScreen.js +++ b/bizui/src/launcher/HomeScreen.js @@ -55,23 +55,67 @@ class HomeScreen extends React.Component { //return '/login'; }; - render() { - if (!this.props.launcher) { - return; + showAppList = () =>{ + const styleList = 'icon-effect-1 icon-effect-1a icon-item' + + var effectClasses = classNames({ + styleList, + }); + + if(!this.props.launcher.data || !this.props.launcher.data.userAppList){ + return ( + + this.gotoApp(e, app)} + > + 登录成功,但是没有分配到任何App + + + ) } + const appList = this.props.launcher.data.userAppList; + + return( + {appList.map((app, i) => ( + this.gotoApp(e, app)} + > +
+ +

{app.title}

+
+ + ))} +
) + + + + } + + render() { + + const appList = this.props.launcher.data.userAppList; const calcLink = this.calcLink; const { systemName } = this.props.launcher; const userContext = this.props.launcher.data; - const styleList = 'icon-effect-1 icon-effect-1a icon-item'; - var effectClasses = classNames({ - styleList, - }); + // console.log(styleList); + + + return (
@@ -89,22 +133,10 @@ class HomeScreen extends React.Component { - - {appList.map((app, i) => ( - this.gotoApp(e, app)} - > -
- -

{app.title}

-
- - ))} -
+ + {this.showAppList()} + +
); } diff --git a/cleangit.sh b/cleangit.sh index 0344ef80e..136c57a1a 100644 --- a/cleangit.sh +++ b/cleangit.sh @@ -5,6 +5,8 @@ git commit -m"commit for removing extra files" git pull git push git filter-branch --force --index-filter 'git rm -r —cached --ignore-unmatch bizcore/WEB-INF/classes' --prune-empty --tag-name-filter cat -- --all +git filter-branch --force --index-filter 'git rm -r —cached --ignore-unmatch bizcore/WEB-INF/classes/META-INF/retailscm_mysql.sql' --prune-empty --tag-name-filter cat -- --all +git filter-branch --force --index-filter 'git rm -r —cached --ignore-unmatch bizcore/WEB-INF/retailscm_core_src/META-INF/retailscm_mysql.sql' --prune-empty --tag-name-filter cat -- --all git filter-branch --force --index-filter 'git rm -r —cached --ignore-unmatch bizcore/.gradle' --prune-empty --tag-name-filter cat -- --all git filter-branch --force --index-filter 'git rm -r —cached --ignore-unmatch bizcore/WEB-INF/caf_custom_src/META-INF/infra.properties' --prune-empty --tag-name-filter cat -- --all git filter-branch --force --index-filter 'git rm -r —cached --ignore-unmatch bizcore/WEB-INF/lib' --prune-empty --tag-name-filter cat -- --all diff --git a/frontend-sync-demo2.sh b/frontend-sync-demo2.sh new file mode 100644 index 000000000..f086dc583 --- /dev/null +++ b/frontend-sync-demo2.sh @@ -0,0 +1,7 @@ + +MODELNAME=retailscm +java -jar ~/githome/splitter.jar ${MODELNAME} +cd ~/githome/${MODELNAME}-biz-suite/bizui&& yarn install && yarn build && cd ../../ +cd ~/githome/${MODELNAME}-biz-suite/bizui && rsync -avz dist/* philip@demo2.doublechaintech.com:~/resin-3.1.12/webapps/ROOT/admin/${MODELNAME}/ + + diff --git a/frontend-sync.sh b/frontend-sync.sh index 1f526915c..62147a72b 100644 --- a/frontend-sync.sh +++ b/frontend-sync.sh @@ -2,6 +2,7 @@ MODELNAME=retailscm java -jar ~/githome/splitter.jar ${MODELNAME} cd ~/githome/${MODELNAME}-biz-suite/bizui&& yarn install && yarn build && cd ../../ -cd ~/githome/${MODELNAME}-biz-suite/bizui && rsync -avz dist/* philipz@philip.doublechaintech.cn:~/resin-3.1.12/webapps/ROOT/admin/${MODELNAME}/ +cd ~/githome/${MODELNAME}-biz-suite/bizui && rsync -avz dist/* philip@demo2.doublechaintech.com:~/resin-3.1.12/webapps/ROOT/admin/${MODELNAME}/ + diff --git a/gfrfrontend-sync.sh b/gfrfrontend-sync.sh new file mode 100644 index 000000000..d41bc0f4f --- /dev/null +++ b/gfrfrontend-sync.sh @@ -0,0 +1,7 @@ + +MODELNAME=retailscm +cd ~/githome/${MODELNAME}-biz-suite/bizui&& yarn install && yarn build && cd ../../ +cd ~/githome/${MODELNAME}-biz-suite/bizui && rsync -avz dist/* philip@demo2.doublechaintech.com:~/resin-3.1.12/webapps/ROOT/admin/${MODELNAME}gbase/ + + + diff --git a/java-sync.sh b/java-sync.sh index 236aa7c97..238bae51b 100644 --- a/java-sync.sh +++ b/java-sync.sh @@ -1,8 +1,8 @@ MODELNAME=retailscm java -jar ~/githome/splitter.jar ${MODELNAME} -cd ~/githome/${MODELNAME}-biz-suite/&& git pull --allow-unrelated-histories && cd ../ +# cd ~/githome/${MODELNAME}-biz-suite/&& git pull --allow-unrelated-histories && cd ../ cd ~/githome/${MODELNAME}-biz-suite/bizcore&& gradle classes && cd ../../ -cd ~/githome/${MODELNAME}-biz-suite/ && rsync -avz bizcore/* philipz@philip.doublechaintech.cn:~/resin-3.1.12/webapps/${MODELNAME}/ +cd ~/githome/${MODELNAME}-biz-suite/ && rsync -avz bizcore/* philip@demo2.doublechaintech.com:~/resin-3.1.12/webapps/${MODELNAME}/ diff --git a/ui-and-backend-sync.sh b/ui-and-backend-sync.sh index 95ba53546..d4c7d285b 100644 --- a/ui-and-backend-sync.sh +++ b/ui-and-backend-sync.sh @@ -2,9 +2,9 @@ MODELNAME=retailscm java -jar ~/githome/splitter.jar ${MODELNAME} # cd ~/githome/${MODELNAME}-biz-suite/&& git pull --allow-unrelated-histories && cd ../ -cd ~/githome/${MODELNAME}-biz-suite/bizcore&& gradle classes && cd ../../ -cd ~/githome/${MODELNAME}-biz-suite/ && rsync -avz bizcore/* philipz@philip.doublechaintech.cn:~/resin-3.1.12/webapps/${MODELNAME}/ -ssh philipz@philip.doublechaintech.cn "mysql -uroot -p0254891276 -h 127.0.0.1 < resin-3.1.12/webapps/${MODELNAME}/WEB-INF/${MODELNAME}_core_src/META-INF/${MODELNAME}_mysql.sql" +cd ~/githome/${MODELNAME}-biz-suite/bizcore&& ~/.sdkman/candidates/gradle/5.2.1/bin/gradle classes && cd ../../ +cd ~/githome/${MODELNAME}-biz-suite/ && rsync -avz bizcore/* philip@demo2.doublechaintech.com:~/resin-3.1.12/webapps/${MODELNAME}/ +ssh philip@demo2.doublechaintech.com "mysql -uroot -p0254891276 -h 127.0.0.1 < resin-3.1.12/webapps/${MODELNAME}/WEB-INF/${MODELNAME}_core_src/META-INF/${MODELNAME}_mysql.sql" cd ~/githome/${MODELNAME}-biz-suite/bizui&& yarn install && yarn build && cd ../../ -cd ~/githome/${MODELNAME}-biz-suite/bizui && rsync -avz dist/* philipz@philip.doublechaintech.cn:~/resin-3.1.12/webapps/ROOT/admin/${MODELNAME}/ +cd ~/githome/${MODELNAME}-biz-suite/bizui && rsync -avz dist/* philip@demo2.doublechaintech.com:~/resin-3.1.12/webapps/ROOT/admin/${MODELNAME}/ diff --git a/upgrade-ui-framework.sh b/upgrade-ui-framework.sh new file mode 100644 index 000000000..65173151e --- /dev/null +++ b/upgrade-ui-framework.sh @@ -0,0 +1,4 @@ +PROJ_DIR=`pwd` +cd ~/githome/skynet-react-framework/src/ && cp -Ra common launcher permission components ${PROJ_DIR}/bizui/src/ +cd ${PROJ_DIR} + From da857806164f64ae3fb0bdf54d69c62dad13ef50 Mon Sep 17 00:00:00 2001 From: philip Date: Wed, 3 Jul 2019 14:07:57 +0800 Subject: [PATCH 2/2] Update build.gralde - supporting springboot --- backend-sync.sh | 6 +- bizui/src/axios/config.js | 4 +- .../AccountingDocument.associateform.js | 6 +- .../AccountingDocument.base.js | 29 +- .../AccountingDocument.createform.js | 6 +- .../AccountingDocument.dashboard.js | 17 +- .../AccountingDocument.permission.js | 2 +- .../AccountingDocument.preference.js | 363 ---------------- .../AccountingDocument.preference.less | 3 - .../AccountingDocument.profile.js | 28 +- ...ccountingDocumentAuditing.associateform.js | 2 +- .../AccountingDocumentAuditing.base.js | 19 +- .../AccountingDocumentAuditing.createform.js | 2 +- .../AccountingDocumentAuditing.dashboard.js | 15 +- .../AccountingDocumentAuditing.permission.js | 2 +- .../AccountingDocumentAuditing.preference.js | 351 --------------- ...AccountingDocumentAuditing.preference.less | 3 - .../AccountingDocumentAuditing.profile.js | 28 +- ...ntingDocumentConfirmation.associateform.js | 2 +- .../AccountingDocumentConfirmation.base.js | 19 +- ...countingDocumentConfirmation.createform.js | 2 +- ...ccountingDocumentConfirmation.dashboard.js | 15 +- ...countingDocumentConfirmation.permission.js | 2 +- ...countingDocumentConfirmation.preference.js | 351 --------------- ...untingDocumentConfirmation.preference.less | 3 - .../AccountingDocumentConfirmation.profile.js | 28 +- ...ccountingDocumentCreation.associateform.js | 2 +- .../AccountingDocumentCreation.base.js | 19 +- .../AccountingDocumentCreation.createform.js | 2 +- .../AccountingDocumentCreation.dashboard.js | 15 +- .../AccountingDocumentCreation.permission.js | 2 +- .../AccountingDocumentCreation.preference.js | 351 --------------- ...AccountingDocumentCreation.preference.less | 3 - .../AccountingDocumentCreation.profile.js | 28 +- .../AccountingDocumentLine.associateform.js | 6 +- .../AccountingDocumentLine.base.js | 27 +- .../AccountingDocumentLine.createform.js | 6 +- .../AccountingDocumentLine.dashboard.js | 13 +- .../AccountingDocumentLine.permission.js | 2 +- .../AccountingDocumentLine.preference.js | 364 ---------------- .../AccountingDocumentLine.preference.less | 3 - .../AccountingDocumentLine.profile.js | 29 +- ...AccountingDocumentPosting.associateform.js | 2 +- .../AccountingDocumentPosting.base.js | 19 +- .../AccountingDocumentPosting.createform.js | 2 +- .../AccountingDocumentPosting.dashboard.js | 15 +- .../AccountingDocumentPosting.permission.js | 2 +- .../AccountingDocumentPosting.preference.js | 351 --------------- .../AccountingDocumentPosting.preference.less | 3 - .../AccountingDocumentPosting.profile.js | 28 +- .../AccountingDocumentType.associateform.js | 2 +- .../AccountingDocumentType.base.js | 23 +- .../AccountingDocumentType.createform.js | 2 +- .../AccountingDocumentType.dashboard.js | 15 +- .../AccountingDocumentType.permission.js | 2 +- .../AccountingDocumentType.preference.js | 356 --------------- .../AccountingDocumentType.preference.less | 3 - .../AccountingDocumentType.profile.js | 27 +- .../AccountingPeriod.associateform.js | 6 +- .../accountingperiod/AccountingPeriod.base.js | 23 +- .../AccountingPeriod.createform.js | 6 +- .../AccountingPeriod.dashboard.js | 15 +- .../AccountingPeriod.permission.js | 2 +- .../AccountingPeriod.preference.js | 357 --------------- .../AccountingPeriod.preference.less | 3 - .../AccountingPeriod.profile.js | 28 +- .../AccountingSubject.associateform.js | 2 +- .../AccountingSubject.base.js | 23 +- .../AccountingSubject.createform.js | 2 +- .../AccountingSubject.dashboard.js | 15 +- .../AccountingSubject.permission.js | 2 +- .../AccountingSubject.preference.js | 358 --------------- .../AccountingSubject.preference.less | 3 - .../AccountingSubject.profile.js | 29 +- .../accountset/AccountSet.associateform.js | 8 +- .../accountset/AccountSet.base.js | 27 +- .../accountset/AccountSet.createform.js | 8 +- .../accountset/AccountSet.dashboard.js | 19 +- .../accountset/AccountSet.permission.js | 2 +- .../accountset/AccountSet.preference.js | 369 ---------------- .../accountset/AccountSet.preference.less | 3 - .../accountset/AccountSet.profile.js | 34 +- .../catalog/Catalog.associateform.js | 2 +- .../src/bizcomponents/catalog/Catalog.base.js | 19 +- .../catalog/Catalog.createform.js | 2 +- .../catalog/Catalog.dashboard.js | 15 +- .../catalog/Catalog.permission.js | 2 +- .../catalog/Catalog.preference.js | 349 --------------- .../catalog/Catalog.preference.less | 3 - .../bizcomponents/catalog/Catalog.profile.js | 26 +- .../cityevent/CityEvent.associateform.js | 2 +- .../bizcomponents/cityevent/CityEvent.base.js | 23 +- .../cityevent/CityEvent.createform.js | 2 +- .../cityevent/CityEvent.dashboard.js | 15 +- .../cityevent/CityEvent.permission.js | 2 +- .../cityevent/CityEvent.preference.js | 358 --------------- .../cityevent/CityEvent.preference.less | 3 - .../cityevent/CityEvent.profile.js | 29 +- .../citypartner/CityPartner.associateform.js | 2 +- .../citypartner/CityPartner.base.js | 23 +- .../citypartner/CityPartner.createform.js | 2 +- .../citypartner/CityPartner.dashboard.js | 17 +- .../citypartner/CityPartner.permission.js | 2 +- .../citypartner/CityPartner.preference.js | 358 --------------- .../citypartner/CityPartner.preference.less | 3 - .../citypartner/CityPartner.profile.js | 29 +- .../CompanyTraining.associateform.js | 8 +- .../companytraining/CompanyTraining.base.js | 27 +- .../CompanyTraining.createform.js | 8 +- .../CompanyTraining.dashboard.js | 15 +- .../CompanyTraining.permission.js | 2 +- .../CompanyTraining.preference.js | 364 ---------------- .../CompanyTraining.preference.less | 3 - .../CompanyTraining.profile.js | 29 +- .../ConsumerOrder.associateform.js | 4 +- .../consumerorder/ConsumerOrder.base.js | 35 +- .../consumerorder/ConsumerOrder.createform.js | 4 +- .../consumerorder/ConsumerOrder.dashboard.js | 23 +- .../consumerorder/ConsumerOrder.permission.js | 2 +- .../consumerorder/ConsumerOrder.preference.js | 363 ---------------- .../ConsumerOrder.preference.less | 3 - .../consumerorder/ConsumerOrder.profile.js | 28 +- .../ConsumerOrderApproval.associateform.js | 2 +- .../ConsumerOrderApproval.base.js | 19 +- .../ConsumerOrderApproval.createform.js | 2 +- .../ConsumerOrderApproval.dashboard.js | 13 +- .../ConsumerOrderApproval.permission.js | 2 +- .../ConsumerOrderApproval.preference.js | 350 --------------- .../ConsumerOrderApproval.preference.less | 3 - .../ConsumerOrderApproval.profile.js | 27 +- ...ConsumerOrderConfirmation.associateform.js | 2 +- .../ConsumerOrderConfirmation.base.js | 19 +- .../ConsumerOrderConfirmation.createform.js | 2 +- .../ConsumerOrderConfirmation.dashboard.js | 13 +- .../ConsumerOrderConfirmation.permission.js | 2 +- .../ConsumerOrderConfirmation.preference.js | 350 --------------- .../ConsumerOrderConfirmation.preference.less | 3 - .../ConsumerOrderConfirmation.profile.js | 27 +- .../ConsumerOrderDelivery.associateform.js | 2 +- .../ConsumerOrderDelivery.base.js | 19 +- .../ConsumerOrderDelivery.createform.js | 2 +- .../ConsumerOrderDelivery.dashboard.js | 13 +- .../ConsumerOrderDelivery.permission.js | 2 +- .../ConsumerOrderDelivery.preference.js | 350 --------------- .../ConsumerOrderDelivery.preference.less | 3 - .../ConsumerOrderDelivery.profile.js | 27 +- .../ConsumerOrderLineItem.associateform.js | 8 +- .../ConsumerOrderLineItem.base.js | 23 +- .../ConsumerOrderLineItem.createform.js | 8 +- .../ConsumerOrderLineItem.dashboard.js | 13 +- .../ConsumerOrderLineItem.permission.js | 2 +- .../ConsumerOrderLineItem.preference.js | 360 ---------------- .../ConsumerOrderLineItem.preference.less | 3 - .../ConsumerOrderLineItem.profile.js | 31 +- ...ConsumerOrderPaymentGroup.associateform.js | 2 +- .../ConsumerOrderPaymentGroup.base.js | 23 +- .../ConsumerOrderPaymentGroup.createform.js | 2 +- .../ConsumerOrderPaymentGroup.dashboard.js | 13 +- .../ConsumerOrderPaymentGroup.permission.js | 2 +- .../ConsumerOrderPaymentGroup.preference.js | 356 --------------- .../ConsumerOrderPaymentGroup.preference.less | 3 - .../ConsumerOrderPaymentGroup.profile.js | 27 +- ...sumerOrderPriceAdjustment.associateform.js | 4 +- .../ConsumerOrderPriceAdjustment.base.js | 23 +- ...ConsumerOrderPriceAdjustment.createform.js | 4 +- .../ConsumerOrderPriceAdjustment.dashboard.js | 13 +- ...ConsumerOrderPriceAdjustment.permission.js | 2 +- ...ConsumerOrderPriceAdjustment.preference.js | 357 --------------- ...nsumerOrderPriceAdjustment.preference.less | 3 - .../ConsumerOrderPriceAdjustment.profile.js | 28 +- .../ConsumerOrderProcessing.associateform.js | 2 +- .../ConsumerOrderProcessing.base.js | 19 +- .../ConsumerOrderProcessing.createform.js | 2 +- .../ConsumerOrderProcessing.dashboard.js | 13 +- .../ConsumerOrderProcessing.permission.js | 2 +- .../ConsumerOrderProcessing.preference.js | 350 --------------- .../ConsumerOrderProcessing.preference.less | 3 - .../ConsumerOrderProcessing.profile.js | 27 +- .../ConsumerOrderShipment.associateform.js | 2 +- .../ConsumerOrderShipment.base.js | 19 +- .../ConsumerOrderShipment.createform.js | 2 +- .../ConsumerOrderShipment.dashboard.js | 13 +- .../ConsumerOrderShipment.permission.js | 2 +- .../ConsumerOrderShipment.preference.js | 350 --------------- .../ConsumerOrderShipment.preference.less | 3 - .../ConsumerOrderShipment.profile.js | 27 +- ...onsumerOrderShippingGroup.associateform.js | 4 +- .../ConsumerOrderShippingGroup.base.js | 23 +- .../ConsumerOrderShippingGroup.createform.js | 4 +- .../ConsumerOrderShippingGroup.dashboard.js | 13 +- .../ConsumerOrderShippingGroup.permission.js | 2 +- .../ConsumerOrderShippingGroup.preference.js | 356 --------------- ...ConsumerOrderShippingGroup.preference.less | 3 - .../ConsumerOrderShippingGroup.profile.js | 27 +- .../damagespace/DamageSpace.associateform.js | 6 +- .../damagespace/DamageSpace.base.js | 23 +- .../damagespace/DamageSpace.createform.js | 6 +- .../damagespace/DamageSpace.dashboard.js | 15 +- .../damagespace/DamageSpace.permission.js | 2 +- .../damagespace/DamageSpace.preference.js | 360 ---------------- .../damagespace/DamageSpace.preference.less | 3 - .../damagespace/DamageSpace.profile.js | 31 +- .../employee/Employee.associateform.js | 10 +- .../bizcomponents/employee/Employee.base.js | 55 +-- .../employee/Employee.createform.js | 10 +- .../employee/Employee.dashboard.js | 41 +- .../employee/Employee.permission.js | 2 +- .../employee/Employee.preference.js | 388 ----------------- .../employee/Employee.preference.less | 3 - .../employee/Employee.profile.js | 35 +- .../EmployeeAttendance.associateform.js | 8 +- .../EmployeeAttendance.base.js | 23 +- .../EmployeeAttendance.createform.js | 8 +- .../EmployeeAttendance.dashboard.js | 13 +- .../EmployeeAttendance.permission.js | 2 +- .../EmployeeAttendance.preference.js | 358 --------------- .../EmployeeAttendance.preference.less | 3 - .../EmployeeAttendance.profile.js | 29 +- .../EmployeeAward.associateform.js | 4 +- .../employeeaward/EmployeeAward.base.js | 23 +- .../employeeaward/EmployeeAward.createform.js | 4 +- .../employeeaward/EmployeeAward.dashboard.js | 13 +- .../employeeaward/EmployeeAward.permission.js | 2 +- .../employeeaward/EmployeeAward.preference.js | 357 --------------- .../EmployeeAward.preference.less | 3 - .../employeeaward/EmployeeAward.profile.js | 28 +- .../EmployeeBoarding.associateform.js | 2 +- .../employeeboarding/EmployeeBoarding.base.js | 19 +- .../EmployeeBoarding.createform.js | 2 +- .../EmployeeBoarding.dashboard.js | 15 +- .../EmployeeBoarding.permission.js | 2 +- .../EmployeeBoarding.preference.js | 351 --------------- .../EmployeeBoarding.preference.less | 3 - .../EmployeeBoarding.profile.js | 28 +- .../EmployeeCompanyTraining.associateform.js | 4 +- .../EmployeeCompanyTraining.base.js | 29 +- .../EmployeeCompanyTraining.createform.js | 4 +- .../EmployeeCompanyTraining.dashboard.js | 13 +- .../EmployeeCompanyTraining.permission.js | 2 +- .../EmployeeCompanyTraining.preference.js | 361 ---------------- .../EmployeeCompanyTraining.preference.less | 3 - .../EmployeeCompanyTraining.profile.js | 26 +- .../EmployeeEducation.associateform.js | 4 +- .../EmployeeEducation.base.js | 23 +- .../EmployeeEducation.createform.js | 4 +- .../EmployeeEducation.dashboard.js | 13 +- .../EmployeeEducation.permission.js | 2 +- .../EmployeeEducation.preference.js | 357 --------------- .../EmployeeEducation.preference.less | 3 - .../EmployeeEducation.profile.js | 28 +- .../EmployeeInterview.associateform.js | 4 +- .../EmployeeInterview.base.js | 27 +- .../EmployeeInterview.createform.js | 4 +- .../EmployeeInterview.dashboard.js | 13 +- .../EmployeeInterview.permission.js | 2 +- .../EmployeeInterview.preference.js | 361 ---------------- .../EmployeeInterview.preference.less | 3 - .../EmployeeInterview.profile.js | 26 +- .../EmployeeLeave.associateform.js | 6 +- .../employeeleave/EmployeeLeave.base.js | 27 +- .../employeeleave/EmployeeLeave.createform.js | 4 +- .../employeeleave/EmployeeLeave.dashboard.js | 13 +- .../employeeleave/EmployeeLeave.permission.js | 2 +- .../employeeleave/EmployeeLeave.preference.js | 362 ---------------- .../EmployeeLeave.preference.less | 3 - .../employeeleave/EmployeeLeave.profile.js | 27 +- .../EmployeePerformance.associateform.js | 2 +- .../EmployeePerformance.base.js | 23 +- .../EmployeePerformance.createform.js | 2 +- .../EmployeePerformance.dashboard.js | 13 +- .../EmployeePerformance.permission.js | 2 +- .../EmployeePerformance.preference.js | 355 --------------- .../EmployeePerformance.preference.less | 3 - .../EmployeePerformance.profile.js | 26 +- .../EmployeeQualifier.associateform.js | 4 +- .../EmployeeQualifier.base.js | 23 +- .../EmployeeQualifier.createform.js | 4 +- .../EmployeeQualifier.dashboard.js | 13 +- .../EmployeeQualifier.permission.js | 2 +- .../EmployeeQualifier.preference.js | 358 --------------- .../EmployeeQualifier.preference.less | 3 - .../EmployeeQualifier.profile.js | 29 +- .../EmployeeSalarySheet.associateform.js | 18 +- .../EmployeeSalarySheet.base.js | 35 +- .../EmployeeSalarySheet.createform.js | 18 +- .../EmployeeSalarySheet.dashboard.js | 17 +- .../EmployeeSalarySheet.permission.js | 2 +- .../EmployeeSalarySheet.preference.js | 374 ---------------- .../EmployeeSalarySheet.preference.less | 3 - .../EmployeeSalarySheet.profile.js | 33 +- .../EmployeeSkill.associateform.js | 4 +- .../employeeskill/EmployeeSkill.base.js | 27 +- .../employeeskill/EmployeeSkill.createform.js | 4 +- .../employeeskill/EmployeeSkill.dashboard.js | 13 +- .../employeeskill/EmployeeSkill.permission.js | 2 +- .../employeeskill/EmployeeSkill.preference.js | 361 ---------------- .../EmployeeSkill.preference.less | 3 - .../employeeskill/EmployeeSkill.profile.js | 26 +- .../EmployeeWorkExperience.associateform.js | 6 +- .../EmployeeWorkExperience.base.js | 23 +- .../EmployeeWorkExperience.createform.js | 6 +- .../EmployeeWorkExperience.dashboard.js | 13 +- .../EmployeeWorkExperience.permission.js | 2 +- .../EmployeeWorkExperience.preference.js | 358 --------------- .../EmployeeWorkExperience.preference.less | 3 - .../EmployeeWorkExperience.profile.js | 29 +- .../EventAttendance.associateform.js | 4 +- .../eventattendance/EventAttendance.base.js | 27 +- .../EventAttendance.createform.js | 4 +- .../EventAttendance.dashboard.js | 13 +- .../EventAttendance.permission.js | 2 +- .../EventAttendance.preference.js | 362 ---------------- .../EventAttendance.preference.less | 3 - .../EventAttendance.profile.js | 27 +- .../goods/Goods.associateform.js | 22 +- bizui/src/bizcomponents/goods/Goods.base.js | 57 +-- .../bizcomponents/goods/Goods.createform.js | 20 +- .../bizcomponents/goods/Goods.dashboard.js | 15 +- .../bizcomponents/goods/Goods.permission.js | 2 +- .../bizcomponents/goods/Goods.preference.js | 408 ------------------ .../bizcomponents/goods/Goods.preference.less | 3 - .../src/bizcomponents/goods/Goods.profile.js | 31 +- .../GoodsAllocation.associateform.js | 6 +- .../goodsallocation/GoodsAllocation.base.js | 23 +- .../GoodsAllocation.createform.js | 6 +- .../GoodsAllocation.dashboard.js | 15 +- .../GoodsAllocation.permission.js | 2 +- .../GoodsAllocation.preference.js | 357 --------------- .../GoodsAllocation.preference.less | 3 - .../GoodsAllocation.profile.js | 28 +- .../GoodsMovement.associateform.js | 8 +- .../goodsmovement/GoodsMovement.base.js | 23 +- .../goodsmovement/GoodsMovement.createform.js | 8 +- .../goodsmovement/GoodsMovement.dashboard.js | 13 +- .../goodsmovement/GoodsMovement.permission.js | 2 +- .../goodsmovement/GoodsMovement.preference.js | 364 ---------------- .../GoodsMovement.preference.less | 3 - .../goodsmovement/GoodsMovement.profile.js | 32 +- .../GoodsPackaging.associateform.js | 2 +- .../goodspackaging/GoodsPackaging.base.js | 19 +- .../GoodsPackaging.createform.js | 2 +- .../GoodsPackaging.dashboard.js | 15 +- .../GoodsPackaging.permission.js | 2 +- .../GoodsPackaging.preference.js | 352 --------------- .../GoodsPackaging.preference.less | 3 - .../goodspackaging/GoodsPackaging.profile.js | 29 +- .../goodsshelf/GoodsShelf.associateform.js | 6 +- .../goodsshelf/GoodsShelf.base.js | 31 +- .../goodsshelf/GoodsShelf.createform.js | 6 +- .../goodsshelf/GoodsShelf.dashboard.js | 17 +- .../goodsshelf/GoodsShelf.permission.js | 2 +- .../goodsshelf/GoodsShelf.preference.js | 368 ---------------- .../goodsshelf/GoodsShelf.preference.less | 3 - .../goodsshelf/GoodsShelf.profile.js | 27 +- .../GoodsShelfStockCount.associateform.js | 4 +- .../GoodsShelfStockCount.base.js | 23 +- .../GoodsShelfStockCount.createform.js | 4 +- .../GoodsShelfStockCount.dashboard.js | 15 +- .../GoodsShelfStockCount.permission.js | 2 +- .../GoodsShelfStockCount.preference.js | 357 --------------- .../GoodsShelfStockCount.preference.less | 3 - .../GoodsShelfStockCount.profile.js | 28 +- .../GoodsSupplier.associateform.js | 2 +- .../goodssupplier/GoodsSupplier.base.js | 19 +- .../goodssupplier/GoodsSupplier.createform.js | 2 +- .../goodssupplier/GoodsSupplier.dashboard.js | 19 +- .../goodssupplier/GoodsSupplier.permission.js | 2 +- .../goodssupplier/GoodsSupplier.preference.js | 353 --------------- .../GoodsSupplier.preference.less | 3 - .../goodssupplier/GoodsSupplier.profile.js | 30 +- .../hrinterview/HrInterview.associateform.js | 2 +- .../hrinterview/HrInterview.base.js | 19 +- .../hrinterview/HrInterview.createform.js | 2 +- .../hrinterview/HrInterview.dashboard.js | 15 +- .../hrinterview/HrInterview.permission.js | 2 +- .../hrinterview/HrInterview.preference.js | 351 --------------- .../hrinterview/HrInterview.preference.less | 3 - .../hrinterview/HrInterview.profile.js | 28 +- bizui/src/bizcomponents/index.js | 290 ------------- .../instructor/Instructor.associateform.js | 2 +- .../instructor/Instructor.base.js | 19 +- .../instructor/Instructor.createform.js | 2 +- .../instructor/Instructor.dashboard.js | 15 +- .../instructor/Instructor.permission.js | 2 +- .../instructor/Instructor.preference.js | 355 --------------- .../instructor/Instructor.preference.less | 3 - .../instructor/Instructor.profile.js | 32 +- .../InterviewType.associateform.js | 2 +- .../interviewtype/InterviewType.base.js | 19 +- .../interviewtype/InterviewType.createform.js | 2 +- .../interviewtype/InterviewType.dashboard.js | 15 +- .../interviewtype/InterviewType.permission.js | 2 +- .../interviewtype/InterviewType.preference.js | 351 --------------- .../InterviewType.preference.less | 3 - .../interviewtype/InterviewType.profile.js | 28 +- .../JobApplication.associateform.js | 2 +- .../jobapplication/JobApplication.base.js | 19 +- .../JobApplication.createform.js | 2 +- .../JobApplication.dashboard.js | 15 +- .../JobApplication.permission.js | 2 +- .../JobApplication.preference.js | 351 --------------- .../JobApplication.preference.less | 3 - .../jobapplication/JobApplication.profile.js | 28 +- .../leavetype/LeaveType.associateform.js | 2 +- .../bizcomponents/leavetype/LeaveType.base.js | 19 +- .../leavetype/LeaveType.createform.js | 2 +- .../leavetype/LeaveType.dashboard.js | 15 +- .../leavetype/LeaveType.permission.js | 2 +- .../leavetype/LeaveType.preference.js | 351 --------------- .../leavetype/LeaveType.preference.less | 3 - .../leavetype/LeaveType.profile.js | 28 +- .../LevelOneCategory.associateform.js | 2 +- .../levelonecategory/LevelOneCategory.base.js | 23 +- .../LevelOneCategory.createform.js | 2 +- .../LevelOneCategory.dashboard.js | 15 +- .../LevelOneCategory.permission.js | 2 +- .../LevelOneCategory.preference.js | 355 --------------- .../LevelOneCategory.preference.less | 3 - .../LevelOneCategory.profile.js | 26 +- .../LevelOneDepartment.associateform.js | 4 +- .../LevelOneDepartment.base.js | 19 +- .../LevelOneDepartment.createform.js | 4 +- .../LevelOneDepartment.dashboard.js | 15 +- .../LevelOneDepartment.permission.js | 2 +- .../LevelOneDepartment.preference.js | 352 --------------- .../LevelOneDepartment.preference.less | 3 - .../LevelOneDepartment.profile.js | 29 +- .../LevelThreeCategory.associateform.js | 2 +- .../LevelThreeCategory.base.js | 23 +- .../LevelThreeCategory.createform.js | 2 +- .../LevelThreeCategory.dashboard.js | 15 +- .../LevelThreeCategory.permission.js | 2 +- .../LevelThreeCategory.preference.js | 355 --------------- .../LevelThreeCategory.preference.less | 3 - .../LevelThreeCategory.profile.js | 26 +- .../LevelThreeDepartment.associateform.js | 4 +- .../LevelThreeDepartment.base.js | 23 +- .../LevelThreeDepartment.createform.js | 4 +- .../LevelThreeDepartment.dashboard.js | 15 +- .../LevelThreeDepartment.permission.js | 2 +- .../LevelThreeDepartment.preference.js | 357 --------------- .../LevelThreeDepartment.preference.less | 3 - .../LevelThreeDepartment.profile.js | 28 +- .../LevelTwoCategory.associateform.js | 2 +- .../leveltwocategory/LevelTwoCategory.base.js | 23 +- .../LevelTwoCategory.createform.js | 2 +- .../LevelTwoCategory.dashboard.js | 15 +- .../LevelTwoCategory.permission.js | 2 +- .../LevelTwoCategory.preference.js | 355 --------------- .../LevelTwoCategory.preference.less | 3 - .../LevelTwoCategory.profile.js | 26 +- .../LevelTwoDepartment.associateform.js | 4 +- .../LevelTwoDepartment.base.js | 23 +- .../LevelTwoDepartment.createform.js | 4 +- .../LevelTwoDepartment.dashboard.js | 15 +- .../LevelTwoDepartment.permission.js | 2 +- .../LevelTwoDepartment.preference.js | 357 --------------- .../LevelTwoDepartment.preference.less | 3 - .../LevelTwoDepartment.profile.js | 28 +- .../listaccess/ListAccess.associateform.js | 2 +- .../listaccess/ListAccess.base.js | 23 +- .../listaccess/ListAccess.createform.js | 2 +- .../listaccess/ListAccess.dashboard.js | 13 +- .../listaccess/ListAccess.permission.js | 2 +- .../listaccess/ListAccess.preference.js | 361 ---------------- .../listaccess/ListAccess.preference.less | 3 - .../listaccess/ListAccess.profile.js | 27 +- .../LoginHistory.associateform.js | 2 +- .../loginhistory/LoginHistory.base.js | 23 +- .../loginhistory/LoginHistory.createform.js | 2 +- .../loginhistory/LoginHistory.dashboard.js | 13 +- .../loginhistory/LoginHistory.permission.js | 2 +- .../loginhistory/LoginHistory.preference.js | 357 --------------- .../loginhistory/LoginHistory.preference.less | 10 - .../loginhistory/LoginHistory.profile.js | 28 +- .../loginhistory/LoginHistory.search.js | 6 - .../loginhistory/LoginHistory.table.js | 6 +- .../MemberRewardPoint.associateform.js | 4 +- .../MemberRewardPoint.base.js | 23 +- .../MemberRewardPoint.createform.js | 4 +- .../MemberRewardPoint.dashboard.js | 13 +- .../MemberRewardPoint.permission.js | 2 +- .../MemberRewardPoint.preference.js | 356 --------------- .../MemberRewardPoint.preference.less | 3 - .../MemberRewardPoint.profile.js | 27 +- ...mberRewardPointRedemption.associateform.js | 4 +- .../MemberRewardPointRedemption.base.js | 23 +- .../MemberRewardPointRedemption.createform.js | 4 +- .../MemberRewardPointRedemption.dashboard.js | 13 +- .../MemberRewardPointRedemption.permission.js | 2 +- .../MemberRewardPointRedemption.preference.js | 356 --------------- ...emberRewardPointRedemption.preference.less | 3 - .../MemberRewardPointRedemption.profile.js | 27 +- .../MemberWishlist.associateform.js | 2 +- .../memberwishlist/MemberWishlist.base.js | 23 +- .../MemberWishlist.createform.js | 2 +- .../MemberWishlist.dashboard.js | 15 +- .../MemberWishlist.permission.js | 2 +- .../MemberWishlist.preference.js | 355 --------------- .../MemberWishlist.preference.less | 3 - .../memberwishlist/MemberWishlist.profile.js | 26 +- .../MemberWishlistProduct.associateform.js | 2 +- .../MemberWishlistProduct.base.js | 23 +- .../MemberWishlistProduct.createform.js | 2 +- .../MemberWishlistProduct.dashboard.js | 13 +- .../MemberWishlistProduct.permission.js | 2 +- .../MemberWishlistProduct.preference.js | 355 --------------- .../MemberWishlistProduct.preference.less | 3 - .../MemberWishlistProduct.profile.js | 26 +- .../src/bizcomponents/moyi/Moyi.preference.js | 344 --------------- .../bizcomponents/moyi/Moyi.preference.less | 3 - .../ObjectAccess.associateform.js | 2 +- .../objectaccess/ObjectAccess.base.js | 23 +- .../objectaccess/ObjectAccess.createform.js | 2 +- .../objectaccess/ObjectAccess.dashboard.js | 13 +- .../objectaccess/ObjectAccess.permission.js | 2 +- .../objectaccess/ObjectAccess.preference.js | 365 ---------------- .../objectaccess/ObjectAccess.preference.less | 3 - .../objectaccess/ObjectAccess.profile.js | 36 +- .../OccupationType.associateform.js | 2 +- .../occupationtype/OccupationType.base.js | 19 +- .../OccupationType.createform.js | 2 +- .../OccupationType.dashboard.js | 15 +- .../OccupationType.permission.js | 2 +- .../OccupationType.preference.js | 351 --------------- .../OccupationType.preference.less | 3 - .../occupationtype/OccupationType.profile.js | 28 +- .../OfferAcceptance.associateform.js | 2 +- .../offeracceptance/OfferAcceptance.base.js | 19 +- .../OfferAcceptance.createform.js | 2 +- .../OfferAcceptance.dashboard.js | 15 +- .../OfferAcceptance.permission.js | 2 +- .../OfferAcceptance.preference.js | 351 --------------- .../OfferAcceptance.preference.less | 3 - .../OfferAcceptance.profile.js | 28 +- .../OfferApproval.associateform.js | 2 +- .../offerapproval/OfferApproval.base.js | 19 +- .../offerapproval/OfferApproval.createform.js | 2 +- .../offerapproval/OfferApproval.dashboard.js | 15 +- .../offerapproval/OfferApproval.permission.js | 2 +- .../offerapproval/OfferApproval.preference.js | 351 --------------- .../OfferApproval.preference.less | 3 - .../offerapproval/OfferApproval.profile.js | 28 +- .../OriginalVoucher.associateform.js | 2 +- .../originalvoucher/OriginalVoucher.base.js | 23 +- .../OriginalVoucher.createform.js | 2 +- .../OriginalVoucher.dashboard.js | 13 +- .../OriginalVoucher.permission.js | 2 +- .../OriginalVoucher.preference.js | 360 ---------------- .../OriginalVoucher.preference.less | 3 - .../OriginalVoucher.profile.js | 30 +- .../OriginalVoucherAuditing.associateform.js | 2 +- .../OriginalVoucherAuditing.base.js | 19 +- .../OriginalVoucherAuditing.createform.js | 2 +- .../OriginalVoucherAuditing.dashboard.js | 15 +- .../OriginalVoucherAuditing.permission.js | 2 +- .../OriginalVoucherAuditing.preference.js | 351 --------------- .../OriginalVoucherAuditing.preference.less | 3 - .../OriginalVoucherAuditing.profile.js | 28 +- ...iginalVoucherConfirmation.associateform.js | 2 +- .../OriginalVoucherConfirmation.base.js | 19 +- .../OriginalVoucherConfirmation.createform.js | 2 +- .../OriginalVoucherConfirmation.dashboard.js | 15 +- .../OriginalVoucherConfirmation.permission.js | 2 +- .../OriginalVoucherConfirmation.preference.js | 351 --------------- ...riginalVoucherConfirmation.preference.less | 3 - .../OriginalVoucherConfirmation.profile.js | 28 +- .../OriginalVoucherCreation.associateform.js | 2 +- .../OriginalVoucherCreation.base.js | 19 +- .../OriginalVoucherCreation.createform.js | 2 +- .../OriginalVoucherCreation.dashboard.js | 15 +- .../OriginalVoucherCreation.permission.js | 2 +- .../OriginalVoucherCreation.preference.js | 351 --------------- .../OriginalVoucherCreation.preference.less | 3 - .../OriginalVoucherCreation.profile.js | 28 +- .../payingoff/PayingOff.associateform.js | 6 +- .../bizcomponents/payingoff/PayingOff.base.js | 23 +- .../payingoff/PayingOff.createform.js | 6 +- .../payingoff/PayingOff.dashboard.js | 15 +- .../payingoff/PayingOff.permission.js | 2 +- .../payingoff/PayingOff.preference.js | 357 --------------- .../payingoff/PayingOff.preference.less | 3 - .../payingoff/PayingOff.profile.js | 28 +- .../PotentialCustomer.associateform.js | 4 +- .../PotentialCustomer.base.js | 27 +- .../PotentialCustomer.createform.js | 4 +- .../PotentialCustomer.dashboard.js | 19 +- .../PotentialCustomer.permission.js | 2 +- .../PotentialCustomer.preference.js | 364 ---------------- .../PotentialCustomer.preference.less | 3 - .../PotentialCustomer.profile.js | 29 +- .../PotentialCustomerContact.associateform.js | 8 +- .../PotentialCustomerContact.base.js | 31 +- .../PotentialCustomerContact.createform.js | 8 +- .../PotentialCustomerContact.dashboard.js | 13 +- .../PotentialCustomerContact.permission.js | 2 +- .../PotentialCustomerContact.preference.js | 371 ---------------- .../PotentialCustomerContact.preference.less | 3 - .../PotentialCustomerContact.profile.js | 30 +- ...tialCustomerContactPerson.associateform.js | 2 +- .../PotentialCustomerContactPerson.base.js | 23 +- ...tentialCustomerContactPerson.createform.js | 2 +- ...otentialCustomerContactPerson.dashboard.js | 15 +- ...tentialCustomerContactPerson.permission.js | 2 +- ...tentialCustomerContactPerson.preference.js | 357 --------------- ...ntialCustomerContactPerson.preference.less | 3 - .../PotentialCustomerContactPerson.profile.js | 28 +- .../product/Product.associateform.js | 2 +- .../src/bizcomponents/product/Product.base.js | 23 +- .../product/Product.createform.js | 2 +- .../product/Product.dashboard.js | 15 +- .../product/Product.permission.js | 2 +- .../product/Product.preference.js | 360 ---------------- .../product/Product.preference.less | 3 - .../bizcomponents/product/Product.profile.js | 30 +- .../ProductSupplyDuration.associateform.js | 4 +- .../ProductSupplyDuration.base.js | 23 +- .../ProductSupplyDuration.createform.js | 4 +- .../ProductSupplyDuration.dashboard.js | 13 +- .../ProductSupplyDuration.permission.js | 2 +- .../ProductSupplyDuration.preference.js | 357 --------------- .../ProductSupplyDuration.preference.less | 3 - .../ProductSupplyDuration.profile.js | 28 +- .../ProfessionInterview.associateform.js | 2 +- .../ProfessionInterview.base.js | 19 +- .../ProfessionInterview.createform.js | 2 +- .../ProfessionInterview.dashboard.js | 15 +- .../ProfessionInterview.permission.js | 2 +- .../ProfessionInterview.preference.js | 351 --------------- .../ProfessionInterview.preference.less | 3 - .../ProfessionInterview.profile.js | 28 +- .../ProvinceCenterDepartment.associateform.js | 4 +- .../ProvinceCenterDepartment.base.js | 23 +- .../ProvinceCenterDepartment.createform.js | 4 +- .../ProvinceCenterDepartment.dashboard.js | 15 +- .../ProvinceCenterDepartment.permission.js | 2 +- .../ProvinceCenterDepartment.preference.js | 357 --------------- .../ProvinceCenterDepartment.preference.less | 3 - .../ProvinceCenterDepartment.profile.js | 28 +- .../ProvinceCenterEmployee.associateform.js | 6 +- .../ProvinceCenterEmployee.base.js | 27 +- .../ProvinceCenterEmployee.createform.js | 6 +- .../ProvinceCenterEmployee.dashboard.js | 13 +- .../ProvinceCenterEmployee.permission.js | 2 +- .../ProvinceCenterEmployee.preference.js | 364 ---------------- .../ProvinceCenterEmployee.preference.less | 3 - .../ProvinceCenterEmployee.profile.js | 29 +- .../PublicHoliday.associateform.js | 2 +- .../publicholiday/PublicHoliday.base.js | 19 +- .../publicholiday/PublicHoliday.createform.js | 2 +- .../publicholiday/PublicHoliday.dashboard.js | 13 +- .../publicholiday/PublicHoliday.permission.js | 2 +- .../publicholiday/PublicHoliday.preference.js | 351 --------------- .../PublicHoliday.preference.less | 3 - .../publicholiday/PublicHoliday.profile.js | 28 +- .../ReceivingSpace.associateform.js | 6 +- .../receivingspace/ReceivingSpace.base.js | 23 +- .../ReceivingSpace.createform.js | 6 +- .../ReceivingSpace.dashboard.js | 15 +- .../ReceivingSpace.permission.js | 2 +- .../ReceivingSpace.preference.js | 361 ---------------- .../ReceivingSpace.preference.less | 3 - .../receivingspace/ReceivingSpace.profile.js | 32 +- .../bizcomponents/report/Report.preference.js | 344 --------------- .../report/Report.preference.less | 3 - .../reportline/ReportLine.preference.js | 361 ---------------- .../reportline/ReportLine.preference.less | 3 - .../ResponsibilityType.associateform.js | 2 +- .../ResponsibilityType.base.js | 19 +- .../ResponsibilityType.createform.js | 2 +- .../ResponsibilityType.dashboard.js | 15 +- .../ResponsibilityType.permission.js | 2 +- .../ResponsibilityType.preference.js | 351 --------------- .../ResponsibilityType.preference.less | 3 - .../ResponsibilityType.profile.js | 28 +- .../retailstore/RetailStore.associateform.js | 10 +- .../retailstore/RetailStore.base.js | 29 +- .../retailstore/RetailStore.createform.js | 10 +- .../retailstore/RetailStore.dashboard.js | 23 +- .../retailstore/RetailStore.permission.js | 2 +- .../retailstore/RetailStore.preference.js | 363 ---------------- .../retailstore/RetailStore.preference.less | 3 - .../retailstore/RetailStore.profile.js | 34 +- ...ailStoreCityServiceCenter.associateform.js | 4 +- .../RetailStoreCityServiceCenter.base.js | 23 +- ...RetailStoreCityServiceCenter.createform.js | 4 +- .../RetailStoreCityServiceCenter.dashboard.js | 21 +- ...RetailStoreCityServiceCenter.permission.js | 2 +- ...RetailStoreCityServiceCenter.preference.js | 357 --------------- ...tailStoreCityServiceCenter.preference.less | 3 - .../RetailStoreCityServiceCenter.profile.js | 28 +- .../RetailStoreClosing.base.js | 19 +- .../RetailStoreClosing.dashboard.js | 15 +- .../RetailStoreClosing.permission.js | 2 +- .../RetailStoreClosing.preference.js | 349 --------------- .../RetailStoreClosing.preference.less | 3 - .../RetailStoreClosing.profile.js | 26 +- .../RetailStoreCountryCenter.associateform.js | 2 +- .../RetailStoreCountryCenter.base.js | 19 +- .../RetailStoreCountryCenter.createform.js | 2 +- .../RetailStoreCountryCenter.dashboard.js | 41 +- .../RetailStoreCountryCenter.permission.js | 2 +- .../RetailStoreCountryCenter.preference.js | 366 ---------------- .../RetailStoreCountryCenter.preference.less | 3 - .../RetailStoreCountryCenter.profile.js | 53 +-- .../RetailStoreCreation.base.js | 19 +- .../RetailStoreCreation.dashboard.js | 15 +- .../RetailStoreCreation.permission.js | 2 +- .../RetailStoreCreation.preference.js | 349 --------------- .../RetailStoreCreation.preference.less | 3 - .../RetailStoreCreation.profile.js | 26 +- .../RetailStoreDecoration.base.js | 19 +- .../RetailStoreDecoration.dashboard.js | 15 +- .../RetailStoreDecoration.permission.js | 2 +- .../RetailStoreDecoration.preference.js | 349 --------------- .../RetailStoreDecoration.preference.less | 3 - .../RetailStoreDecoration.profile.js | 26 +- .../RetailStoreFranchising.base.js | 19 +- .../RetailStoreFranchising.dashboard.js | 15 +- .../RetailStoreFranchising.permission.js | 2 +- .../RetailStoreFranchising.preference.js | 349 --------------- .../RetailStoreFranchising.preference.less | 3 - .../RetailStoreFranchising.profile.js | 26 +- .../RetailStoreInvestmentInvitation.base.js | 19 +- ...tailStoreInvestmentInvitation.dashboard.js | 15 +- ...ailStoreInvestmentInvitation.permission.js | 2 +- ...ailStoreInvestmentInvitation.preference.js | 349 --------------- ...lStoreInvestmentInvitation.preference.less | 3 - ...RetailStoreInvestmentInvitation.profile.js | 26 +- .../RetailStoreMember.associateform.js | 2 +- .../RetailStoreMember.base.js | 19 +- .../RetailStoreMember.createform.js | 2 +- .../RetailStoreMember.dashboard.js | 27 +- .../RetailStoreMember.permission.js | 2 +- .../RetailStoreMember.preference.js | 350 --------------- .../RetailStoreMember.preference.less | 3 - .../RetailStoreMember.profile.js | 27 +- .../RetailStoreMemberAddress.associateform.js | 2 +- .../RetailStoreMemberAddress.base.js | 23 +- .../RetailStoreMemberAddress.createform.js | 2 +- .../RetailStoreMemberAddress.dashboard.js | 13 +- .../RetailStoreMemberAddress.permission.js | 2 +- .../RetailStoreMemberAddress.preference.js | 357 --------------- .../RetailStoreMemberAddress.preference.less | 3 - .../RetailStoreMemberAddress.profile.js | 28 +- .../RetailStoreMemberCoupon.associateform.js | 2 +- .../RetailStoreMemberCoupon.base.js | 23 +- .../RetailStoreMemberCoupon.createform.js | 2 +- .../RetailStoreMemberCoupon.dashboard.js | 13 +- .../RetailStoreMemberCoupon.permission.js | 2 +- .../RetailStoreMemberCoupon.preference.js | 357 --------------- .../RetailStoreMemberCoupon.preference.less | 3 - .../RetailStoreMemberCoupon.profile.js | 28 +- ...RetailStoreMemberGiftCard.associateform.js | 4 +- .../RetailStoreMemberGiftCard.base.js | 23 +- .../RetailStoreMemberGiftCard.createform.js | 4 +- .../RetailStoreMemberGiftCard.dashboard.js | 15 +- .../RetailStoreMemberGiftCard.permission.js | 2 +- .../RetailStoreMemberGiftCard.preference.js | 357 --------------- .../RetailStoreMemberGiftCard.preference.less | 3 - .../RetailStoreMemberGiftCard.profile.js | 28 +- ...mberGiftCardConsumeRecord.associateform.js | 8 +- ...ilStoreMemberGiftCardConsumeRecord.base.js | 27 +- ...eMemberGiftCardConsumeRecord.createform.js | 8 +- ...reMemberGiftCardConsumeRecord.dashboard.js | 13 +- ...eMemberGiftCardConsumeRecord.permission.js | 2 +- ...eMemberGiftCardConsumeRecord.preference.js | 363 ---------------- ...emberGiftCardConsumeRecord.preference.less | 3 - ...toreMemberGiftCardConsumeRecord.profile.js | 28 +- .../RetailStoreOpening.base.js | 19 +- .../RetailStoreOpening.dashboard.js | 15 +- .../RetailStoreOpening.permission.js | 2 +- .../RetailStoreOpening.preference.js | 349 --------------- .../RetailStoreOpening.preference.less | 3 - .../RetailStoreOpening.profile.js | 26 +- .../RetailStoreOrder.associateform.js | 6 +- .../retailstoreorder/RetailStoreOrder.base.js | 33 +- .../RetailStoreOrder.createform.js | 6 +- .../RetailStoreOrder.dashboard.js | 21 +- .../RetailStoreOrder.permission.js | 2 +- .../RetailStoreOrder.preference.js | 358 --------------- .../RetailStoreOrder.preference.less | 3 - .../RetailStoreOrder.profile.js | 29 +- .../RetailStoreOrderApproval.associateform.js | 2 +- .../RetailStoreOrderApproval.base.js | 19 +- .../RetailStoreOrderApproval.createform.js | 2 +- .../RetailStoreOrderApproval.dashboard.js | 15 +- .../RetailStoreOrderApproval.permission.js | 2 +- .../RetailStoreOrderApproval.preference.js | 350 --------------- .../RetailStoreOrderApproval.preference.less | 3 - .../RetailStoreOrderApproval.profile.js | 27 +- ...ailStoreOrderConfirmation.associateform.js | 2 +- .../RetailStoreOrderConfirmation.base.js | 19 +- ...RetailStoreOrderConfirmation.createform.js | 2 +- .../RetailStoreOrderConfirmation.dashboard.js | 15 +- ...RetailStoreOrderConfirmation.permission.js | 2 +- ...RetailStoreOrderConfirmation.preference.js | 350 --------------- ...tailStoreOrderConfirmation.preference.less | 3 - .../RetailStoreOrderConfirmation.profile.js | 27 +- .../RetailStoreOrderDelivery.associateform.js | 2 +- .../RetailStoreOrderDelivery.base.js | 19 +- .../RetailStoreOrderDelivery.createform.js | 2 +- .../RetailStoreOrderDelivery.dashboard.js | 15 +- .../RetailStoreOrderDelivery.permission.js | 2 +- .../RetailStoreOrderDelivery.preference.js | 350 --------------- .../RetailStoreOrderDelivery.preference.less | 3 - .../RetailStoreOrderDelivery.profile.js | 27 +- .../RetailStoreOrderLineItem.associateform.js | 6 +- .../RetailStoreOrderLineItem.base.js | 23 +- .../RetailStoreOrderLineItem.createform.js | 6 +- .../RetailStoreOrderLineItem.dashboard.js | 13 +- .../RetailStoreOrderLineItem.permission.js | 2 +- .../RetailStoreOrderLineItem.preference.js | 359 --------------- .../RetailStoreOrderLineItem.preference.less | 3 - .../RetailStoreOrderLineItem.profile.js | 30 +- ...ailStoreOrderPaymentGroup.associateform.js | 2 +- .../RetailStoreOrderPaymentGroup.base.js | 23 +- ...RetailStoreOrderPaymentGroup.createform.js | 2 +- .../RetailStoreOrderPaymentGroup.dashboard.js | 13 +- ...RetailStoreOrderPaymentGroup.permission.js | 2 +- ...RetailStoreOrderPaymentGroup.preference.js | 356 --------------- ...tailStoreOrderPaymentGroup.preference.less | 3 - .../RetailStoreOrderPaymentGroup.profile.js | 27 +- .../RetailStoreOrderPicking.associateform.js | 2 +- .../RetailStoreOrderPicking.base.js | 19 +- .../RetailStoreOrderPicking.createform.js | 2 +- .../RetailStoreOrderPicking.dashboard.js | 15 +- .../RetailStoreOrderPicking.permission.js | 2 +- .../RetailStoreOrderPicking.preference.js | 350 --------------- .../RetailStoreOrderPicking.preference.less | 3 - .../RetailStoreOrderPicking.profile.js | 27 +- ...etailStoreOrderProcessing.associateform.js | 2 +- .../RetailStoreOrderProcessing.base.js | 19 +- .../RetailStoreOrderProcessing.createform.js | 2 +- .../RetailStoreOrderProcessing.dashboard.js | 15 +- .../RetailStoreOrderProcessing.permission.js | 2 +- .../RetailStoreOrderProcessing.preference.js | 350 --------------- ...RetailStoreOrderProcessing.preference.less | 3 - .../RetailStoreOrderProcessing.profile.js | 27 +- .../RetailStoreOrderShipment.associateform.js | 2 +- .../RetailStoreOrderShipment.base.js | 19 +- .../RetailStoreOrderShipment.createform.js | 2 +- .../RetailStoreOrderShipment.dashboard.js | 15 +- .../RetailStoreOrderShipment.permission.js | 2 +- .../RetailStoreOrderShipment.preference.js | 350 --------------- .../RetailStoreOrderShipment.preference.less | 3 - .../RetailStoreOrderShipment.profile.js | 27 +- ...ilStoreOrderShippingGroup.associateform.js | 4 +- .../RetailStoreOrderShippingGroup.base.js | 23 +- ...etailStoreOrderShippingGroup.createform.js | 4 +- ...RetailStoreOrderShippingGroup.dashboard.js | 13 +- ...etailStoreOrderShippingGroup.permission.js | 2 +- ...etailStoreOrderShippingGroup.preference.js | 356 --------------- ...ailStoreOrderShippingGroup.preference.less | 3 - .../RetailStoreOrderShippingGroup.profile.js | 27 +- ...RetailStoreProvinceCenter.associateform.js | 4 +- .../RetailStoreProvinceCenter.base.js | 19 +- .../RetailStoreProvinceCenter.createform.js | 4 +- .../RetailStoreProvinceCenter.dashboard.js | 17 +- .../RetailStoreProvinceCenter.permission.js | 2 +- .../RetailStoreProvinceCenter.preference.js | 352 --------------- .../RetailStoreProvinceCenter.preference.less | 3 - .../RetailStoreProvinceCenter.profile.js | 30 +- .../salarygrade/SalaryGrade.associateform.js | 2 +- .../salarygrade/SalaryGrade.base.js | 19 +- .../salarygrade/SalaryGrade.createform.js | 2 +- .../salarygrade/SalaryGrade.dashboard.js | 17 +- .../salarygrade/SalaryGrade.permission.js | 2 +- .../salarygrade/SalaryGrade.preference.js | 351 --------------- .../salarygrade/SalaryGrade.preference.less | 3 - .../salarygrade/SalaryGrade.profile.js | 28 +- .../scoring/Scoring.associateform.js | 2 +- .../src/bizcomponents/scoring/Scoring.base.js | 19 +- .../scoring/Scoring.createform.js | 2 +- .../scoring/Scoring.dashboard.js | 15 +- .../scoring/Scoring.permission.js | 2 +- .../scoring/Scoring.preference.js | 351 --------------- .../scoring/Scoring.preference.less | 3 - .../bizcomponents/scoring/Scoring.profile.js | 28 +- .../secuser/SecUser.associateform.js | 41 +- .../src/bizcomponents/secuser/SecUser.base.js | 28 +- .../secuser/SecUser.createform.js | 41 +- .../secuser/SecUser.dashboard.js | 20 +- .../secuser/SecUser.modaltable.js | 2 +- .../secuser/SecUser.permission.js | 5 +- .../secuser/SecUser.preference.js | 356 --------------- .../secuser/SecUser.preference.less | 3 - .../bizcomponents/secuser/SecUser.profile.js | 33 +- .../secuser/SecUser.searchform.js | 27 ++ .../secuser/SecUser.updateform.js | 36 ++ .../secuserblocking/SecUserBlocking.base.js | 19 +- .../SecUserBlocking.dashboard.js | 15 +- .../SecUserBlocking.permission.js | 2 +- .../SecUserBlocking.preference.js | 351 --------------- .../SecUserBlocking.preference.less | 3 - .../SecUserBlocking.profile.js | 28 +- .../SecUserBlocking.service.js | 4 +- .../ShippingSpace.associateform.js | 6 +- .../shippingspace/ShippingSpace.base.js | 23 +- .../shippingspace/ShippingSpace.createform.js | 6 +- .../shippingspace/ShippingSpace.dashboard.js | 15 +- .../shippingspace/ShippingSpace.permission.js | 2 +- .../shippingspace/ShippingSpace.preference.js | 361 ---------------- .../ShippingSpace.preference.less | 3 - .../shippingspace/ShippingSpace.profile.js | 32 +- .../skilltype/SkillType.associateform.js | 2 +- .../bizcomponents/skilltype/SkillType.base.js | 19 +- .../skilltype/SkillType.createform.js | 2 +- .../skilltype/SkillType.dashboard.js | 15 +- .../skilltype/SkillType.permission.js | 2 +- .../skilltype/SkillType.preference.js | 350 --------------- .../skilltype/SkillType.preference.less | 3 - .../skilltype/SkillType.profile.js | 27 +- .../bizcomponents/sku/Sku.associateform.js | 4 +- bizui/src/bizcomponents/sku/Sku.base.js | 23 +- bizui/src/bizcomponents/sku/Sku.createform.js | 4 +- bizui/src/bizcomponents/sku/Sku.dashboard.js | 15 +- bizui/src/bizcomponents/sku/Sku.modaltable.js | 2 +- bizui/src/bizcomponents/sku/Sku.permission.js | 2 +- bizui/src/bizcomponents/sku/Sku.preference.js | 361 ---------------- .../src/bizcomponents/sku/Sku.preference.less | 3 - bizui/src/bizcomponents/sku/Sku.profile.js | 31 +- .../smartpallet/SmartPallet.associateform.js | 6 +- .../smartpallet/SmartPallet.base.js | 23 +- .../smartpallet/SmartPallet.createform.js | 6 +- .../smartpallet/SmartPallet.dashboard.js | 15 +- .../smartpallet/SmartPallet.permission.js | 2 +- .../smartpallet/SmartPallet.preference.js | 360 ---------------- .../smartpallet/SmartPallet.preference.less | 3 - .../smartpallet/SmartPallet.profile.js | 31 +- .../StockCountIssueTrack.associateform.js | 4 +- .../StockCountIssueTrack.base.js | 23 +- .../StockCountIssueTrack.createform.js | 4 +- .../StockCountIssueTrack.dashboard.js | 13 +- .../StockCountIssueTrack.permission.js | 2 +- .../StockCountIssueTrack.preference.js | 357 --------------- .../StockCountIssueTrack.preference.less | 3 - .../StockCountIssueTrack.profile.js | 28 +- .../StorageSpace.associateform.js | 6 +- .../storagespace/StorageSpace.base.js | 23 +- .../storagespace/StorageSpace.createform.js | 6 +- .../storagespace/StorageSpace.dashboard.js | 15 +- .../storagespace/StorageSpace.permission.js | 2 +- .../storagespace/StorageSpace.preference.js | 360 ---------------- .../storagespace/StorageSpace.preference.less | 3 - .../storagespace/StorageSpace.profile.js | 31 +- .../SupplierProduct.associateform.js | 2 +- .../supplierproduct/SupplierProduct.base.js | 23 +- .../SupplierProduct.createform.js | 2 +- .../SupplierProduct.dashboard.js | 15 +- .../SupplierProduct.permission.js | 2 +- .../SupplierProduct.preference.js | 357 --------------- .../SupplierProduct.preference.less | 3 - .../SupplierProduct.profile.js | 28 +- .../SupplierSpace.associateform.js | 6 +- .../supplierspace/SupplierSpace.base.js | 23 +- .../supplierspace/SupplierSpace.createform.js | 6 +- .../supplierspace/SupplierSpace.dashboard.js | 15 +- .../supplierspace/SupplierSpace.permission.js | 2 +- .../supplierspace/SupplierSpace.preference.js | 360 ---------------- .../SupplierSpace.preference.less | 3 - .../supplierspace/SupplierSpace.profile.js | 31 +- .../supplyorder/SupplyOrder.associateform.js | 6 +- .../supplyorder/SupplyOrder.base.js | 33 +- .../supplyorder/SupplyOrder.createform.js | 6 +- .../supplyorder/SupplyOrder.dashboard.js | 21 +- .../supplyorder/SupplyOrder.permission.js | 2 +- .../supplyorder/SupplyOrder.preference.js | 358 --------------- .../supplyorder/SupplyOrder.preference.less | 3 - .../supplyorder/SupplyOrder.profile.js | 29 +- .../SupplyOrderApproval.associateform.js | 2 +- .../SupplyOrderApproval.base.js | 19 +- .../SupplyOrderApproval.createform.js | 2 +- .../SupplyOrderApproval.dashboard.js | 17 +- .../SupplyOrderApproval.permission.js | 2 +- .../SupplyOrderApproval.preference.js | 350 --------------- .../SupplyOrderApproval.preference.less | 3 - .../SupplyOrderApproval.profile.js | 27 +- .../SupplyOrderConfirmation.associateform.js | 2 +- .../SupplyOrderConfirmation.base.js | 19 +- .../SupplyOrderConfirmation.createform.js | 2 +- .../SupplyOrderConfirmation.dashboard.js | 17 +- .../SupplyOrderConfirmation.permission.js | 2 +- .../SupplyOrderConfirmation.preference.js | 350 --------------- .../SupplyOrderConfirmation.preference.less | 3 - .../SupplyOrderConfirmation.profile.js | 27 +- .../SupplyOrderDelivery.associateform.js | 2 +- .../SupplyOrderDelivery.base.js | 19 +- .../SupplyOrderDelivery.createform.js | 2 +- .../SupplyOrderDelivery.dashboard.js | 17 +- .../SupplyOrderDelivery.permission.js | 2 +- .../SupplyOrderDelivery.preference.js | 350 --------------- .../SupplyOrderDelivery.preference.less | 3 - .../SupplyOrderDelivery.profile.js | 27 +- .../SupplyOrderLineItem.associateform.js | 6 +- .../SupplyOrderLineItem.base.js | 23 +- .../SupplyOrderLineItem.createform.js | 6 +- .../SupplyOrderLineItem.dashboard.js | 13 +- .../SupplyOrderLineItem.permission.js | 2 +- .../SupplyOrderLineItem.preference.js | 359 --------------- .../SupplyOrderLineItem.preference.less | 3 - .../SupplyOrderLineItem.profile.js | 30 +- .../SupplyOrderPaymentGroup.associateform.js | 2 +- .../SupplyOrderPaymentGroup.base.js | 23 +- .../SupplyOrderPaymentGroup.createform.js | 2 +- .../SupplyOrderPaymentGroup.dashboard.js | 13 +- .../SupplyOrderPaymentGroup.permission.js | 2 +- .../SupplyOrderPaymentGroup.preference.js | 356 --------------- .../SupplyOrderPaymentGroup.preference.less | 3 - .../SupplyOrderPaymentGroup.profile.js | 27 +- .../SupplyOrderPicking.associateform.js | 2 +- .../SupplyOrderPicking.base.js | 19 +- .../SupplyOrderPicking.createform.js | 2 +- .../SupplyOrderPicking.dashboard.js | 15 +- .../SupplyOrderPicking.permission.js | 2 +- .../SupplyOrderPicking.preference.js | 350 --------------- .../SupplyOrderPicking.preference.less | 3 - .../SupplyOrderPicking.profile.js | 27 +- .../SupplyOrderProcessing.associateform.js | 2 +- .../SupplyOrderProcessing.base.js | 19 +- .../SupplyOrderProcessing.createform.js | 2 +- .../SupplyOrderProcessing.dashboard.js | 17 +- .../SupplyOrderProcessing.permission.js | 2 +- .../SupplyOrderProcessing.preference.js | 350 --------------- .../SupplyOrderProcessing.preference.less | 3 - .../SupplyOrderProcessing.profile.js | 27 +- .../SupplyOrderShipment.associateform.js | 2 +- .../SupplyOrderShipment.base.js | 19 +- .../SupplyOrderShipment.createform.js | 2 +- .../SupplyOrderShipment.dashboard.js | 17 +- .../SupplyOrderShipment.permission.js | 2 +- .../SupplyOrderShipment.preference.js | 350 --------------- .../SupplyOrderShipment.preference.less | 3 - .../SupplyOrderShipment.profile.js | 27 +- .../SupplyOrderShippingGroup.associateform.js | 4 +- .../SupplyOrderShippingGroup.base.js | 23 +- .../SupplyOrderShippingGroup.createform.js | 4 +- .../SupplyOrderShippingGroup.dashboard.js | 13 +- .../SupplyOrderShippingGroup.permission.js | 2 +- .../SupplyOrderShippingGroup.preference.js | 356 --------------- .../SupplyOrderShippingGroup.preference.less | 3 - .../SupplyOrderShippingGroup.profile.js | 27 +- .../termination/Termination.associateform.js | 4 +- .../termination/Termination.base.js | 27 +- .../termination/Termination.createform.js | 4 +- .../termination/Termination.dashboard.js | 15 +- .../termination/Termination.permission.js | 2 +- .../termination/Termination.preference.js | 361 ---------------- .../termination/Termination.preference.less | 3 - .../termination/Termination.profile.js | 26 +- .../TerminationReason.associateform.js | 2 +- .../TerminationReason.base.js | 19 +- .../TerminationReason.createform.js | 2 +- .../TerminationReason.dashboard.js | 15 +- .../TerminationReason.permission.js | 2 +- .../TerminationReason.preference.js | 350 --------------- .../TerminationReason.preference.less | 3 - .../TerminationReason.profile.js | 27 +- .../TerminationType.associateform.js | 2 +- .../terminationtype/TerminationType.base.js | 19 +- .../TerminationType.createform.js | 2 +- .../TerminationType.dashboard.js | 15 +- .../TerminationType.permission.js | 2 +- .../TerminationType.preference.js | 351 --------------- .../TerminationType.preference.less | 3 - .../TerminationType.profile.js | 28 +- .../TrainingCourseType.associateform.js | 2 +- .../TrainingCourseType.base.js | 19 +- .../TrainingCourseType.createform.js | 2 +- .../TrainingCourseType.dashboard.js | 15 +- .../TrainingCourseType.permission.js | 2 +- .../TrainingCourseType.preference.js | 351 --------------- .../TrainingCourseType.preference.less | 3 - .../TrainingCourseType.profile.js | 28 +- .../TransportFleet.associateform.js | 2 +- .../transportfleet/TransportFleet.base.js | 19 +- .../TransportFleet.createform.js | 2 +- .../TransportFleet.dashboard.js | 19 +- .../TransportFleet.permission.js | 2 +- .../TransportFleet.preference.js | 351 --------------- .../TransportFleet.preference.less | 3 - .../transportfleet/TransportFleet.profile.js | 28 +- .../TransportTask.associateform.js | 14 +- .../transporttask/TransportTask.base.js | 35 +- .../transporttask/TransportTask.createform.js | 14 +- .../transporttask/TransportTask.dashboard.js | 17 +- .../transporttask/TransportTask.permission.js | 2 +- .../transporttask/TransportTask.preference.js | 377 ---------------- .../TransportTask.preference.less | 3 - .../transporttask/TransportTask.profile.js | 30 +- .../TransportTaskTrack.associateform.js | 8 +- .../TransportTaskTrack.base.js | 23 +- .../TransportTaskTrack.createform.js | 8 +- .../TransportTaskTrack.dashboard.js | 13 +- .../TransportTaskTrack.permission.js | 2 +- .../TransportTaskTrack.preference.js | 357 --------------- .../TransportTaskTrack.preference.less | 3 - .../TransportTaskTrack.profile.js | 28 +- .../TransportTruck.associateform.js | 4 +- .../transporttruck/TransportTruck.base.js | 23 +- .../TransportTruck.createform.js | 4 +- .../TransportTruck.dashboard.js | 15 +- .../TransportTruck.permission.js | 2 +- .../TransportTruck.preference.js | 362 ---------------- .../TransportTruck.preference.less | 3 - .../transporttruck/TransportTruck.profile.js | 33 +- .../truckdriver/TruckDriver.associateform.js | 2 +- .../truckdriver/TruckDriver.base.js | 23 +- .../truckdriver/TruckDriver.createform.js | 2 +- .../truckdriver/TruckDriver.dashboard.js | 15 +- .../truckdriver/TruckDriver.permission.js | 2 +- .../truckdriver/TruckDriver.preference.js | 357 --------------- .../truckdriver/TruckDriver.preference.less | 3 - .../truckdriver/TruckDriver.profile.js | 28 +- .../userapp/UserApp.associateform.js | 2 +- .../src/bizcomponents/userapp/UserApp.base.js | 23 +- .../userapp/UserApp.createform.js | 2 +- .../userapp/UserApp.dashboard.js | 17 +- .../userapp/UserApp.permission.js | 2 +- .../userapp/UserApp.preference.js | 361 ---------------- .../userapp/UserApp.preference.less | 3 - .../bizcomponents/userapp/UserApp.profile.js | 31 +- .../userdomain/UserDomain.base.js | 19 +- .../userdomain/UserDomain.dashboard.js | 15 +- .../userdomain/UserDomain.permission.js | 2 +- .../userdomain/UserDomain.preference.js | 350 --------------- .../userdomain/UserDomain.preference.less | 3 - .../userdomain/UserDomain.profile.js | 28 +- .../userdomain/UserDomain.service.js | 4 +- .../UserWhiteList.associateform.js | 2 +- .../userwhitelist/UserWhiteList.base.js | 19 +- .../userwhitelist/UserWhiteList.createform.js | 2 +- .../userwhitelist/UserWhiteList.dashboard.js | 13 +- .../userwhitelist/UserWhiteList.permission.js | 2 +- .../userwhitelist/UserWhiteList.preference.js | 350 --------------- .../UserWhiteList.preference.less | 3 - .../userwhitelist/UserWhiteList.profile.js | 27 +- .../bizcomponents/view/View.associateform.js | 2 +- bizui/src/bizcomponents/view/View.base.js | 19 +- .../src/bizcomponents/view/View.createform.js | 2 +- .../src/bizcomponents/view/View.dashboard.js | 13 +- .../src/bizcomponents/view/View.permission.js | 2 +- .../src/bizcomponents/view/View.preference.js | 351 --------------- .../bizcomponents/view/View.preference.less | 3 - bizui/src/bizcomponents/view/View.profile.js | 28 +- .../warehouse/Warehouse.associateform.js | 6 +- .../bizcomponents/warehouse/Warehouse.base.js | 19 +- .../warehouse/Warehouse.createform.js | 6 +- .../warehouse/Warehouse.dashboard.js | 27 +- .../warehouse/Warehouse.permission.js | 2 +- .../warehouse/Warehouse.preference.js | 354 --------------- .../warehouse/Warehouse.preference.less | 3 - .../warehouse/Warehouse.profile.js | 31 +- .../WarehouseAsset.associateform.js | 2 +- .../warehouseasset/WarehouseAsset.base.js | 23 +- .../WarehouseAsset.createform.js | 2 +- .../WarehouseAsset.dashboard.js | 13 +- .../WarehouseAsset.permission.js | 2 +- .../WarehouseAsset.preference.js | 357 --------------- .../WarehouseAsset.preference.less | 3 - .../warehouseasset/WarehouseAsset.profile.js | 28 +- bizui/src/common/Dashboard.tool.js | 135 +++++- bizui/src/common/Locale.tool.js | 6 +- bizui/src/index.ejs | 2 +- bizui/src/utils/modeltool.js | 11 +- cleangit.sh | 2 - frontend-sync.sh | 5 +- java-sync.sh | 4 +- retailscm-debug.txt | 87 ++-- ui-and-backend-sync.sh | 8 +- upgrade-ui-framework.sh | 13 +- 1171 files changed, 5736 insertions(+), 59176 deletions(-) delete mode 100644 bizui/src/bizcomponents/accountingdocument/AccountingDocument.preference.js delete mode 100644 bizui/src/bizcomponents/accountingdocument/AccountingDocument.preference.less delete mode 100644 bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.preference.js delete mode 100644 bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.preference.less delete mode 100644 bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.preference.js delete mode 100644 bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.preference.less delete mode 100644 bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.preference.js delete mode 100644 bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.preference.less delete mode 100644 bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.preference.js delete mode 100644 bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.preference.less delete mode 100644 bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.preference.js delete mode 100644 bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.preference.less delete mode 100644 bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.preference.js delete mode 100644 bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.preference.less delete mode 100644 bizui/src/bizcomponents/accountingperiod/AccountingPeriod.preference.js delete mode 100644 bizui/src/bizcomponents/accountingperiod/AccountingPeriod.preference.less delete mode 100644 bizui/src/bizcomponents/accountingsubject/AccountingSubject.preference.js delete mode 100644 bizui/src/bizcomponents/accountingsubject/AccountingSubject.preference.less delete mode 100644 bizui/src/bizcomponents/accountset/AccountSet.preference.js delete mode 100644 bizui/src/bizcomponents/accountset/AccountSet.preference.less delete mode 100644 bizui/src/bizcomponents/catalog/Catalog.preference.js delete mode 100644 bizui/src/bizcomponents/catalog/Catalog.preference.less delete mode 100644 bizui/src/bizcomponents/cityevent/CityEvent.preference.js delete mode 100644 bizui/src/bizcomponents/cityevent/CityEvent.preference.less delete mode 100644 bizui/src/bizcomponents/citypartner/CityPartner.preference.js delete mode 100644 bizui/src/bizcomponents/citypartner/CityPartner.preference.less delete mode 100644 bizui/src/bizcomponents/companytraining/CompanyTraining.preference.js delete mode 100644 bizui/src/bizcomponents/companytraining/CompanyTraining.preference.less delete mode 100644 bizui/src/bizcomponents/consumerorder/ConsumerOrder.preference.js delete mode 100644 bizui/src/bizcomponents/consumerorder/ConsumerOrder.preference.less delete mode 100644 bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.preference.js delete mode 100644 bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.preference.less delete mode 100644 bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.preference.js delete mode 100644 bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.preference.less delete mode 100644 bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.preference.js delete mode 100644 bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.preference.less delete mode 100644 bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.preference.js delete mode 100644 bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.preference.less delete mode 100644 bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.preference.js delete mode 100644 bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.preference.less delete mode 100644 bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.preference.js delete mode 100644 bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.preference.less delete mode 100644 bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.preference.js delete mode 100644 bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.preference.less delete mode 100644 bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.preference.js delete mode 100644 bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.preference.less delete mode 100644 bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.preference.js delete mode 100644 bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.preference.less delete mode 100644 bizui/src/bizcomponents/damagespace/DamageSpace.preference.js delete mode 100644 bizui/src/bizcomponents/damagespace/DamageSpace.preference.less delete mode 100644 bizui/src/bizcomponents/employee/Employee.preference.js delete mode 100644 bizui/src/bizcomponents/employee/Employee.preference.less delete mode 100644 bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.preference.js delete mode 100644 bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.preference.less delete mode 100644 bizui/src/bizcomponents/employeeaward/EmployeeAward.preference.js delete mode 100644 bizui/src/bizcomponents/employeeaward/EmployeeAward.preference.less delete mode 100644 bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.preference.js delete mode 100644 bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.preference.less delete mode 100644 bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.preference.js delete mode 100644 bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.preference.less delete mode 100644 bizui/src/bizcomponents/employeeeducation/EmployeeEducation.preference.js delete mode 100644 bizui/src/bizcomponents/employeeeducation/EmployeeEducation.preference.less delete mode 100644 bizui/src/bizcomponents/employeeinterview/EmployeeInterview.preference.js delete mode 100644 bizui/src/bizcomponents/employeeinterview/EmployeeInterview.preference.less delete mode 100644 bizui/src/bizcomponents/employeeleave/EmployeeLeave.preference.js delete mode 100644 bizui/src/bizcomponents/employeeleave/EmployeeLeave.preference.less delete mode 100644 bizui/src/bizcomponents/employeeperformance/EmployeePerformance.preference.js delete mode 100644 bizui/src/bizcomponents/employeeperformance/EmployeePerformance.preference.less delete mode 100644 bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.preference.js delete mode 100644 bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.preference.less delete mode 100644 bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.preference.js delete mode 100644 bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.preference.less delete mode 100644 bizui/src/bizcomponents/employeeskill/EmployeeSkill.preference.js delete mode 100644 bizui/src/bizcomponents/employeeskill/EmployeeSkill.preference.less delete mode 100644 bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.preference.js delete mode 100644 bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.preference.less delete mode 100644 bizui/src/bizcomponents/eventattendance/EventAttendance.preference.js delete mode 100644 bizui/src/bizcomponents/eventattendance/EventAttendance.preference.less delete mode 100644 bizui/src/bizcomponents/goods/Goods.preference.js delete mode 100644 bizui/src/bizcomponents/goods/Goods.preference.less delete mode 100644 bizui/src/bizcomponents/goodsallocation/GoodsAllocation.preference.js delete mode 100644 bizui/src/bizcomponents/goodsallocation/GoodsAllocation.preference.less delete mode 100644 bizui/src/bizcomponents/goodsmovement/GoodsMovement.preference.js delete mode 100644 bizui/src/bizcomponents/goodsmovement/GoodsMovement.preference.less delete mode 100644 bizui/src/bizcomponents/goodspackaging/GoodsPackaging.preference.js delete mode 100644 bizui/src/bizcomponents/goodspackaging/GoodsPackaging.preference.less delete mode 100644 bizui/src/bizcomponents/goodsshelf/GoodsShelf.preference.js delete mode 100644 bizui/src/bizcomponents/goodsshelf/GoodsShelf.preference.less delete mode 100644 bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.preference.js delete mode 100644 bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.preference.less delete mode 100644 bizui/src/bizcomponents/goodssupplier/GoodsSupplier.preference.js delete mode 100644 bizui/src/bizcomponents/goodssupplier/GoodsSupplier.preference.less delete mode 100644 bizui/src/bizcomponents/hrinterview/HrInterview.preference.js delete mode 100644 bizui/src/bizcomponents/hrinterview/HrInterview.preference.less delete mode 100644 bizui/src/bizcomponents/instructor/Instructor.preference.js delete mode 100644 bizui/src/bizcomponents/instructor/Instructor.preference.less delete mode 100644 bizui/src/bizcomponents/interviewtype/InterviewType.preference.js delete mode 100644 bizui/src/bizcomponents/interviewtype/InterviewType.preference.less delete mode 100644 bizui/src/bizcomponents/jobapplication/JobApplication.preference.js delete mode 100644 bizui/src/bizcomponents/jobapplication/JobApplication.preference.less delete mode 100644 bizui/src/bizcomponents/leavetype/LeaveType.preference.js delete mode 100644 bizui/src/bizcomponents/leavetype/LeaveType.preference.less delete mode 100644 bizui/src/bizcomponents/levelonecategory/LevelOneCategory.preference.js delete mode 100644 bizui/src/bizcomponents/levelonecategory/LevelOneCategory.preference.less delete mode 100644 bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.preference.js delete mode 100644 bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.preference.less delete mode 100644 bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.preference.js delete mode 100644 bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.preference.less delete mode 100644 bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.preference.js delete mode 100644 bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.preference.less delete mode 100644 bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.preference.js delete mode 100644 bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.preference.less delete mode 100644 bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.preference.js delete mode 100644 bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.preference.less delete mode 100644 bizui/src/bizcomponents/listaccess/ListAccess.preference.js delete mode 100644 bizui/src/bizcomponents/listaccess/ListAccess.preference.less delete mode 100644 bizui/src/bizcomponents/loginhistory/LoginHistory.preference.js delete mode 100644 bizui/src/bizcomponents/loginhistory/LoginHistory.preference.less delete mode 100644 bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.preference.js delete mode 100644 bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.preference.less delete mode 100644 bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.preference.js delete mode 100644 bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.preference.less delete mode 100644 bizui/src/bizcomponents/memberwishlist/MemberWishlist.preference.js delete mode 100644 bizui/src/bizcomponents/memberwishlist/MemberWishlist.preference.less delete mode 100644 bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.preference.js delete mode 100644 bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.preference.less delete mode 100644 bizui/src/bizcomponents/moyi/Moyi.preference.js delete mode 100644 bizui/src/bizcomponents/moyi/Moyi.preference.less delete mode 100644 bizui/src/bizcomponents/objectaccess/ObjectAccess.preference.js delete mode 100644 bizui/src/bizcomponents/objectaccess/ObjectAccess.preference.less delete mode 100644 bizui/src/bizcomponents/occupationtype/OccupationType.preference.js delete mode 100644 bizui/src/bizcomponents/occupationtype/OccupationType.preference.less delete mode 100644 bizui/src/bizcomponents/offeracceptance/OfferAcceptance.preference.js delete mode 100644 bizui/src/bizcomponents/offeracceptance/OfferAcceptance.preference.less delete mode 100644 bizui/src/bizcomponents/offerapproval/OfferApproval.preference.js delete mode 100644 bizui/src/bizcomponents/offerapproval/OfferApproval.preference.less delete mode 100644 bizui/src/bizcomponents/originalvoucher/OriginalVoucher.preference.js delete mode 100644 bizui/src/bizcomponents/originalvoucher/OriginalVoucher.preference.less delete mode 100644 bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.preference.js delete mode 100644 bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.preference.less delete mode 100644 bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.preference.js delete mode 100644 bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.preference.less delete mode 100644 bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.preference.js delete mode 100644 bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.preference.less delete mode 100644 bizui/src/bizcomponents/payingoff/PayingOff.preference.js delete mode 100644 bizui/src/bizcomponents/payingoff/PayingOff.preference.less delete mode 100644 bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.preference.js delete mode 100644 bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.preference.less delete mode 100644 bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.preference.js delete mode 100644 bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.preference.less delete mode 100644 bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.preference.js delete mode 100644 bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.preference.less delete mode 100644 bizui/src/bizcomponents/product/Product.preference.js delete mode 100644 bizui/src/bizcomponents/product/Product.preference.less delete mode 100644 bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.preference.js delete mode 100644 bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.preference.less delete mode 100644 bizui/src/bizcomponents/professioninterview/ProfessionInterview.preference.js delete mode 100644 bizui/src/bizcomponents/professioninterview/ProfessionInterview.preference.less delete mode 100644 bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.preference.js delete mode 100644 bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.preference.less delete mode 100644 bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.preference.js delete mode 100644 bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.preference.less delete mode 100644 bizui/src/bizcomponents/publicholiday/PublicHoliday.preference.js delete mode 100644 bizui/src/bizcomponents/publicholiday/PublicHoliday.preference.less delete mode 100644 bizui/src/bizcomponents/receivingspace/ReceivingSpace.preference.js delete mode 100644 bizui/src/bizcomponents/receivingspace/ReceivingSpace.preference.less delete mode 100644 bizui/src/bizcomponents/report/Report.preference.js delete mode 100644 bizui/src/bizcomponents/report/Report.preference.less delete mode 100644 bizui/src/bizcomponents/reportline/ReportLine.preference.js delete mode 100644 bizui/src/bizcomponents/reportline/ReportLine.preference.less delete mode 100644 bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.preference.js delete mode 100644 bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.preference.less delete mode 100644 bizui/src/bizcomponents/retailstore/RetailStore.preference.js delete mode 100644 bizui/src/bizcomponents/retailstore/RetailStore.preference.less delete mode 100644 bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.preference.js delete mode 100644 bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.preference.less delete mode 100644 bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.preference.js delete mode 100644 bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.preference.less delete mode 100644 bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.preference.js delete mode 100644 bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.preference.less delete mode 100644 bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.preference.js delete mode 100644 bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.preference.less delete mode 100644 bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.preference.js delete mode 100644 bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.preference.less delete mode 100644 bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.preference.js delete mode 100644 bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.preference.less delete mode 100644 bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.preference.js delete mode 100644 bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.preference.less delete mode 100644 bizui/src/bizcomponents/retailstoremember/RetailStoreMember.preference.js delete mode 100644 bizui/src/bizcomponents/retailstoremember/RetailStoreMember.preference.less delete mode 100644 bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.preference.js delete mode 100644 bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.preference.less delete mode 100644 bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.preference.js delete mode 100644 bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.preference.less delete mode 100644 bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.preference.js delete mode 100644 bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.preference.less delete mode 100644 bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.preference.js delete mode 100644 bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.preference.less delete mode 100644 bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.preference.js delete mode 100644 bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.preference.less delete mode 100644 bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.preference.js delete mode 100644 bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.preference.less delete mode 100644 bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.preference.js delete mode 100644 bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.preference.less delete mode 100644 bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.preference.js delete mode 100644 bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.preference.less delete mode 100644 bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.preference.js delete mode 100644 bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.preference.less delete mode 100644 bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.preference.js delete mode 100644 bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.preference.less delete mode 100644 bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.preference.js delete mode 100644 bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.preference.less delete mode 100644 bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.preference.js delete mode 100644 bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.preference.less delete mode 100644 bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.preference.js delete mode 100644 bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.preference.less delete mode 100644 bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.preference.js delete mode 100644 bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.preference.less delete mode 100644 bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.preference.js delete mode 100644 bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.preference.less delete mode 100644 bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.preference.js delete mode 100644 bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.preference.less delete mode 100644 bizui/src/bizcomponents/salarygrade/SalaryGrade.preference.js delete mode 100644 bizui/src/bizcomponents/salarygrade/SalaryGrade.preference.less delete mode 100644 bizui/src/bizcomponents/scoring/Scoring.preference.js delete mode 100644 bizui/src/bizcomponents/scoring/Scoring.preference.less delete mode 100644 bizui/src/bizcomponents/secuser/SecUser.preference.js delete mode 100644 bizui/src/bizcomponents/secuser/SecUser.preference.less delete mode 100644 bizui/src/bizcomponents/secuserblocking/SecUserBlocking.preference.js delete mode 100644 bizui/src/bizcomponents/secuserblocking/SecUserBlocking.preference.less delete mode 100644 bizui/src/bizcomponents/shippingspace/ShippingSpace.preference.js delete mode 100644 bizui/src/bizcomponents/shippingspace/ShippingSpace.preference.less delete mode 100644 bizui/src/bizcomponents/skilltype/SkillType.preference.js delete mode 100644 bizui/src/bizcomponents/skilltype/SkillType.preference.less delete mode 100644 bizui/src/bizcomponents/sku/Sku.preference.js delete mode 100644 bizui/src/bizcomponents/sku/Sku.preference.less delete mode 100644 bizui/src/bizcomponents/smartpallet/SmartPallet.preference.js delete mode 100644 bizui/src/bizcomponents/smartpallet/SmartPallet.preference.less delete mode 100644 bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.preference.js delete mode 100644 bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.preference.less delete mode 100644 bizui/src/bizcomponents/storagespace/StorageSpace.preference.js delete mode 100644 bizui/src/bizcomponents/storagespace/StorageSpace.preference.less delete mode 100644 bizui/src/bizcomponents/supplierproduct/SupplierProduct.preference.js delete mode 100644 bizui/src/bizcomponents/supplierproduct/SupplierProduct.preference.less delete mode 100644 bizui/src/bizcomponents/supplierspace/SupplierSpace.preference.js delete mode 100644 bizui/src/bizcomponents/supplierspace/SupplierSpace.preference.less delete mode 100644 bizui/src/bizcomponents/supplyorder/SupplyOrder.preference.js delete mode 100644 bizui/src/bizcomponents/supplyorder/SupplyOrder.preference.less delete mode 100644 bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.preference.js delete mode 100644 bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.preference.less delete mode 100644 bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.preference.js delete mode 100644 bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.preference.less delete mode 100644 bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.preference.js delete mode 100644 bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.preference.less delete mode 100644 bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.preference.js delete mode 100644 bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.preference.less delete mode 100644 bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.preference.js delete mode 100644 bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.preference.less delete mode 100644 bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.preference.js delete mode 100644 bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.preference.less delete mode 100644 bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.preference.js delete mode 100644 bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.preference.less delete mode 100644 bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.preference.js delete mode 100644 bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.preference.less delete mode 100644 bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.preference.js delete mode 100644 bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.preference.less delete mode 100644 bizui/src/bizcomponents/termination/Termination.preference.js delete mode 100644 bizui/src/bizcomponents/termination/Termination.preference.less delete mode 100644 bizui/src/bizcomponents/terminationreason/TerminationReason.preference.js delete mode 100644 bizui/src/bizcomponents/terminationreason/TerminationReason.preference.less delete mode 100644 bizui/src/bizcomponents/terminationtype/TerminationType.preference.js delete mode 100644 bizui/src/bizcomponents/terminationtype/TerminationType.preference.less delete mode 100644 bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.preference.js delete mode 100644 bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.preference.less delete mode 100644 bizui/src/bizcomponents/transportfleet/TransportFleet.preference.js delete mode 100644 bizui/src/bizcomponents/transportfleet/TransportFleet.preference.less delete mode 100644 bizui/src/bizcomponents/transporttask/TransportTask.preference.js delete mode 100644 bizui/src/bizcomponents/transporttask/TransportTask.preference.less delete mode 100644 bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.preference.js delete mode 100644 bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.preference.less delete mode 100644 bizui/src/bizcomponents/transporttruck/TransportTruck.preference.js delete mode 100644 bizui/src/bizcomponents/transporttruck/TransportTruck.preference.less delete mode 100644 bizui/src/bizcomponents/truckdriver/TruckDriver.preference.js delete mode 100644 bizui/src/bizcomponents/truckdriver/TruckDriver.preference.less delete mode 100644 bizui/src/bizcomponents/userapp/UserApp.preference.js delete mode 100644 bizui/src/bizcomponents/userapp/UserApp.preference.less delete mode 100644 bizui/src/bizcomponents/userdomain/UserDomain.preference.js delete mode 100644 bizui/src/bizcomponents/userdomain/UserDomain.preference.less delete mode 100644 bizui/src/bizcomponents/userwhitelist/UserWhiteList.preference.js delete mode 100644 bizui/src/bizcomponents/userwhitelist/UserWhiteList.preference.less delete mode 100644 bizui/src/bizcomponents/view/View.preference.js delete mode 100644 bizui/src/bizcomponents/view/View.preference.less delete mode 100644 bizui/src/bizcomponents/warehouse/Warehouse.preference.js delete mode 100644 bizui/src/bizcomponents/warehouse/Warehouse.preference.less delete mode 100644 bizui/src/bizcomponents/warehouseasset/WarehouseAsset.preference.js delete mode 100644 bizui/src/bizcomponents/warehouseasset/WarehouseAsset.preference.less diff --git a/backend-sync.sh b/backend-sync.sh index e72b72006..68f24016a 100644 --- a/backend-sync.sh +++ b/backend-sync.sh @@ -1,8 +1,10 @@ MODELNAME=retailscm +DEST_HOST=philip@demo.doublechaintech.com +cd ~/githome/${MODELNAME}-biz-suite/ && rm -rf bizcore/WEB-INF/${MODELNAME}_core_src java -jar ~/githome/splitter.jar ${MODELNAME} # cd ~/githome/${MODELNAME}-biz-suite/&& git pull --allow-unrelated-histories && cd ../ cd ~/githome/${MODELNAME}-biz-suite/bizcore&& ~/.sdkman/candidates/gradle/5.2.1/bin/gradle classes && cd ../../ -cd ~/githome/${MODELNAME}-biz-suite/ && rsync -avz bizcore/* philip@demo2.doublechaintech.com:~/resin-3.1.12/webapps/${MODELNAME}/ -ssh philip@demo2.doublechaintech.com "mysql -uroot -p0254891276 -h 127.0.0.1 < resin-3.1.12/webapps/${MODELNAME}/WEB-INF/${MODELNAME}_core_src/META-INF/${MODELNAME}_mysql.sql" +cd ~/githome/${MODELNAME}-biz-suite/ && rsync -avz bizcore/* ${DEST_HOST}:~/resin-3.1.12/webapps/${MODELNAME}/ +ssh ${DEST_HOST} "mysql -uroot -p0254891276 -h 127.0.0.1 < resin-3.1.12/webapps/${MODELNAME}/WEB-INF/${MODELNAME}_core_src/META-INF/${MODELNAME}_mysql.sql" diff --git a/bizui/src/axios/config.js b/bizui/src/axios/config.js index 2f40c019f..809babd19 100644 --- a/bizui/src/axios/config.js +++ b/bizui/src/axios/config.js @@ -1,7 +1,7 @@ -export const SYSTEM_SHORT_NAME = "retailscmgbase" //Use for requssting different apps +export const SYSTEM_SHORT_NAME = "retailscm" //Use for requssting different apps export const SYSTEM_LOCAL_NAME = "双链小超全流程供应链系统" -export const BUILD_TIIME="Mon May 20 12:23:42 CST 2019" +export const BUILD_TIIME="Wed Jul 03 14:06:54 CST 2019" export const MEDIA_UPLOAD_URL="https://www.doublechaintech.com/mss/upload.html" export const MEDIA_PREFIX="https://www.doublechaintech.com/mss/" diff --git a/bizui/src/bizcomponents/accountingdocument/AccountingDocument.associateform.js b/bizui/src/bizcomponents/accountingdocument/AccountingDocument.associateform.js index 5f316f57a..eadab889d 100644 --- a/bizui/src/bizcomponents/accountingdocument/AccountingDocument.associateform.js +++ b/bizui/src/bizcomponents/accountingdocument/AccountingDocument.associateform.js @@ -19,9 +19,9 @@ const testValues = {}; /* const testValues = { name: '记账凭证', - accountingDocumentDate: '2018-04-30', - accountingPeriodId: 'AP000001', - documentTypeId: 'ADT000001', + accountingDocumentDate: '2018-06-19', + accountingPeriodId: 'AP00000001', + documentTypeId: 'ADT00000001', } */ diff --git a/bizui/src/bizcomponents/accountingdocument/AccountingDocument.base.js b/bizui/src/bizcomponents/accountingdocument/AccountingDocument.base.js index e2ed21000..1f91abc53 100644 --- a/bizui/src/bizcomponents/accountingdocument/AccountingDocument.base.js +++ b/bizui/src/bizcomponents/accountingdocument/AccountingDocument.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -46,7 +47,7 @@ const fieldLabels = { creation: '创建', confirmation: '确认', auditing: '审计', - posting: '过账', + posting: '帖子', currentStatus: '当前状态', } @@ -65,33 +66,29 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({accountingDocument,targetComponent})=>{ +const renderItemOfList=(accountingDocument,targetComponent)=>{ - const {AccountingDocumentService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {accountingDocument.id} {accountingDocument.name} { moment(accountingDocument.accountingDocumentDate).format('YYYY-MM-DD')} {accountingDocument.accountingPeriod==null?appLocaleName(userContext,"NotAssigned"):`${accountingDocument.accountingPeriod.displayName}(${accountingDocument.accountingPeriod.id})`} - - showTransferModel(targetComponent,"会计期间","accountingPeriod",AccountingDocumentService.requestCandidateAccountingPeriod, - AccountingDocumentService.transferToAnotherAccountingPeriod,"anotherAccountingPeriodId",accountingDocument.accountingPeriod?accountingDocument.accountingPeriod.id:"")} - style={{fontSize: 20,color:"red"}} /> {accountingDocument.documentType==null?appLocaleName(userContext,"NotAssigned"):`${accountingDocument.documentType.displayName}(${accountingDocument.documentType.id})`} - - showTransferModel(targetComponent,"文档类型","accountingDocumentType",AccountingDocumentService.requestCandidateDocumentType, - AccountingDocumentService.transferToAnotherDocumentType,"anotherDocumentTypeId",accountingDocument.documentType?accountingDocument.documentType.id:"")} - style={{fontSize: 20,color:"red"}} /> {accountingDocument.currentStatus} - {buildTransferModal(accountingDocument,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/accountingdocument/AccountingDocument.createform.js b/bizui/src/bizcomponents/accountingdocument/AccountingDocument.createform.js index a53fdde00..95bfa06ce 100644 --- a/bizui/src/bizcomponents/accountingdocument/AccountingDocument.createform.js +++ b/bizui/src/bizcomponents/accountingdocument/AccountingDocument.createform.js @@ -18,9 +18,9 @@ const testValues = {}; /* const testValues = { name: '记账凭证', - accountingDocumentDate: '2018-08-10', - accountingPeriodId: 'AP000001', - documentTypeId: 'ADT000001', + accountingDocumentDate: '2019-06-03', + accountingPeriodId: 'AP00000001', + documentTypeId: 'ADT00000001', } */ diff --git a/bizui/src/bizcomponents/accountingdocument/AccountingDocument.dashboard.js b/bizui/src/bizcomponents/accountingdocument/AccountingDocument.dashboard.js index 9a447c6b4..9b57d6aa1 100644 --- a/bizui/src/bizcomponents/accountingdocument/AccountingDocument.dashboard.js +++ b/bizui/src/bizcomponents/accountingdocument/AccountingDocument.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(accountingDocument)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (accountingDocument) =>defaultSettingListOf(accountingDocument, optionList) const internalLargeTextOf = (accountingDocument) =>{ @@ -137,8 +137,8 @@ class AccountingDocumentDashboard extends Component { const cardsData = {cardsName:"会计凭证",cardsFor: "accountingDocument", cardsSource: this.props.accountingDocument,returnURL,displayName, subItems: [ -{name: 'originalVoucherList', displayName:'原始凭证',type:'originalVoucher',count:originalVoucherCount,addFunction: true, role: 'originalVoucher', metaInfo: originalVoucherListMetaInfo}, -{name: 'accountingDocumentLineList', displayName:'会计凭证行',type:'accountingDocumentLine',count:accountingDocumentLineCount,addFunction: true, role: 'accountingDocumentLine', metaInfo: accountingDocumentLineListMetaInfo}, +{name: 'originalVoucherList', displayName:'原始凭证',type:'originalVoucher',count:originalVoucherCount,addFunction: true, role: 'originalVoucher', metaInfo: originalVoucherListMetaInfo, renderItem: GlobalComponents.OriginalVoucherBase.renderItemOfList}, +{name: 'accountingDocumentLineList', displayName:'会计凭证行',type:'accountingDocumentLine',count:accountingDocumentLineCount,addFunction: true, role: 'accountingDocumentLine', metaInfo: accountingDocumentLineListMetaInfo, renderItem: GlobalComponents.AccountingDocumentLineBase.renderItemOfList}, ], }; @@ -153,6 +153,8 @@ class AccountingDocumentDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/accountingdocument/AccountingDocument.permission.js b/bizui/src/bizcomponents/accountingdocument/AccountingDocument.permission.js index 6f73ae08b..49633f2b2 100644 --- a/bizui/src/bizcomponents/accountingdocument/AccountingDocument.permission.js +++ b/bizui/src/bizcomponents/accountingdocument/AccountingDocument.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './AccountingDocument.preference.less' +import styles from './AccountingDocument.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/accountingdocument/AccountingDocument.preference.js b/bizui/src/bizcomponents/accountingdocument/AccountingDocument.preference.js deleted file mode 100644 index 1aaeed578..000000000 --- a/bizui/src/bizcomponents/accountingdocument/AccountingDocument.preference.js +++ /dev/null @@ -1,363 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './AccountingDocument.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (accountingDocument) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (accountingDocument) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (accountingDocument) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {AccountingDocumentService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = AccountingDocumentService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (accountingDocument,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=accountingDocument.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_accountingDocument/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (accountingDocument,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(accountingDocument,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (accountingDocument) =>{ - return null -} -const internalRenderExtraFooter = (accountingDocument) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (accountingDocument,targetComponent) =>{ - const userContext = null - return ( - -{accountingDocument.id} -{accountingDocument.name} -{ moment(accountingDocument.accountingDocumentDate).format('YYYY-MM-DD')} -{accountingDocument.accountingPeriod==null?appLocaleName(userContext,"NotAssigned"):accountingDocument.accountingPeriod.displayName} - - showTransferModel(targetComponent,"会计期间","accountingPeriod","requestCandidateAccountingPeriod", - "transferToAnotherAccountingPeriod","anotherAccountingPeriodId",accountingDocument.accountingPeriod?accountingDocument.accountingPeriod.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{accountingDocument.documentType==null?appLocaleName(userContext,"NotAssigned"):accountingDocument.documentType.displayName} - - showTransferModel(targetComponent,"文档类型","accountingDocumentType","requestCandidateDocumentType", - "transferToAnotherDocumentType","anotherDocumentTypeId",accountingDocument.documentType?accountingDocument.documentType.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{accountingDocument.currentStatus} - - {buildTransferModal(accountingDocument,targetComponent)} - - ) - -} - - -const renderPermissionSetting = accountingDocument => { - const {AccountingDocumentBase} = GlobalComponents - return - - -} - - -class AccountingDocumentPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const accountingDocument = this.props.accountingDocument; - const { id,displayName, originalVoucherCount, accountingDocumentLineCount } = accountingDocument - - - - const cardsData = {cardsName:"会计凭证",cardsFor: "accountingDocument",cardsSource: accountingDocument, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - accountingDocument: state._accountingDocument, -}))(Form.create()(AccountingDocumentPreference)) - diff --git a/bizui/src/bizcomponents/accountingdocument/AccountingDocument.preference.less b/bizui/src/bizcomponents/accountingdocument/AccountingDocument.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/accountingdocument/AccountingDocument.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/accountingdocument/AccountingDocument.profile.js b/bizui/src/bizcomponents/accountingdocument/AccountingDocument.profile.js index 75072ec5e..063802314 100644 --- a/bizui/src/bizcomponents/accountingdocument/AccountingDocument.profile.js +++ b/bizui/src/bizcomponents/accountingdocument/AccountingDocument.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './AccountingDocument.preference.less' +import styles from './AccountingDocument.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,18 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (accountingDocument,targetComponent) =>{ - const userContext = null - return ( - -{accountingDocument.id} -{accountingDocument.name} -{ moment(accountingDocument.accountingDocumentDate).format('YYYY-MM-DD')} -{accountingDocument.currentStatus} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.AccountingDocumentBase.renderItemOfList(item, targetComponents) + } @@ -65,13 +58,14 @@ class AccountingDocumentProfile extends Component { const cardsData = {cardsName:"会计凭证",cardsFor: "accountingDocument",cardsSource: accountingDocument, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -81,7 +75,7 @@ class AccountingDocumentProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.associateform.js b/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.associateform.js index 62f11a100..27018f9ff 100644 --- a/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.associateform.js +++ b/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.associateform.js @@ -20,7 +20,7 @@ const testValues = {}; const testValues = { who: '财务会计', comments: '审核通过,要都审核过了才通过哦', - makeDate: '2017-07-21', + makeDate: '2017-09-05', } */ diff --git a/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.base.js b/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.base.js index 75f6e54ad..61c54370d 100644 --- a/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.base.js +++ b/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -52,21 +53,25 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({accountingDocumentAuditing,targetComponent})=>{ +const renderItemOfList=(accountingDocumentAuditing,targetComponent)=>{ - const {AccountingDocumentAuditingService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {accountingDocumentAuditing.id} {accountingDocumentAuditing.who} {accountingDocumentAuditing.comments} { moment(accountingDocumentAuditing.makeDate).format('YYYY-MM-DD')} - {buildTransferModal(accountingDocumentAuditing,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.createform.js b/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.createform.js index 68e292418..5f5d57684 100644 --- a/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.createform.js +++ b/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.createform.js @@ -19,7 +19,7 @@ const testValues = {}; const testValues = { who: '财务会计', comments: '审核通过,要都审核过了才通过哦', - makeDate: '2018-04-21', + makeDate: '2017-10-14', } */ diff --git a/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.dashboard.js b/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.dashboard.js index 754f4754c..739516760 100644 --- a/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.dashboard.js +++ b/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(accountingDocumentAuditing)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (accountingDocumentAuditing) =>defaultSettingListOf(accountingDocumentAuditing, optionList) const internalLargeTextOf = (accountingDocumentAuditing) =>{ @@ -125,7 +125,7 @@ class AccountingDocumentAuditingDashboard extends Component { const cardsData = {cardsName:"会计凭证的审核",cardsFor: "accountingDocumentAuditing", cardsSource: this.props.accountingDocumentAuditing,returnURL,displayName, subItems: [ -{name: 'accountingDocumentList', displayName:'会计凭证',type:'accountingDocument',count:accountingDocumentCount,addFunction: true, role: 'accountingDocument', metaInfo: accountingDocumentListMetaInfo}, +{name: 'accountingDocumentList', displayName:'会计凭证',type:'accountingDocument',count:accountingDocumentCount,addFunction: true, role: 'accountingDocument', metaInfo: accountingDocumentListMetaInfo, renderItem: GlobalComponents.AccountingDocumentBase.renderItemOfList}, ], }; @@ -140,6 +140,8 @@ class AccountingDocumentAuditingDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.permission.js b/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.permission.js index c3e4ebb9c..c6b3f4efe 100644 --- a/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.permission.js +++ b/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './AccountingDocumentAuditing.preference.less' +import styles from './AccountingDocumentAuditing.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.preference.js b/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.preference.js deleted file mode 100644 index 78e75a435..000000000 --- a/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.preference.js +++ /dev/null @@ -1,351 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './AccountingDocumentAuditing.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (accountingDocumentAuditing) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (accountingDocumentAuditing) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (accountingDocumentAuditing) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {AccountingDocumentAuditingService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = AccountingDocumentAuditingService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (accountingDocumentAuditing,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=accountingDocumentAuditing.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_accountingDocumentAuditing/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (accountingDocumentAuditing,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(accountingDocumentAuditing,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (accountingDocumentAuditing) =>{ - return null -} -const internalRenderExtraFooter = (accountingDocumentAuditing) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (accountingDocumentAuditing,targetComponent) =>{ - const userContext = null - return ( - -{accountingDocumentAuditing.id} -{accountingDocumentAuditing.who} -{accountingDocumentAuditing.comments} -{ moment(accountingDocumentAuditing.makeDate).format('YYYY-MM-DD')} - - {buildTransferModal(accountingDocumentAuditing,targetComponent)} - - ) - -} - - -const renderPermissionSetting = accountingDocumentAuditing => { - const {AccountingDocumentAuditingBase} = GlobalComponents - return - - -} - - -class AccountingDocumentAuditingPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const accountingDocumentAuditing = this.props.accountingDocumentAuditing; - const { id,displayName, accountingDocumentCount } = accountingDocumentAuditing - - - - const cardsData = {cardsName:"会计凭证的审核",cardsFor: "accountingDocumentAuditing",cardsSource: accountingDocumentAuditing, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - accountingDocumentAuditing: state._accountingDocumentAuditing, -}))(Form.create()(AccountingDocumentAuditingPreference)) - diff --git a/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.preference.less b/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.profile.js b/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.profile.js index bfe9a8350..0c9ff05ee 100644 --- a/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.profile.js +++ b/bizui/src/bizcomponents/accountingdocumentauditing/AccountingDocumentAuditing.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './AccountingDocumentAuditing.preference.less' +import styles from './AccountingDocumentAuditing.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,18 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (accountingDocumentAuditing,targetComponent) =>{ - const userContext = null - return ( - -{accountingDocumentAuditing.id} -{accountingDocumentAuditing.who} -{accountingDocumentAuditing.comments} -{ moment(accountingDocumentAuditing.makeDate).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.AccountingDocumentAuditingBase.renderItemOfList(item, targetComponents) + } @@ -65,13 +58,14 @@ class AccountingDocumentAuditingProfile extends Component { const cardsData = {cardsName:"会计凭证的审核",cardsFor: "accountingDocumentAuditing",cardsSource: accountingDocumentAuditing, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -81,7 +75,7 @@ class AccountingDocumentAuditingProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.associateform.js b/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.associateform.js index ff6f3e507..b1f838331 100644 --- a/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.associateform.js +++ b/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.associateform.js @@ -20,7 +20,7 @@ const testValues = {}; const testValues = { who: '财务会计', comments: '确认通过', - makeDate: '2016-10-29', + makeDate: '2017-03-09', } */ diff --git a/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.base.js b/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.base.js index 245ea7a5e..6543d2f63 100644 --- a/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.base.js +++ b/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -52,21 +53,25 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({accountingDocumentConfirmation,targetComponent})=>{ +const renderItemOfList=(accountingDocumentConfirmation,targetComponent)=>{ - const {AccountingDocumentConfirmationService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {accountingDocumentConfirmation.id} {accountingDocumentConfirmation.who} {accountingDocumentConfirmation.comments} { moment(accountingDocumentConfirmation.makeDate).format('YYYY-MM-DD')} - {buildTransferModal(accountingDocumentConfirmation,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.createform.js b/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.createform.js index 907c6a36c..f414d6068 100644 --- a/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.createform.js +++ b/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.createform.js @@ -19,7 +19,7 @@ const testValues = {}; const testValues = { who: '财务会计', comments: '确认通过', - makeDate: '2016-10-28', + makeDate: '2017-02-17', } */ diff --git a/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.dashboard.js b/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.dashboard.js index 5f77b6664..a02549abe 100644 --- a/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.dashboard.js +++ b/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(accountingDocumentConfirmation)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (accountingDocumentConfirmation) =>defaultSettingListOf(accountingDocumentConfirmation, optionList) const internalLargeTextOf = (accountingDocumentConfirmation) =>{ @@ -125,7 +125,7 @@ class AccountingDocumentConfirmationDashboard extends Component { const cardsData = {cardsName:"会计的确认文件",cardsFor: "accountingDocumentConfirmation", cardsSource: this.props.accountingDocumentConfirmation,returnURL,displayName, subItems: [ -{name: 'accountingDocumentList', displayName:'会计凭证',type:'accountingDocument',count:accountingDocumentCount,addFunction: true, role: 'accountingDocument', metaInfo: accountingDocumentListMetaInfo}, +{name: 'accountingDocumentList', displayName:'会计凭证',type:'accountingDocument',count:accountingDocumentCount,addFunction: true, role: 'accountingDocument', metaInfo: accountingDocumentListMetaInfo, renderItem: GlobalComponents.AccountingDocumentBase.renderItemOfList}, ], }; @@ -140,6 +140,8 @@ class AccountingDocumentConfirmationDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.permission.js b/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.permission.js index 06588db5d..96a08f217 100644 --- a/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.permission.js +++ b/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './AccountingDocumentConfirmation.preference.less' +import styles from './AccountingDocumentConfirmation.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.preference.js b/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.preference.js deleted file mode 100644 index 7013ced39..000000000 --- a/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.preference.js +++ /dev/null @@ -1,351 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './AccountingDocumentConfirmation.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (accountingDocumentConfirmation) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (accountingDocumentConfirmation) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (accountingDocumentConfirmation) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {AccountingDocumentConfirmationService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = AccountingDocumentConfirmationService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (accountingDocumentConfirmation,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=accountingDocumentConfirmation.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_accountingDocumentConfirmation/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (accountingDocumentConfirmation,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(accountingDocumentConfirmation,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (accountingDocumentConfirmation) =>{ - return null -} -const internalRenderExtraFooter = (accountingDocumentConfirmation) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (accountingDocumentConfirmation,targetComponent) =>{ - const userContext = null - return ( - -{accountingDocumentConfirmation.id} -{accountingDocumentConfirmation.who} -{accountingDocumentConfirmation.comments} -{ moment(accountingDocumentConfirmation.makeDate).format('YYYY-MM-DD')} - - {buildTransferModal(accountingDocumentConfirmation,targetComponent)} - - ) - -} - - -const renderPermissionSetting = accountingDocumentConfirmation => { - const {AccountingDocumentConfirmationBase} = GlobalComponents - return - - -} - - -class AccountingDocumentConfirmationPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const accountingDocumentConfirmation = this.props.accountingDocumentConfirmation; - const { id,displayName, accountingDocumentCount } = accountingDocumentConfirmation - - - - const cardsData = {cardsName:"会计的确认文件",cardsFor: "accountingDocumentConfirmation",cardsSource: accountingDocumentConfirmation, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - accountingDocumentConfirmation: state._accountingDocumentConfirmation, -}))(Form.create()(AccountingDocumentConfirmationPreference)) - diff --git a/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.preference.less b/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.profile.js b/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.profile.js index 3ea2bd3c5..a4b953716 100644 --- a/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.profile.js +++ b/bizui/src/bizcomponents/accountingdocumentconfirmation/AccountingDocumentConfirmation.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './AccountingDocumentConfirmation.preference.less' +import styles from './AccountingDocumentConfirmation.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,18 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (accountingDocumentConfirmation,targetComponent) =>{ - const userContext = null - return ( - -{accountingDocumentConfirmation.id} -{accountingDocumentConfirmation.who} -{accountingDocumentConfirmation.comments} -{ moment(accountingDocumentConfirmation.makeDate).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.AccountingDocumentConfirmationBase.renderItemOfList(item, targetComponents) + } @@ -65,13 +58,14 @@ class AccountingDocumentConfirmationProfile extends Component { const cardsData = {cardsName:"会计的确认文件",cardsFor: "accountingDocumentConfirmation",cardsSource: accountingDocumentConfirmation, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -81,7 +75,7 @@ class AccountingDocumentConfirmationProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.associateform.js b/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.associateform.js index d5e7bc16c..71a65c6d0 100644 --- a/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.associateform.js +++ b/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.associateform.js @@ -20,7 +20,7 @@ const testValues = {}; const testValues = { who: '财务会计', comments: '确认提交', - makeDate: '2018-07-09', + makeDate: '2016-08-03', } */ diff --git a/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.base.js b/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.base.js index 86e40f01c..d07a74d57 100644 --- a/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.base.js +++ b/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -52,21 +53,25 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({accountingDocumentCreation,targetComponent})=>{ +const renderItemOfList=(accountingDocumentCreation,targetComponent)=>{ - const {AccountingDocumentCreationService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {accountingDocumentCreation.id} {accountingDocumentCreation.who} {accountingDocumentCreation.comments} { moment(accountingDocumentCreation.makeDate).format('YYYY-MM-DD')} - {buildTransferModal(accountingDocumentCreation,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.createform.js b/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.createform.js index 666438cc3..d15d9b1bc 100644 --- a/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.createform.js +++ b/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.createform.js @@ -19,7 +19,7 @@ const testValues = {}; const testValues = { who: '财务会计', comments: '确认提交', - makeDate: '2018-06-25', + makeDate: '2018-03-31', } */ diff --git a/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.dashboard.js b/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.dashboard.js index 262acbcff..14d73ba83 100644 --- a/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.dashboard.js +++ b/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(accountingDocumentCreation)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (accountingDocumentCreation) =>defaultSettingListOf(accountingDocumentCreation, optionList) const internalLargeTextOf = (accountingDocumentCreation) =>{ @@ -125,7 +125,7 @@ class AccountingDocumentCreationDashboard extends Component { const cardsData = {cardsName:"会计文件的创建",cardsFor: "accountingDocumentCreation", cardsSource: this.props.accountingDocumentCreation,returnURL,displayName, subItems: [ -{name: 'accountingDocumentList', displayName:'会计凭证',type:'accountingDocument',count:accountingDocumentCount,addFunction: true, role: 'accountingDocument', metaInfo: accountingDocumentListMetaInfo}, +{name: 'accountingDocumentList', displayName:'会计凭证',type:'accountingDocument',count:accountingDocumentCount,addFunction: true, role: 'accountingDocument', metaInfo: accountingDocumentListMetaInfo, renderItem: GlobalComponents.AccountingDocumentBase.renderItemOfList}, ], }; @@ -140,6 +140,8 @@ class AccountingDocumentCreationDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.permission.js b/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.permission.js index 6d776d740..9f82d3e53 100644 --- a/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.permission.js +++ b/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './AccountingDocumentCreation.preference.less' +import styles from './AccountingDocumentCreation.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.preference.js b/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.preference.js deleted file mode 100644 index bcde6bc88..000000000 --- a/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.preference.js +++ /dev/null @@ -1,351 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './AccountingDocumentCreation.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (accountingDocumentCreation) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (accountingDocumentCreation) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (accountingDocumentCreation) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {AccountingDocumentCreationService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = AccountingDocumentCreationService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (accountingDocumentCreation,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=accountingDocumentCreation.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_accountingDocumentCreation/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (accountingDocumentCreation,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(accountingDocumentCreation,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (accountingDocumentCreation) =>{ - return null -} -const internalRenderExtraFooter = (accountingDocumentCreation) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (accountingDocumentCreation,targetComponent) =>{ - const userContext = null - return ( - -{accountingDocumentCreation.id} -{accountingDocumentCreation.who} -{accountingDocumentCreation.comments} -{ moment(accountingDocumentCreation.makeDate).format('YYYY-MM-DD')} - - {buildTransferModal(accountingDocumentCreation,targetComponent)} - - ) - -} - - -const renderPermissionSetting = accountingDocumentCreation => { - const {AccountingDocumentCreationBase} = GlobalComponents - return - - -} - - -class AccountingDocumentCreationPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const accountingDocumentCreation = this.props.accountingDocumentCreation; - const { id,displayName, accountingDocumentCount } = accountingDocumentCreation - - - - const cardsData = {cardsName:"会计文件的创建",cardsFor: "accountingDocumentCreation",cardsSource: accountingDocumentCreation, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - accountingDocumentCreation: state._accountingDocumentCreation, -}))(Form.create()(AccountingDocumentCreationPreference)) - diff --git a/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.preference.less b/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.profile.js b/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.profile.js index 096d6d74a..4e9f71a5c 100644 --- a/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.profile.js +++ b/bizui/src/bizcomponents/accountingdocumentcreation/AccountingDocumentCreation.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './AccountingDocumentCreation.preference.less' +import styles from './AccountingDocumentCreation.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,18 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (accountingDocumentCreation,targetComponent) =>{ - const userContext = null - return ( - -{accountingDocumentCreation.id} -{accountingDocumentCreation.who} -{accountingDocumentCreation.comments} -{ moment(accountingDocumentCreation.makeDate).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.AccountingDocumentCreationBase.renderItemOfList(item, targetComponents) + } @@ -65,13 +58,14 @@ class AccountingDocumentCreationProfile extends Component { const cardsData = {cardsName:"会计文件的创建",cardsFor: "accountingDocumentCreation",cardsSource: accountingDocumentCreation, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -81,7 +75,7 @@ class AccountingDocumentCreationProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.associateform.js b/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.associateform.js index 862c76127..53ebf90d8 100644 --- a/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.associateform.js +++ b/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.associateform.js @@ -21,9 +21,9 @@ const testValues = { name: '收到存款', code: 'AS9999', direct: '借', - amount: '963564.88', - belongsToId: 'AD000001', - accountingSubjectId: 'AS000001', + amount: '978118.25', + belongsToId: 'AD00000001', + accountingSubjectId: 'AS00000001', } */ diff --git a/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.base.js b/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.base.js index f0c8ceb89..1cfa20486 100644 --- a/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.base.js +++ b/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -57,34 +58,30 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({accountingDocumentLine,targetComponent})=>{ +const renderItemOfList=(accountingDocumentLine,targetComponent)=>{ - const {AccountingDocumentLineService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {accountingDocumentLine.id} {accountingDocumentLine.name} {accountingDocumentLine.code} {accountingDocumentLine.direct} {accountingDocumentLine.amount} {accountingDocumentLine.belongsTo==null?appLocaleName(userContext,"NotAssigned"):`${accountingDocumentLine.belongsTo.displayName}(${accountingDocumentLine.belongsTo.id})`} - - showTransferModel(targetComponent,"属于","accountingDocument",AccountingDocumentLineService.requestCandidateBelongsTo, - AccountingDocumentLineService.transferToAnotherBelongsTo,"anotherBelongsToId",accountingDocumentLine.belongsTo?accountingDocumentLine.belongsTo.id:"")} - style={{fontSize: 20,color:"red"}} /> {accountingDocumentLine.accountingSubject==null?appLocaleName(userContext,"NotAssigned"):`${accountingDocumentLine.accountingSubject.displayName}(${accountingDocumentLine.accountingSubject.id})`} - - showTransferModel(targetComponent,"会计科目","accountingSubject",AccountingDocumentLineService.requestCandidateAccountingSubject, - AccountingDocumentLineService.transferToAnotherAccountingSubject,"anotherAccountingSubjectId",accountingDocumentLine.accountingSubject?accountingDocumentLine.accountingSubject.id:"")} - style={{fontSize: 20,color:"red"}} /> - {buildTransferModal(accountingDocumentLine,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.createform.js b/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.createform.js index 9ec0ce39d..1cf530031 100644 --- a/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.createform.js +++ b/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.createform.js @@ -20,9 +20,9 @@ const testValues = { name: '收到存款', code: 'AS9999', direct: '借', - amount: '788448.31', - belongsToId: 'AD000001', - accountingSubjectId: 'AS000001', + amount: '766616.19', + belongsToId: 'AD00000001', + accountingSubjectId: 'AS00000001', } */ diff --git a/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.dashboard.js b/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.dashboard.js index 9483cac58..d98bd697e 100644 --- a/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.dashboard.js +++ b/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(accountingDocumentLine)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (accountingDocumentLine) =>defaultSettingListOf(accountingDocumentLine, optionList) const internalLargeTextOf = (accountingDocumentLine) =>{ @@ -152,6 +152,8 @@ class AccountingDocumentLineDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.permission.js b/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.permission.js index 981666881..66db4e780 100644 --- a/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.permission.js +++ b/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './AccountingDocumentLine.preference.less' +import styles from './AccountingDocumentLine.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.preference.js b/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.preference.js deleted file mode 100644 index 9380a1935..000000000 --- a/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.preference.js +++ /dev/null @@ -1,364 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './AccountingDocumentLine.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (accountingDocumentLine) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (accountingDocumentLine) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (accountingDocumentLine) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {AccountingDocumentLineService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = AccountingDocumentLineService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (accountingDocumentLine,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=accountingDocumentLine.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_accountingDocumentLine/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (accountingDocumentLine,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(accountingDocumentLine,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (accountingDocumentLine) =>{ - return null -} -const internalRenderExtraFooter = (accountingDocumentLine) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (accountingDocumentLine,targetComponent) =>{ - const userContext = null - return ( - -{accountingDocumentLine.id} -{accountingDocumentLine.name} -{accountingDocumentLine.code} -{accountingDocumentLine.direct} -{accountingDocumentLine.amount} -{accountingDocumentLine.belongsTo==null?appLocaleName(userContext,"NotAssigned"):accountingDocumentLine.belongsTo.displayName} - - showTransferModel(targetComponent,"属于","accountingDocument","requestCandidateBelongsTo", - "transferToAnotherBelongsTo","anotherBelongsToId",accountingDocumentLine.belongsTo?accountingDocumentLine.belongsTo.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{accountingDocumentLine.accountingSubject==null?appLocaleName(userContext,"NotAssigned"):accountingDocumentLine.accountingSubject.displayName} - - showTransferModel(targetComponent,"会计科目","accountingSubject","requestCandidateAccountingSubject", - "transferToAnotherAccountingSubject","anotherAccountingSubjectId",accountingDocumentLine.accountingSubject?accountingDocumentLine.accountingSubject.id:"")} - style={{fontSize: 20,color:"red"}} /> - - - {buildTransferModal(accountingDocumentLine,targetComponent)} - - ) - -} - - -const renderPermissionSetting = accountingDocumentLine => { - const {AccountingDocumentLineBase} = GlobalComponents - return - - -} - - -class AccountingDocumentLinePreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const accountingDocumentLine = this.props.accountingDocumentLine; - const { id,displayName, } = accountingDocumentLine - - - - const cardsData = {cardsName:"会计凭证行",cardsFor: "accountingDocumentLine",cardsSource: accountingDocumentLine, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - accountingDocumentLine: state._accountingDocumentLine, -}))(Form.create()(AccountingDocumentLinePreference)) - diff --git a/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.preference.less b/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.profile.js b/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.profile.js index 75ee4b72b..eb3ba03ce 100644 --- a/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.profile.js +++ b/bizui/src/bizcomponents/accountingdocumentline/AccountingDocumentLine.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './AccountingDocumentLine.preference.less' +import styles from './AccountingDocumentLine.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,19 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (accountingDocumentLine,targetComponent) =>{ - const userContext = null - return ( - -{accountingDocumentLine.id} -{accountingDocumentLine.name} -{accountingDocumentLine.code} -{accountingDocumentLine.direct} -{accountingDocumentLine.amount} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.AccountingDocumentLineBase.renderItemOfList(item, targetComponents) + } @@ -66,13 +58,14 @@ class AccountingDocumentLineProfile extends Component { const cardsData = {cardsName:"会计凭证行",cardsFor: "accountingDocumentLine",cardsSource: accountingDocumentLine, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -82,7 +75,7 @@ class AccountingDocumentLineProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.associateform.js b/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.associateform.js index abd44a588..a69061637 100644 --- a/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.associateform.js +++ b/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.associateform.js @@ -20,7 +20,7 @@ const testValues = {}; const testValues = { who: '财务会计', comments: '审核通过,要都审核过了才通过哦', - makeDate: '2018-11-29', + makeDate: '2016-09-13', } */ diff --git a/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.base.js b/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.base.js index 203365f1d..96e6fe18d 100644 --- a/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.base.js +++ b/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -52,21 +53,25 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({accountingDocumentPosting,targetComponent})=>{ +const renderItemOfList=(accountingDocumentPosting,targetComponent)=>{ - const {AccountingDocumentPostingService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {accountingDocumentPosting.id} {accountingDocumentPosting.who} {accountingDocumentPosting.comments} { moment(accountingDocumentPosting.makeDate).format('YYYY-MM-DD')} - {buildTransferModal(accountingDocumentPosting,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.createform.js b/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.createform.js index 50870eb1e..0810bef87 100644 --- a/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.createform.js +++ b/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.createform.js @@ -19,7 +19,7 @@ const testValues = {}; const testValues = { who: '财务会计', comments: '审核通过,要都审核过了才通过哦', - makeDate: '2016-06-15', + makeDate: '2018-06-18', } */ diff --git a/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.dashboard.js b/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.dashboard.js index ea04a792a..6e630d48c 100644 --- a/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.dashboard.js +++ b/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(accountingDocumentPosting)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (accountingDocumentPosting) =>defaultSettingListOf(accountingDocumentPosting, optionList) const internalLargeTextOf = (accountingDocumentPosting) =>{ @@ -125,7 +125,7 @@ class AccountingDocumentPostingDashboard extends Component { const cardsData = {cardsName:"会计凭证过帐",cardsFor: "accountingDocumentPosting", cardsSource: this.props.accountingDocumentPosting,returnURL,displayName, subItems: [ -{name: 'accountingDocumentList', displayName:'会计凭证',type:'accountingDocument',count:accountingDocumentCount,addFunction: true, role: 'accountingDocument', metaInfo: accountingDocumentListMetaInfo}, +{name: 'accountingDocumentList', displayName:'会计凭证',type:'accountingDocument',count:accountingDocumentCount,addFunction: true, role: 'accountingDocument', metaInfo: accountingDocumentListMetaInfo, renderItem: GlobalComponents.AccountingDocumentBase.renderItemOfList}, ], }; @@ -140,6 +140,8 @@ class AccountingDocumentPostingDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.permission.js b/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.permission.js index bab17d325..70676b9ce 100644 --- a/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.permission.js +++ b/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './AccountingDocumentPosting.preference.less' +import styles from './AccountingDocumentPosting.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.preference.js b/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.preference.js deleted file mode 100644 index d4b412131..000000000 --- a/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.preference.js +++ /dev/null @@ -1,351 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './AccountingDocumentPosting.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (accountingDocumentPosting) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (accountingDocumentPosting) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (accountingDocumentPosting) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {AccountingDocumentPostingService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = AccountingDocumentPostingService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (accountingDocumentPosting,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=accountingDocumentPosting.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_accountingDocumentPosting/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (accountingDocumentPosting,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(accountingDocumentPosting,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (accountingDocumentPosting) =>{ - return null -} -const internalRenderExtraFooter = (accountingDocumentPosting) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (accountingDocumentPosting,targetComponent) =>{ - const userContext = null - return ( - -{accountingDocumentPosting.id} -{accountingDocumentPosting.who} -{accountingDocumentPosting.comments} -{ moment(accountingDocumentPosting.makeDate).format('YYYY-MM-DD')} - - {buildTransferModal(accountingDocumentPosting,targetComponent)} - - ) - -} - - -const renderPermissionSetting = accountingDocumentPosting => { - const {AccountingDocumentPostingBase} = GlobalComponents - return - - -} - - -class AccountingDocumentPostingPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const accountingDocumentPosting = this.props.accountingDocumentPosting; - const { id,displayName, accountingDocumentCount } = accountingDocumentPosting - - - - const cardsData = {cardsName:"会计凭证过帐",cardsFor: "accountingDocumentPosting",cardsSource: accountingDocumentPosting, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - accountingDocumentPosting: state._accountingDocumentPosting, -}))(Form.create()(AccountingDocumentPostingPreference)) - diff --git a/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.preference.less b/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.profile.js b/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.profile.js index b0cd9d2c3..4b8e5a887 100644 --- a/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.profile.js +++ b/bizui/src/bizcomponents/accountingdocumentposting/AccountingDocumentPosting.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './AccountingDocumentPosting.preference.less' +import styles from './AccountingDocumentPosting.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,18 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (accountingDocumentPosting,targetComponent) =>{ - const userContext = null - return ( - -{accountingDocumentPosting.id} -{accountingDocumentPosting.who} -{accountingDocumentPosting.comments} -{ moment(accountingDocumentPosting.makeDate).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.AccountingDocumentPostingBase.renderItemOfList(item, targetComponents) + } @@ -65,13 +58,14 @@ class AccountingDocumentPostingProfile extends Component { const cardsData = {cardsName:"会计凭证过帐",cardsFor: "accountingDocumentPosting",cardsSource: accountingDocumentPosting, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -81,7 +75,7 @@ class AccountingDocumentPostingProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.associateform.js b/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.associateform.js index 5a57c43e2..d392c3d36 100644 --- a/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.associateform.js +++ b/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.associateform.js @@ -20,7 +20,7 @@ const testValues = {}; const testValues = { name: '记账凭证', description: '又称记账凭单,是会计人员根据审核无误的原始凭证按照经济业务事项的内容加以分类,并据以确定会计分录后所填制的会计凭证。它是登记账簿的直接依据。', - accountingPeriodId: 'AS000001', + accountingPeriodId: 'AS00000001', } */ diff --git a/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.base.js b/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.base.js index f1c7d4f04..e11fd146e 100644 --- a/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.base.js +++ b/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -52,26 +53,26 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({accountingDocumentType,targetComponent})=>{ +const renderItemOfList=(accountingDocumentType,targetComponent)=>{ - const {AccountingDocumentTypeService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {accountingDocumentType.id} {accountingDocumentType.name} {accountingDocumentType.description} {accountingDocumentType.accountingPeriod==null?appLocaleName(userContext,"NotAssigned"):`${accountingDocumentType.accountingPeriod.displayName}(${accountingDocumentType.accountingPeriod.id})`} - - showTransferModel(targetComponent,"会计期间","accountSet",AccountingDocumentTypeService.requestCandidateAccountingPeriod, - AccountingDocumentTypeService.transferToAnotherAccountingPeriod,"anotherAccountingPeriodId",accountingDocumentType.accountingPeriod?accountingDocumentType.accountingPeriod.id:"")} - style={{fontSize: 20,color:"red"}} /> - {buildTransferModal(accountingDocumentType,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.createform.js b/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.createform.js index 4be493441..17553f67f 100644 --- a/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.createform.js +++ b/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.createform.js @@ -19,7 +19,7 @@ const testValues = {}; const testValues = { name: '记账凭证', description: '又称记账凭单,是会计人员根据审核无误的原始凭证按照经济业务事项的内容加以分类,并据以确定会计分录后所填制的会计凭证。它是登记账簿的直接依据。', - accountingPeriodId: 'AS000001', + accountingPeriodId: 'AS00000001', } */ diff --git a/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.dashboard.js b/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.dashboard.js index 825f9334c..ab960bdcb 100644 --- a/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.dashboard.js +++ b/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(accountingDocumentType)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (accountingDocumentType) =>defaultSettingListOf(accountingDocumentType, optionList) const internalLargeTextOf = (accountingDocumentType) =>{ @@ -130,7 +130,7 @@ class AccountingDocumentTypeDashboard extends Component { const cardsData = {cardsName:"会计凭证类型",cardsFor: "accountingDocumentType", cardsSource: this.props.accountingDocumentType,returnURL,displayName, subItems: [ -{name: 'accountingDocumentList', displayName:'会计凭证',type:'accountingDocument',count:accountingDocumentCount,addFunction: true, role: 'accountingDocument', metaInfo: accountingDocumentListMetaInfo}, +{name: 'accountingDocumentList', displayName:'会计凭证',type:'accountingDocument',count:accountingDocumentCount,addFunction: true, role: 'accountingDocument', metaInfo: accountingDocumentListMetaInfo, renderItem: GlobalComponents.AccountingDocumentBase.renderItemOfList}, ], }; @@ -145,6 +145,8 @@ class AccountingDocumentTypeDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.permission.js b/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.permission.js index 2b112d874..31ef0c8f8 100644 --- a/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.permission.js +++ b/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './AccountingDocumentType.preference.less' +import styles from './AccountingDocumentType.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.preference.js b/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.preference.js deleted file mode 100644 index 4d261f29e..000000000 --- a/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.preference.js +++ /dev/null @@ -1,356 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './AccountingDocumentType.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (accountingDocumentType) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (accountingDocumentType) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (accountingDocumentType) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {AccountingDocumentTypeService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = AccountingDocumentTypeService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (accountingDocumentType,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=accountingDocumentType.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_accountingDocumentType/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (accountingDocumentType,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(accountingDocumentType,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (accountingDocumentType) =>{ - return null -} -const internalRenderExtraFooter = (accountingDocumentType) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (accountingDocumentType,targetComponent) =>{ - const userContext = null - return ( - -{accountingDocumentType.id} -{accountingDocumentType.name} -{accountingDocumentType.description} -{accountingDocumentType.accountingPeriod==null?appLocaleName(userContext,"NotAssigned"):accountingDocumentType.accountingPeriod.displayName} - - showTransferModel(targetComponent,"会计期间","accountSet","requestCandidateAccountingPeriod", - "transferToAnotherAccountingPeriod","anotherAccountingPeriodId",accountingDocumentType.accountingPeriod?accountingDocumentType.accountingPeriod.id:"")} - style={{fontSize: 20,color:"red"}} /> - - - {buildTransferModal(accountingDocumentType,targetComponent)} - - ) - -} - - -const renderPermissionSetting = accountingDocumentType => { - const {AccountingDocumentTypeBase} = GlobalComponents - return - - -} - - -class AccountingDocumentTypePreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const accountingDocumentType = this.props.accountingDocumentType; - const { id,displayName, accountingDocumentCount } = accountingDocumentType - - - - const cardsData = {cardsName:"会计凭证类型",cardsFor: "accountingDocumentType",cardsSource: accountingDocumentType, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - accountingDocumentType: state._accountingDocumentType, -}))(Form.create()(AccountingDocumentTypePreference)) - diff --git a/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.preference.less b/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.profile.js b/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.profile.js index 056e66c5f..17f8036fc 100644 --- a/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.profile.js +++ b/bizui/src/bizcomponents/accountingdocumenttype/AccountingDocumentType.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './AccountingDocumentType.preference.less' +import styles from './AccountingDocumentType.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,17 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (accountingDocumentType,targetComponent) =>{ - const userContext = null - return ( - -{accountingDocumentType.id} -{accountingDocumentType.name} -{accountingDocumentType.description} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.AccountingDocumentTypeBase.renderItemOfList(item, targetComponents) + } @@ -64,13 +58,14 @@ class AccountingDocumentTypeProfile extends Component { const cardsData = {cardsName:"会计凭证类型",cardsFor: "accountingDocumentType",cardsSource: accountingDocumentType, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -80,7 +75,7 @@ class AccountingDocumentTypeProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.associateform.js b/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.associateform.js index b5040b9c9..744dd7696 100644 --- a/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.associateform.js +++ b/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.associateform.js @@ -19,9 +19,9 @@ const testValues = {}; /* const testValues = { name: '2017年1月', - startDate: '2016-06-03', - endDate: '2017-06-27', - accountSetId: 'AS000001', + startDate: '2017-09-02', + endDate: '2017-10-14', + accountSetId: 'AS00000001', } */ diff --git a/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.base.js b/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.base.js index d4117a23e..b476f66ab 100644 --- a/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.base.js +++ b/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -54,27 +55,27 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({accountingPeriod,targetComponent})=>{ +const renderItemOfList=(accountingPeriod,targetComponent)=>{ - const {AccountingPeriodService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {accountingPeriod.id} {accountingPeriod.name} { moment(accountingPeriod.startDate).format('YYYY-MM-DD')} { moment(accountingPeriod.endDate).format('YYYY-MM-DD')} {accountingPeriod.accountSet==null?appLocaleName(userContext,"NotAssigned"):`${accountingPeriod.accountSet.displayName}(${accountingPeriod.accountSet.id})`} - - showTransferModel(targetComponent,"账套","accountSet",AccountingPeriodService.requestCandidateAccountSet, - AccountingPeriodService.transferToAnotherAccountSet,"anotherAccountSetId",accountingPeriod.accountSet?accountingPeriod.accountSet.id:"")} - style={{fontSize: 20,color:"red"}} /> - {buildTransferModal(accountingPeriod,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.createform.js b/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.createform.js index 1136d66ef..2831e8587 100644 --- a/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.createform.js +++ b/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.createform.js @@ -18,9 +18,9 @@ const testValues = {}; /* const testValues = { name: '2017年1月', - startDate: '2017-04-20', - endDate: '2018-12-24', - accountSetId: 'AS000001', + startDate: '2017-07-22', + endDate: '2017-12-19', + accountSetId: 'AS00000001', } */ diff --git a/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.dashboard.js b/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.dashboard.js index e30b7da8c..dd51679b8 100644 --- a/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.dashboard.js +++ b/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(accountingPeriod)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (accountingPeriod) =>defaultSettingListOf(accountingPeriod, optionList) const internalLargeTextOf = (accountingPeriod) =>{ @@ -131,7 +131,7 @@ class AccountingPeriodDashboard extends Component { const cardsData = {cardsName:"会计期间",cardsFor: "accountingPeriod", cardsSource: this.props.accountingPeriod,returnURL,displayName, subItems: [ -{name: 'accountingDocumentList', displayName:'会计凭证',type:'accountingDocument',count:accountingDocumentCount,addFunction: true, role: 'accountingDocument', metaInfo: accountingDocumentListMetaInfo}, +{name: 'accountingDocumentList', displayName:'会计凭证',type:'accountingDocument',count:accountingDocumentCount,addFunction: true, role: 'accountingDocument', metaInfo: accountingDocumentListMetaInfo, renderItem: GlobalComponents.AccountingDocumentBase.renderItemOfList}, ], }; @@ -146,6 +146,8 @@ class AccountingPeriodDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.permission.js b/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.permission.js index 9a2ef9de8..db83736b5 100644 --- a/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.permission.js +++ b/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './AccountingPeriod.preference.less' +import styles from './AccountingPeriod.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.preference.js b/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.preference.js deleted file mode 100644 index 3fdffb22e..000000000 --- a/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.preference.js +++ /dev/null @@ -1,357 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './AccountingPeriod.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (accountingPeriod) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (accountingPeriod) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (accountingPeriod) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {AccountingPeriodService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = AccountingPeriodService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (accountingPeriod,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=accountingPeriod.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_accountingPeriod/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (accountingPeriod,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(accountingPeriod,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (accountingPeriod) =>{ - return null -} -const internalRenderExtraFooter = (accountingPeriod) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (accountingPeriod,targetComponent) =>{ - const userContext = null - return ( - -{accountingPeriod.id} -{accountingPeriod.name} -{ moment(accountingPeriod.startDate).format('YYYY-MM-DD')} -{ moment(accountingPeriod.endDate).format('YYYY-MM-DD')} -{accountingPeriod.accountSet==null?appLocaleName(userContext,"NotAssigned"):accountingPeriod.accountSet.displayName} - - showTransferModel(targetComponent,"账套","accountSet","requestCandidateAccountSet", - "transferToAnotherAccountSet","anotherAccountSetId",accountingPeriod.accountSet?accountingPeriod.accountSet.id:"")} - style={{fontSize: 20,color:"red"}} /> - - - {buildTransferModal(accountingPeriod,targetComponent)} - - ) - -} - - -const renderPermissionSetting = accountingPeriod => { - const {AccountingPeriodBase} = GlobalComponents - return - - -} - - -class AccountingPeriodPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const accountingPeriod = this.props.accountingPeriod; - const { id,displayName, accountingDocumentCount } = accountingPeriod - - - - const cardsData = {cardsName:"会计期间",cardsFor: "accountingPeriod",cardsSource: accountingPeriod, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - accountingPeriod: state._accountingPeriod, -}))(Form.create()(AccountingPeriodPreference)) - diff --git a/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.preference.less b/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.profile.js b/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.profile.js index bac453a7d..0ece0a721 100644 --- a/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.profile.js +++ b/bizui/src/bizcomponents/accountingperiod/AccountingPeriod.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './AccountingPeriod.preference.less' +import styles from './AccountingPeriod.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,18 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (accountingPeriod,targetComponent) =>{ - const userContext = null - return ( - -{accountingPeriod.id} -{accountingPeriod.name} -{ moment(accountingPeriod.startDate).format('YYYY-MM-DD')} -{ moment(accountingPeriod.endDate).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.AccountingPeriodBase.renderItemOfList(item, targetComponents) + } @@ -65,13 +58,14 @@ class AccountingPeriodProfile extends Component { const cardsData = {cardsName:"会计期间",cardsFor: "accountingPeriod",cardsSource: accountingPeriod, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -81,7 +75,7 @@ class AccountingPeriodProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/accountingsubject/AccountingSubject.associateform.js b/bizui/src/bizcomponents/accountingsubject/AccountingSubject.associateform.js index cfe092755..52c347033 100644 --- a/bizui/src/bizcomponents/accountingsubject/AccountingSubject.associateform.js +++ b/bizui/src/bizcomponents/accountingsubject/AccountingSubject.associateform.js @@ -22,7 +22,7 @@ const testValues = { accountingSubjectName: '银行存款', accountingSubjectClassCode: '1', accountingSubjectClassName: '资产类', - accountSetId: 'AS000001', + accountSetId: 'AS00000001', } */ diff --git a/bizui/src/bizcomponents/accountingsubject/AccountingSubject.base.js b/bizui/src/bizcomponents/accountingsubject/AccountingSubject.base.js index bf3154a98..2bf53b55e 100644 --- a/bizui/src/bizcomponents/accountingsubject/AccountingSubject.base.js +++ b/bizui/src/bizcomponents/accountingsubject/AccountingSubject.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -56,28 +57,28 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({accountingSubject,targetComponent})=>{ +const renderItemOfList=(accountingSubject,targetComponent)=>{ - const {AccountingSubjectService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {accountingSubject.id} {accountingSubject.accountingSubjectCode} {accountingSubject.accountingSubjectName} {accountingSubject.accountingSubjectClassCode} {accountingSubject.accountingSubjectClassName} {accountingSubject.accountSet==null?appLocaleName(userContext,"NotAssigned"):`${accountingSubject.accountSet.displayName}(${accountingSubject.accountSet.id})`} - - showTransferModel(targetComponent,"账套","accountSet",AccountingSubjectService.requestCandidateAccountSet, - AccountingSubjectService.transferToAnotherAccountSet,"anotherAccountSetId",accountingSubject.accountSet?accountingSubject.accountSet.id:"")} - style={{fontSize: 20,color:"red"}} /> - {buildTransferModal(accountingSubject,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/accountingsubject/AccountingSubject.createform.js b/bizui/src/bizcomponents/accountingsubject/AccountingSubject.createform.js index 4e1b45640..46d2cd7aa 100644 --- a/bizui/src/bizcomponents/accountingsubject/AccountingSubject.createform.js +++ b/bizui/src/bizcomponents/accountingsubject/AccountingSubject.createform.js @@ -21,7 +21,7 @@ const testValues = { accountingSubjectName: '银行存款', accountingSubjectClassCode: '1', accountingSubjectClassName: '资产类', - accountSetId: 'AS000001', + accountSetId: 'AS00000001', } */ diff --git a/bizui/src/bizcomponents/accountingsubject/AccountingSubject.dashboard.js b/bizui/src/bizcomponents/accountingsubject/AccountingSubject.dashboard.js index d9c69c4e5..3b629987c 100644 --- a/bizui/src/bizcomponents/accountingsubject/AccountingSubject.dashboard.js +++ b/bizui/src/bizcomponents/accountingsubject/AccountingSubject.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(accountingSubject)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (accountingSubject) =>defaultSettingListOf(accountingSubject, optionList) const internalLargeTextOf = (accountingSubject) =>{ @@ -132,7 +132,7 @@ class AccountingSubjectDashboard extends Component { const cardsData = {cardsName:"会计科目",cardsFor: "accountingSubject", cardsSource: this.props.accountingSubject,returnURL,displayName, subItems: [ -{name: 'accountingDocumentLineList', displayName:'会计凭证行',type:'accountingDocumentLine',count:accountingDocumentLineCount,addFunction: true, role: 'accountingDocumentLine', metaInfo: accountingDocumentLineListMetaInfo}, +{name: 'accountingDocumentLineList', displayName:'会计凭证行',type:'accountingDocumentLine',count:accountingDocumentLineCount,addFunction: true, role: 'accountingDocumentLine', metaInfo: accountingDocumentLineListMetaInfo, renderItem: GlobalComponents.AccountingDocumentLineBase.renderItemOfList}, ], }; @@ -147,6 +147,8 @@ class AccountingSubjectDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/accountingsubject/AccountingSubject.permission.js b/bizui/src/bizcomponents/accountingsubject/AccountingSubject.permission.js index d7c694d10..545c1e522 100644 --- a/bizui/src/bizcomponents/accountingsubject/AccountingSubject.permission.js +++ b/bizui/src/bizcomponents/accountingsubject/AccountingSubject.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './AccountingSubject.preference.less' +import styles from './AccountingSubject.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/accountingsubject/AccountingSubject.preference.js b/bizui/src/bizcomponents/accountingsubject/AccountingSubject.preference.js deleted file mode 100644 index 6c84e3685..000000000 --- a/bizui/src/bizcomponents/accountingsubject/AccountingSubject.preference.js +++ /dev/null @@ -1,358 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './AccountingSubject.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (accountingSubject) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (accountingSubject) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (accountingSubject) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {AccountingSubjectService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = AccountingSubjectService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (accountingSubject,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=accountingSubject.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_accountingSubject/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (accountingSubject,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(accountingSubject,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (accountingSubject) =>{ - return null -} -const internalRenderExtraFooter = (accountingSubject) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (accountingSubject,targetComponent) =>{ - const userContext = null - return ( - -{accountingSubject.id} -{accountingSubject.accountingSubjectCode} -{accountingSubject.accountingSubjectName} -{accountingSubject.accountingSubjectClassCode} -{accountingSubject.accountingSubjectClassName} -{accountingSubject.accountSet==null?appLocaleName(userContext,"NotAssigned"):accountingSubject.accountSet.displayName} - - showTransferModel(targetComponent,"账套","accountSet","requestCandidateAccountSet", - "transferToAnotherAccountSet","anotherAccountSetId",accountingSubject.accountSet?accountingSubject.accountSet.id:"")} - style={{fontSize: 20,color:"red"}} /> - - - {buildTransferModal(accountingSubject,targetComponent)} - - ) - -} - - -const renderPermissionSetting = accountingSubject => { - const {AccountingSubjectBase} = GlobalComponents - return - - -} - - -class AccountingSubjectPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const accountingSubject = this.props.accountingSubject; - const { id,displayName, accountingDocumentLineCount } = accountingSubject - - - - const cardsData = {cardsName:"会计科目",cardsFor: "accountingSubject",cardsSource: accountingSubject, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - accountingSubject: state._accountingSubject, -}))(Form.create()(AccountingSubjectPreference)) - diff --git a/bizui/src/bizcomponents/accountingsubject/AccountingSubject.preference.less b/bizui/src/bizcomponents/accountingsubject/AccountingSubject.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/accountingsubject/AccountingSubject.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/accountingsubject/AccountingSubject.profile.js b/bizui/src/bizcomponents/accountingsubject/AccountingSubject.profile.js index 5881ad998..a061c86ea 100644 --- a/bizui/src/bizcomponents/accountingsubject/AccountingSubject.profile.js +++ b/bizui/src/bizcomponents/accountingsubject/AccountingSubject.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './AccountingSubject.preference.less' +import styles from './AccountingSubject.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,19 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (accountingSubject,targetComponent) =>{ - const userContext = null - return ( - -{accountingSubject.id} -{accountingSubject.accountingSubjectCode} -{accountingSubject.accountingSubjectName} -{accountingSubject.accountingSubjectClassCode} -{accountingSubject.accountingSubjectClassName} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.AccountingSubjectBase.renderItemOfList(item, targetComponents) + } @@ -66,13 +58,14 @@ class AccountingSubjectProfile extends Component { const cardsData = {cardsName:"会计科目",cardsFor: "accountingSubject",cardsSource: accountingSubject, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -82,7 +75,7 @@ class AccountingSubjectProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/accountset/AccountSet.associateform.js b/bizui/src/bizcomponents/accountset/AccountSet.associateform.js index 77c967a3c..fc635bf1a 100644 --- a/bizui/src/bizcomponents/accountset/AccountSet.associateform.js +++ b/bizui/src/bizcomponents/accountset/AccountSet.associateform.js @@ -20,15 +20,15 @@ const testValues = {}; const testValues = { name: '账套2017', yearSet: '2017年', - effectiveDate: '2018-08-21', + effectiveDate: '2017-01-18', accountingSystem: '企业会计制度', domesticCurrencyCode: 'RMB', domesticCurrencyName: '人民币', openingBank: '招商银行', accountNumber: '33265805054885', - countryCenterId: 'RSCC000001', - retailStoreId: 'RS000001', - goodsSupplierId: 'GS000001', + countryCenterId: 'RSCC00000001', + retailStoreId: 'RS00000001', + goodsSupplierId: 'GS00000001', } */ diff --git a/bizui/src/bizcomponents/accountset/AccountSet.base.js b/bizui/src/bizcomponents/accountset/AccountSet.base.js index 91fc2c685..2f2608a23 100644 --- a/bizui/src/bizcomponents/accountset/AccountSet.base.js +++ b/bizui/src/bizcomponents/accountset/AccountSet.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -72,14 +73,16 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({accountSet,targetComponent})=>{ +const renderItemOfList=(accountSet,targetComponent)=>{ - const {AccountSetService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {accountSet.id} {accountSet.name} {accountSet.yearSet} @@ -90,21 +93,15 @@ const renderItemOfList=({accountSet,targetComponent})=>{ {accountSet.openingBank} {accountSet.accountNumber} {accountSet.retailStore==null?appLocaleName(userContext,"NotAssigned"):`${accountSet.retailStore.displayName}(${accountSet.retailStore.id})`} - - showTransferModel(targetComponent,"双链小超","retailStore",AccountSetService.requestCandidateRetailStore, - AccountSetService.transferToAnotherRetailStore,"anotherRetailStoreId",accountSet.retailStore?accountSet.retailStore.id:"")} - style={{fontSize: 20,color:"red"}} /> {accountSet.goodsSupplier==null?appLocaleName(userContext,"NotAssigned"):`${accountSet.goodsSupplier.displayName}(${accountSet.goodsSupplier.id})`} - - showTransferModel(targetComponent,"产品供应商","goodsSupplier",AccountSetService.requestCandidateGoodsSupplier, - AccountSetService.transferToAnotherGoodsSupplier,"anotherGoodsSupplierId",accountSet.goodsSupplier?accountSet.goodsSupplier.id:"")} - style={{fontSize: 20,color:"red"}} /> { moment(accountSet.lastUpdateTime).format('YYYY-MM-DD')} - {buildTransferModal(accountSet,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/accountset/AccountSet.createform.js b/bizui/src/bizcomponents/accountset/AccountSet.createform.js index 291e1046b..ed167919d 100644 --- a/bizui/src/bizcomponents/accountset/AccountSet.createform.js +++ b/bizui/src/bizcomponents/accountset/AccountSet.createform.js @@ -19,15 +19,15 @@ const testValues = {}; const testValues = { name: '账套2017', yearSet: '2017年', - effectiveDate: '2017-10-29', + effectiveDate: '2017-09-04', accountingSystem: '企业会计制度', domesticCurrencyCode: 'RMB', domesticCurrencyName: '人民币', openingBank: '招商银行', accountNumber: '33265805054885', - countryCenterId: 'RSCC000001', - retailStoreId: 'RS000001', - goodsSupplierId: 'GS000001', + countryCenterId: 'RSCC00000001', + retailStoreId: 'RS00000001', + goodsSupplierId: 'GS00000001', } */ diff --git a/bizui/src/bizcomponents/accountset/AccountSet.dashboard.js b/bizui/src/bizcomponents/accountset/AccountSet.dashboard.js index df579896e..82fb77da1 100644 --- a/bizui/src/bizcomponents/accountset/AccountSet.dashboard.js +++ b/bizui/src/bizcomponents/accountset/AccountSet.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(accountSet)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (accountSet) =>defaultSettingListOf(accountSet, optionList) const internalLargeTextOf = (accountSet) =>{ @@ -143,9 +143,9 @@ class AccountSetDashboard extends Component { const cardsData = {cardsName:"账套",cardsFor: "accountSet", cardsSource: this.props.accountSet,returnURL,displayName, subItems: [ -{name: 'accountingSubjectList', displayName:'会计科目',type:'accountingSubject',count:accountingSubjectCount,addFunction: true, role: 'accountingSubject', metaInfo: accountingSubjectListMetaInfo}, -{name: 'accountingPeriodList', displayName:'会计期间',type:'accountingPeriod',count:accountingPeriodCount,addFunction: true, role: 'accountingPeriod', metaInfo: accountingPeriodListMetaInfo}, -{name: 'accountingDocumentTypeList', displayName:'会计凭证类型',type:'accountingDocumentType',count:accountingDocumentTypeCount,addFunction: true, role: 'accountingDocumentType', metaInfo: accountingDocumentTypeListMetaInfo}, +{name: 'accountingSubjectList', displayName:'会计科目',type:'accountingSubject',count:accountingSubjectCount,addFunction: true, role: 'accountingSubject', metaInfo: accountingSubjectListMetaInfo, renderItem: GlobalComponents.AccountingSubjectBase.renderItemOfList}, +{name: 'accountingPeriodList', displayName:'会计期间',type:'accountingPeriod',count:accountingPeriodCount,addFunction: true, role: 'accountingPeriod', metaInfo: accountingPeriodListMetaInfo, renderItem: GlobalComponents.AccountingPeriodBase.renderItemOfList}, +{name: 'accountingDocumentTypeList', displayName:'会计凭证类型',type:'accountingDocumentType',count:accountingDocumentTypeCount,addFunction: true, role: 'accountingDocumentType', metaInfo: accountingDocumentTypeListMetaInfo, renderItem: GlobalComponents.AccountingDocumentTypeBase.renderItemOfList}, ], }; @@ -160,6 +160,8 @@ class AccountSetDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/accountset/AccountSet.permission.js b/bizui/src/bizcomponents/accountset/AccountSet.permission.js index 9e2864688..56873cc2a 100644 --- a/bizui/src/bizcomponents/accountset/AccountSet.permission.js +++ b/bizui/src/bizcomponents/accountset/AccountSet.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './AccountSet.preference.less' +import styles from './AccountSet.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/accountset/AccountSet.preference.js b/bizui/src/bizcomponents/accountset/AccountSet.preference.js deleted file mode 100644 index f52623400..000000000 --- a/bizui/src/bizcomponents/accountset/AccountSet.preference.js +++ /dev/null @@ -1,369 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './AccountSet.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (accountSet) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (accountSet) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (accountSet) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {AccountSetService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = AccountSetService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (accountSet,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=accountSet.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_accountSet/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (accountSet,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(accountSet,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (accountSet) =>{ - return null -} -const internalRenderExtraFooter = (accountSet) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (accountSet,targetComponent) =>{ - const userContext = null - return ( - -{accountSet.id} -{accountSet.name} -{accountSet.yearSet} -{ moment(accountSet.effectiveDate).format('YYYY-MM-DD')} -{accountSet.accountingSystem} -{accountSet.domesticCurrencyCode} -{accountSet.domesticCurrencyName} -{accountSet.openingBank} -{accountSet.accountNumber} -{accountSet.retailStore==null?appLocaleName(userContext,"NotAssigned"):accountSet.retailStore.displayName} - - showTransferModel(targetComponent,"双链小超","retailStore","requestCandidateRetailStore", - "transferToAnotherRetailStore","anotherRetailStoreId",accountSet.retailStore?accountSet.retailStore.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{accountSet.goodsSupplier==null?appLocaleName(userContext,"NotAssigned"):accountSet.goodsSupplier.displayName} - - showTransferModel(targetComponent,"产品供应商","goodsSupplier","requestCandidateGoodsSupplier", - "transferToAnotherGoodsSupplier","anotherGoodsSupplierId",accountSet.goodsSupplier?accountSet.goodsSupplier.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{ moment(accountSet.lastUpdateTime).format('YYYY-MM-DD')} - - {buildTransferModal(accountSet,targetComponent)} - - ) - -} - - -const renderPermissionSetting = accountSet => { - const {AccountSetBase} = GlobalComponents - return - - -} - - -class AccountSetPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const accountSet = this.props.accountSet; - const { id,displayName, accountingSubjectCount, accountingPeriodCount, accountingDocumentTypeCount } = accountSet - - - - const cardsData = {cardsName:"账套",cardsFor: "accountSet",cardsSource: accountSet, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - accountSet: state._accountSet, -}))(Form.create()(AccountSetPreference)) - diff --git a/bizui/src/bizcomponents/accountset/AccountSet.preference.less b/bizui/src/bizcomponents/accountset/AccountSet.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/accountset/AccountSet.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/accountset/AccountSet.profile.js b/bizui/src/bizcomponents/accountset/AccountSet.profile.js index f35322762..66d25f259 100644 --- a/bizui/src/bizcomponents/accountset/AccountSet.profile.js +++ b/bizui/src/bizcomponents/accountset/AccountSet.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './AccountSet.preference.less' +import styles from './AccountSet.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,24 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (accountSet,targetComponent) =>{ - const userContext = null - return ( - -{accountSet.id} -{accountSet.name} -{accountSet.yearSet} -{ moment(accountSet.effectiveDate).format('YYYY-MM-DD')} -{accountSet.accountingSystem} -{accountSet.domesticCurrencyCode} -{accountSet.domesticCurrencyName} -{accountSet.openingBank} -{accountSet.accountNumber} -{ moment(accountSet.lastUpdateTime).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.AccountSetBase.renderItemOfList(item, targetComponents) + } @@ -71,13 +58,14 @@ class AccountSetProfile extends Component { const cardsData = {cardsName:"账套",cardsFor: "accountSet",cardsSource: accountSet, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -87,7 +75,7 @@ class AccountSetProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/catalog/Catalog.associateform.js b/bizui/src/bizcomponents/catalog/Catalog.associateform.js index 401e56511..c7e96e799 100644 --- a/bizui/src/bizcomponents/catalog/Catalog.associateform.js +++ b/bizui/src/bizcomponents/catalog/Catalog.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { name: '水果蔬菜', - ownerId: 'RSCC000001', + ownerId: 'RSCC00000001', } */ diff --git a/bizui/src/bizcomponents/catalog/Catalog.base.js b/bizui/src/bizcomponents/catalog/Catalog.base.js index 4951bde98..56cb01c9b 100644 --- a/bizui/src/bizcomponents/catalog/Catalog.base.js +++ b/bizui/src/bizcomponents/catalog/Catalog.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -50,19 +51,23 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({catalog,targetComponent})=>{ +const renderItemOfList=(catalog,targetComponent)=>{ - const {CatalogService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {catalog.id} {catalog.name} - {buildTransferModal(catalog,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/catalog/Catalog.createform.js b/bizui/src/bizcomponents/catalog/Catalog.createform.js index b05a23b6f..56f0118f1 100644 --- a/bizui/src/bizcomponents/catalog/Catalog.createform.js +++ b/bizui/src/bizcomponents/catalog/Catalog.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { name: '水果蔬菜', - ownerId: 'RSCC000001', + ownerId: 'RSCC00000001', } */ diff --git a/bizui/src/bizcomponents/catalog/Catalog.dashboard.js b/bizui/src/bizcomponents/catalog/Catalog.dashboard.js index fd7aca7a1..83d551144 100644 --- a/bizui/src/bizcomponents/catalog/Catalog.dashboard.js +++ b/bizui/src/bizcomponents/catalog/Catalog.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(catalog)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (catalog) =>defaultSettingListOf(catalog, optionList) const internalLargeTextOf = (catalog) =>{ @@ -123,7 +123,7 @@ class CatalogDashboard extends Component { const cardsData = {cardsName:"目录",cardsFor: "catalog", cardsSource: this.props.catalog,returnURL,displayName, subItems: [ -{name: 'levelOneCategoryList', displayName:'一级分类',type:'levelOneCategory',count:levelOneCategoryCount,addFunction: true, role: 'levelOneCategory', metaInfo: levelOneCategoryListMetaInfo}, +{name: 'levelOneCategoryList', displayName:'一级分类',type:'levelOneCategory',count:levelOneCategoryCount,addFunction: true, role: 'levelOneCategory', metaInfo: levelOneCategoryListMetaInfo, renderItem: GlobalComponents.LevelOneCategoryBase.renderItemOfList}, ], }; @@ -138,6 +138,8 @@ class CatalogDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/catalog/Catalog.permission.js b/bizui/src/bizcomponents/catalog/Catalog.permission.js index f2647b3b5..9a623ce59 100644 --- a/bizui/src/bizcomponents/catalog/Catalog.permission.js +++ b/bizui/src/bizcomponents/catalog/Catalog.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './Catalog.preference.less' +import styles from './Catalog.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/catalog/Catalog.preference.js b/bizui/src/bizcomponents/catalog/Catalog.preference.js deleted file mode 100644 index 4420bb6cc..000000000 --- a/bizui/src/bizcomponents/catalog/Catalog.preference.js +++ /dev/null @@ -1,349 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './Catalog.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (catalog) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (catalog) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (catalog) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {CatalogService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = CatalogService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (catalog,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=catalog.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_catalog/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (catalog,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(catalog,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (catalog) =>{ - return null -} -const internalRenderExtraFooter = (catalog) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (catalog,targetComponent) =>{ - const userContext = null - return ( - -{catalog.id} -{catalog.name} - - {buildTransferModal(catalog,targetComponent)} - - ) - -} - - -const renderPermissionSetting = catalog => { - const {CatalogBase} = GlobalComponents - return - - -} - - -class CatalogPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const catalog = this.props.catalog; - const { id,displayName, levelOneCategoryCount } = catalog - - - - const cardsData = {cardsName:"目录",cardsFor: "catalog",cardsSource: catalog, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - catalog: state._catalog, -}))(Form.create()(CatalogPreference)) - diff --git a/bizui/src/bizcomponents/catalog/Catalog.preference.less b/bizui/src/bizcomponents/catalog/Catalog.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/catalog/Catalog.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/catalog/Catalog.profile.js b/bizui/src/bizcomponents/catalog/Catalog.profile.js index 60beab7b9..6d0760703 100644 --- a/bizui/src/bizcomponents/catalog/Catalog.profile.js +++ b/bizui/src/bizcomponents/catalog/Catalog.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './Catalog.preference.less' +import styles from './Catalog.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,16 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (catalog,targetComponent) =>{ - const userContext = null - return ( - -{catalog.id} -{catalog.name} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.CatalogBase.renderItemOfList(item, targetComponents) + } @@ -63,13 +58,14 @@ class CatalogProfile extends Component { const cardsData = {cardsName:"目录",cardsFor: "catalog",cardsSource: catalog, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -79,7 +75,7 @@ class CatalogProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/cityevent/CityEvent.associateform.js b/bizui/src/bizcomponents/cityevent/CityEvent.associateform.js index 3b487b58f..73a1927f5 100644 --- a/bizui/src/bizcomponents/cityevent/CityEvent.associateform.js +++ b/bizui/src/bizcomponents/cityevent/CityEvent.associateform.js @@ -21,7 +21,7 @@ const testValues = { name: '小超见面会', mobile: '13677778888', description: '给大家讲解小超的发展蓝图', - cityServiceCenterId: 'RSCSC000001', + cityServiceCenterId: 'RSCSC00000001', } */ diff --git a/bizui/src/bizcomponents/cityevent/CityEvent.base.js b/bizui/src/bizcomponents/cityevent/CityEvent.base.js index 76ef3ed1f..2db2bdcb1 100644 --- a/bizui/src/bizcomponents/cityevent/CityEvent.base.js +++ b/bizui/src/bizcomponents/cityevent/CityEvent.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -56,28 +57,28 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({cityEvent,targetComponent})=>{ +const renderItemOfList=(cityEvent,targetComponent)=>{ - const {CityEventService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {cityEvent.id} {cityEvent.name} {cityEvent.mobile} {cityEvent.cityServiceCenter==null?appLocaleName(userContext,"NotAssigned"):`${cityEvent.cityServiceCenter.displayName}(${cityEvent.cityServiceCenter.id})`} - - showTransferModel(targetComponent,"城市服务中心","retailStoreCityServiceCenter",CityEventService.requestCandidateCityServiceCenter, - CityEventService.transferToAnotherCityServiceCenter,"anotherCityServiceCenterId",cityEvent.cityServiceCenter?cityEvent.cityServiceCenter.id:"")} - style={{fontSize: 20,color:"red"}} /> {cityEvent.description} { moment(cityEvent.lastUpdateTime).format('YYYY-MM-DD')} - {buildTransferModal(cityEvent,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/cityevent/CityEvent.createform.js b/bizui/src/bizcomponents/cityevent/CityEvent.createform.js index f062c3970..3bf6af7a7 100644 --- a/bizui/src/bizcomponents/cityevent/CityEvent.createform.js +++ b/bizui/src/bizcomponents/cityevent/CityEvent.createform.js @@ -20,7 +20,7 @@ const testValues = { name: '小超见面会', mobile: '13677778888', description: '给大家讲解小超的发展蓝图', - cityServiceCenterId: 'RSCSC000001', + cityServiceCenterId: 'RSCSC00000001', } */ diff --git a/bizui/src/bizcomponents/cityevent/CityEvent.dashboard.js b/bizui/src/bizcomponents/cityevent/CityEvent.dashboard.js index cadacaee9..28a6b56ec 100644 --- a/bizui/src/bizcomponents/cityevent/CityEvent.dashboard.js +++ b/bizui/src/bizcomponents/cityevent/CityEvent.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(cityEvent)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (cityEvent) =>defaultSettingListOf(cityEvent, optionList) const internalLargeTextOf = (cityEvent) =>{ @@ -132,7 +132,7 @@ class CityEventDashboard extends Component { const cardsData = {cardsName:"城市活动",cardsFor: "cityEvent", cardsSource: this.props.cityEvent,returnURL,displayName, subItems: [ -{name: 'eventAttendanceList', displayName:'活动的参与情况',type:'eventAttendance',count:eventAttendanceCount,addFunction: true, role: 'eventAttendance', metaInfo: eventAttendanceListMetaInfo}, +{name: 'eventAttendanceList', displayName:'活动的参与情况',type:'eventAttendance',count:eventAttendanceCount,addFunction: true, role: 'eventAttendance', metaInfo: eventAttendanceListMetaInfo, renderItem: GlobalComponents.EventAttendanceBase.renderItemOfList}, ], }; @@ -147,6 +147,8 @@ class CityEventDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/cityevent/CityEvent.permission.js b/bizui/src/bizcomponents/cityevent/CityEvent.permission.js index 7fc1eb5bc..5c1d20aad 100644 --- a/bizui/src/bizcomponents/cityevent/CityEvent.permission.js +++ b/bizui/src/bizcomponents/cityevent/CityEvent.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './CityEvent.preference.less' +import styles from './CityEvent.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/cityevent/CityEvent.preference.js b/bizui/src/bizcomponents/cityevent/CityEvent.preference.js deleted file mode 100644 index c1f0ddedc..000000000 --- a/bizui/src/bizcomponents/cityevent/CityEvent.preference.js +++ /dev/null @@ -1,358 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './CityEvent.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (cityEvent) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (cityEvent) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (cityEvent) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {CityEventService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = CityEventService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (cityEvent,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=cityEvent.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_cityEvent/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (cityEvent,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(cityEvent,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (cityEvent) =>{ - return null -} -const internalRenderExtraFooter = (cityEvent) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (cityEvent,targetComponent) =>{ - const userContext = null - return ( - -{cityEvent.id} -{cityEvent.name} -{cityEvent.mobile} -{cityEvent.cityServiceCenter==null?appLocaleName(userContext,"NotAssigned"):cityEvent.cityServiceCenter.displayName} - - showTransferModel(targetComponent,"城市服务中心","retailStoreCityServiceCenter","requestCandidateCityServiceCenter", - "transferToAnotherCityServiceCenter","anotherCityServiceCenterId",cityEvent.cityServiceCenter?cityEvent.cityServiceCenter.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{cityEvent.description} -{ moment(cityEvent.lastUpdateTime).format('YYYY-MM-DD')} - - {buildTransferModal(cityEvent,targetComponent)} - - ) - -} - - -const renderPermissionSetting = cityEvent => { - const {CityEventBase} = GlobalComponents - return - - -} - - -class CityEventPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const cityEvent = this.props.cityEvent; - const { id,displayName, eventAttendanceCount } = cityEvent - - - - const cardsData = {cardsName:"城市活动",cardsFor: "cityEvent",cardsSource: cityEvent, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - cityEvent: state._cityEvent, -}))(Form.create()(CityEventPreference)) - diff --git a/bizui/src/bizcomponents/cityevent/CityEvent.preference.less b/bizui/src/bizcomponents/cityevent/CityEvent.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/cityevent/CityEvent.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/cityevent/CityEvent.profile.js b/bizui/src/bizcomponents/cityevent/CityEvent.profile.js index ba9d80764..a8239f2de 100644 --- a/bizui/src/bizcomponents/cityevent/CityEvent.profile.js +++ b/bizui/src/bizcomponents/cityevent/CityEvent.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './CityEvent.preference.less' +import styles from './CityEvent.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,19 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (cityEvent,targetComponent) =>{ - const userContext = null - return ( - -{cityEvent.id} -{cityEvent.name} -{cityEvent.mobile} -{cityEvent.description} -{ moment(cityEvent.lastUpdateTime).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.CityEventBase.renderItemOfList(item, targetComponents) + } @@ -66,13 +58,14 @@ class CityEventProfile extends Component { const cardsData = {cardsName:"城市活动",cardsFor: "cityEvent",cardsSource: cityEvent, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -82,7 +75,7 @@ class CityEventProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/citypartner/CityPartner.associateform.js b/bizui/src/bizcomponents/citypartner/CityPartner.associateform.js index 257acb2c5..ee4d346ec 100644 --- a/bizui/src/bizcomponents/citypartner/CityPartner.associateform.js +++ b/bizui/src/bizcomponents/citypartner/CityPartner.associateform.js @@ -21,7 +21,7 @@ const testValues = { name: '曾倩', mobile: '13677778888', description: '负责开拓市场,具有极强的开拓能力', - cityServiceCenterId: 'RSCSC000001', + cityServiceCenterId: 'RSCSC00000001', } */ diff --git a/bizui/src/bizcomponents/citypartner/CityPartner.base.js b/bizui/src/bizcomponents/citypartner/CityPartner.base.js index edf0f3495..e16d3cfc0 100644 --- a/bizui/src/bizcomponents/citypartner/CityPartner.base.js +++ b/bizui/src/bizcomponents/citypartner/CityPartner.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -57,28 +58,28 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({cityPartner,targetComponent})=>{ +const renderItemOfList=(cityPartner,targetComponent)=>{ - const {CityPartnerService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {cityPartner.id} {cityPartner.name} {cityPartner.mobile} {cityPartner.cityServiceCenter==null?appLocaleName(userContext,"NotAssigned"):`${cityPartner.cityServiceCenter.displayName}(${cityPartner.cityServiceCenter.id})`} - - showTransferModel(targetComponent,"城市服务中心","retailStoreCityServiceCenter",CityPartnerService.requestCandidateCityServiceCenter, - CityPartnerService.transferToAnotherCityServiceCenter,"anotherCityServiceCenterId",cityPartner.cityServiceCenter?cityPartner.cityServiceCenter.id:"")} - style={{fontSize: 20,color:"red"}} /> {cityPartner.description} { moment(cityPartner.lastUpdateTime).format('YYYY-MM-DD')} - {buildTransferModal(cityPartner,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/citypartner/CityPartner.createform.js b/bizui/src/bizcomponents/citypartner/CityPartner.createform.js index ae936fbfd..b06b9c9c5 100644 --- a/bizui/src/bizcomponents/citypartner/CityPartner.createform.js +++ b/bizui/src/bizcomponents/citypartner/CityPartner.createform.js @@ -20,7 +20,7 @@ const testValues = { name: '曾倩', mobile: '13677778888', description: '负责开拓市场,具有极强的开拓能力', - cityServiceCenterId: 'RSCSC000001', + cityServiceCenterId: 'RSCSC00000001', } */ diff --git a/bizui/src/bizcomponents/citypartner/CityPartner.dashboard.js b/bizui/src/bizcomponents/citypartner/CityPartner.dashboard.js index 83913476b..47b895d8d 100644 --- a/bizui/src/bizcomponents/citypartner/CityPartner.dashboard.js +++ b/bizui/src/bizcomponents/citypartner/CityPartner.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(cityPartner)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (cityPartner) =>defaultSettingListOf(cityPartner, optionList) const internalLargeTextOf = (cityPartner) =>{ @@ -132,8 +132,8 @@ class CityPartnerDashboard extends Component { const cardsData = {cardsName:"城市合伙人",cardsFor: "cityPartner", cardsSource: this.props.cityPartner,returnURL,displayName, subItems: [ -{name: 'potentialCustomerList', displayName:'潜在的客户',type:'potentialCustomer',count:potentialCustomerCount,addFunction: true, role: 'potentialCustomer', metaInfo: potentialCustomerListMetaInfo}, -{name: 'potentialCustomerContactList', displayName:'潜在客户联系',type:'potentialCustomerContact',count:potentialCustomerContactCount,addFunction: true, role: 'potentialCustomerContact', metaInfo: potentialCustomerContactListMetaInfo}, +{name: 'potentialCustomerList', displayName:'潜在的客户',type:'potentialCustomer',count:potentialCustomerCount,addFunction: true, role: 'potentialCustomer', metaInfo: potentialCustomerListMetaInfo, renderItem: GlobalComponents.PotentialCustomerBase.renderItemOfList}, +{name: 'potentialCustomerContactList', displayName:'潜在客户联系',type:'potentialCustomerContact',count:potentialCustomerContactCount,addFunction: true, role: 'potentialCustomerContact', metaInfo: potentialCustomerContactListMetaInfo, renderItem: GlobalComponents.PotentialCustomerContactBase.renderItemOfList}, ], }; @@ -148,6 +148,8 @@ class CityPartnerDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/citypartner/CityPartner.permission.js b/bizui/src/bizcomponents/citypartner/CityPartner.permission.js index dee7e98be..2aa297226 100644 --- a/bizui/src/bizcomponents/citypartner/CityPartner.permission.js +++ b/bizui/src/bizcomponents/citypartner/CityPartner.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './CityPartner.preference.less' +import styles from './CityPartner.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/citypartner/CityPartner.preference.js b/bizui/src/bizcomponents/citypartner/CityPartner.preference.js deleted file mode 100644 index 45575a479..000000000 --- a/bizui/src/bizcomponents/citypartner/CityPartner.preference.js +++ /dev/null @@ -1,358 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './CityPartner.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (cityPartner) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (cityPartner) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (cityPartner) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {CityPartnerService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = CityPartnerService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (cityPartner,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=cityPartner.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_cityPartner/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (cityPartner,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(cityPartner,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (cityPartner) =>{ - return null -} -const internalRenderExtraFooter = (cityPartner) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (cityPartner,targetComponent) =>{ - const userContext = null - return ( - -{cityPartner.id} -{cityPartner.name} -{cityPartner.mobile} -{cityPartner.cityServiceCenter==null?appLocaleName(userContext,"NotAssigned"):cityPartner.cityServiceCenter.displayName} - - showTransferModel(targetComponent,"城市服务中心","retailStoreCityServiceCenter","requestCandidateCityServiceCenter", - "transferToAnotherCityServiceCenter","anotherCityServiceCenterId",cityPartner.cityServiceCenter?cityPartner.cityServiceCenter.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{cityPartner.description} -{ moment(cityPartner.lastUpdateTime).format('YYYY-MM-DD')} - - {buildTransferModal(cityPartner,targetComponent)} - - ) - -} - - -const renderPermissionSetting = cityPartner => { - const {CityPartnerBase} = GlobalComponents - return - - -} - - -class CityPartnerPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const cityPartner = this.props.cityPartner; - const { id,displayName, potentialCustomerCount, potentialCustomerContactCount } = cityPartner - - - - const cardsData = {cardsName:"城市合伙人",cardsFor: "cityPartner",cardsSource: cityPartner, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - cityPartner: state._cityPartner, -}))(Form.create()(CityPartnerPreference)) - diff --git a/bizui/src/bizcomponents/citypartner/CityPartner.preference.less b/bizui/src/bizcomponents/citypartner/CityPartner.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/citypartner/CityPartner.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/citypartner/CityPartner.profile.js b/bizui/src/bizcomponents/citypartner/CityPartner.profile.js index 5d32cafd1..0b6b136da 100644 --- a/bizui/src/bizcomponents/citypartner/CityPartner.profile.js +++ b/bizui/src/bizcomponents/citypartner/CityPartner.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './CityPartner.preference.less' +import styles from './CityPartner.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,19 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (cityPartner,targetComponent) =>{ - const userContext = null - return ( - -{cityPartner.id} -{cityPartner.name} -{cityPartner.mobile} -{cityPartner.description} -{ moment(cityPartner.lastUpdateTime).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.CityPartnerBase.renderItemOfList(item, targetComponents) + } @@ -66,13 +58,14 @@ class CityPartnerProfile extends Component { const cardsData = {cardsName:"城市合伙人",cardsFor: "cityPartner",cardsSource: cityPartner, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -82,7 +75,7 @@ class CityPartnerProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/companytraining/CompanyTraining.associateform.js b/bizui/src/bizcomponents/companytraining/CompanyTraining.associateform.js index f9245a54b..6d7c0808e 100644 --- a/bizui/src/bizcomponents/companytraining/CompanyTraining.associateform.js +++ b/bizui/src/bizcomponents/companytraining/CompanyTraining.associateform.js @@ -19,11 +19,11 @@ const testValues = {}; /* const testValues = { title: '入职培训', - timeStart: '2016-10-22', + timeStart: '2019-06-17', durationHours: '3', - companyId: 'RSCC000001', - instructorId: 'I000001', - trainingCourseTypeId: 'TCT000001', + companyId: 'RSCC00000001', + instructorId: 'I00000001', + trainingCourseTypeId: 'TCT00000001', } */ diff --git a/bizui/src/bizcomponents/companytraining/CompanyTraining.base.js b/bizui/src/bizcomponents/companytraining/CompanyTraining.base.js index b1c717bdb..caa47ecce 100644 --- a/bizui/src/bizcomponents/companytraining/CompanyTraining.base.js +++ b/bizui/src/bizcomponents/companytraining/CompanyTraining.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -60,34 +61,30 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({companyTraining,targetComponent})=>{ +const renderItemOfList=(companyTraining,targetComponent)=>{ - const {CompanyTrainingService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {companyTraining.id} {companyTraining.title} {companyTraining.instructor==null?appLocaleName(userContext,"NotAssigned"):`${companyTraining.instructor.displayName}(${companyTraining.instructor.id})`} - - showTransferModel(targetComponent,"讲师","instructor",CompanyTrainingService.requestCandidateInstructor, - CompanyTrainingService.transferToAnotherInstructor,"anotherInstructorId",companyTraining.instructor?companyTraining.instructor.id:"")} - style={{fontSize: 20,color:"red"}} /> {companyTraining.trainingCourseType==null?appLocaleName(userContext,"NotAssigned"):`${companyTraining.trainingCourseType.displayName}(${companyTraining.trainingCourseType.id})`} - - showTransferModel(targetComponent,"培训课程类型","trainingCourseType",CompanyTrainingService.requestCandidateTrainingCourseType, - CompanyTrainingService.transferToAnotherTrainingCourseType,"anotherTrainingCourseTypeId",companyTraining.trainingCourseType?companyTraining.trainingCourseType.id:"")} - style={{fontSize: 20,color:"red"}} /> { moment(companyTraining.timeStart).format('YYYY-MM-DD')} {companyTraining.durationHours} { moment(companyTraining.lastUpdateTime).format('YYYY-MM-DD')} - {buildTransferModal(companyTraining,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/companytraining/CompanyTraining.createform.js b/bizui/src/bizcomponents/companytraining/CompanyTraining.createform.js index eef334ebf..d12104baf 100644 --- a/bizui/src/bizcomponents/companytraining/CompanyTraining.createform.js +++ b/bizui/src/bizcomponents/companytraining/CompanyTraining.createform.js @@ -18,11 +18,11 @@ const testValues = {}; /* const testValues = { title: '入职培训', - timeStart: '2016-07-23', + timeStart: '2017-06-06', durationHours: '3', - companyId: 'RSCC000001', - instructorId: 'I000001', - trainingCourseTypeId: 'TCT000001', + companyId: 'RSCC00000001', + instructorId: 'I00000001', + trainingCourseTypeId: 'TCT00000001', } */ diff --git a/bizui/src/bizcomponents/companytraining/CompanyTraining.dashboard.js b/bizui/src/bizcomponents/companytraining/CompanyTraining.dashboard.js index 403094184..c6dd91bc7 100644 --- a/bizui/src/bizcomponents/companytraining/CompanyTraining.dashboard.js +++ b/bizui/src/bizcomponents/companytraining/CompanyTraining.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(companyTraining)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (companyTraining) =>defaultSettingListOf(companyTraining, optionList) const internalLargeTextOf = (companyTraining) =>{ @@ -138,7 +138,7 @@ class CompanyTrainingDashboard extends Component { const cardsData = {cardsName:"公司培训",cardsFor: "companyTraining", cardsSource: this.props.companyTraining,returnURL,displayName, subItems: [ -{name: 'employeeCompanyTrainingList', displayName:'员工参与的公司培训',type:'employeeCompanyTraining',count:employeeCompanyTrainingCount,addFunction: true, role: 'employeeCompanyTraining', metaInfo: employeeCompanyTrainingListMetaInfo}, +{name: 'employeeCompanyTrainingList', displayName:'员工参与的公司培训',type:'employeeCompanyTraining',count:employeeCompanyTrainingCount,addFunction: true, role: 'employeeCompanyTraining', metaInfo: employeeCompanyTrainingListMetaInfo, renderItem: GlobalComponents.EmployeeCompanyTrainingBase.renderItemOfList}, ], }; @@ -153,6 +153,8 @@ class CompanyTrainingDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/companytraining/CompanyTraining.permission.js b/bizui/src/bizcomponents/companytraining/CompanyTraining.permission.js index 554665d1d..b3cd1ae3e 100644 --- a/bizui/src/bizcomponents/companytraining/CompanyTraining.permission.js +++ b/bizui/src/bizcomponents/companytraining/CompanyTraining.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './CompanyTraining.preference.less' +import styles from './CompanyTraining.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/companytraining/CompanyTraining.preference.js b/bizui/src/bizcomponents/companytraining/CompanyTraining.preference.js deleted file mode 100644 index 87b519557..000000000 --- a/bizui/src/bizcomponents/companytraining/CompanyTraining.preference.js +++ /dev/null @@ -1,364 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './CompanyTraining.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (companyTraining) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (companyTraining) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (companyTraining) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {CompanyTrainingService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = CompanyTrainingService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (companyTraining,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=companyTraining.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_companyTraining/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (companyTraining,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(companyTraining,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (companyTraining) =>{ - return null -} -const internalRenderExtraFooter = (companyTraining) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (companyTraining,targetComponent) =>{ - const userContext = null - return ( - -{companyTraining.id} -{companyTraining.title} -{companyTraining.instructor==null?appLocaleName(userContext,"NotAssigned"):companyTraining.instructor.displayName} - - showTransferModel(targetComponent,"讲师","instructor","requestCandidateInstructor", - "transferToAnotherInstructor","anotherInstructorId",companyTraining.instructor?companyTraining.instructor.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{companyTraining.trainingCourseType==null?appLocaleName(userContext,"NotAssigned"):companyTraining.trainingCourseType.displayName} - - showTransferModel(targetComponent,"培训课程类型","trainingCourseType","requestCandidateTrainingCourseType", - "transferToAnotherTrainingCourseType","anotherTrainingCourseTypeId",companyTraining.trainingCourseType?companyTraining.trainingCourseType.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{ moment(companyTraining.timeStart).format('YYYY-MM-DD')} -{companyTraining.durationHours} -{ moment(companyTraining.lastUpdateTime).format('YYYY-MM-DD')} - - {buildTransferModal(companyTraining,targetComponent)} - - ) - -} - - -const renderPermissionSetting = companyTraining => { - const {CompanyTrainingBase} = GlobalComponents - return - - -} - - -class CompanyTrainingPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const companyTraining = this.props.companyTraining; - const { id,displayName, employeeCompanyTrainingCount } = companyTraining - - - - const cardsData = {cardsName:"公司培训",cardsFor: "companyTraining",cardsSource: companyTraining, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - companyTraining: state._companyTraining, -}))(Form.create()(CompanyTrainingPreference)) - diff --git a/bizui/src/bizcomponents/companytraining/CompanyTraining.preference.less b/bizui/src/bizcomponents/companytraining/CompanyTraining.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/companytraining/CompanyTraining.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/companytraining/CompanyTraining.profile.js b/bizui/src/bizcomponents/companytraining/CompanyTraining.profile.js index 01416414b..2371cc496 100644 --- a/bizui/src/bizcomponents/companytraining/CompanyTraining.profile.js +++ b/bizui/src/bizcomponents/companytraining/CompanyTraining.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './CompanyTraining.preference.less' +import styles from './CompanyTraining.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,19 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (companyTraining,targetComponent) =>{ - const userContext = null - return ( - -{companyTraining.id} -{companyTraining.title} -{ moment(companyTraining.timeStart).format('YYYY-MM-DD')} -{companyTraining.durationHours} -{ moment(companyTraining.lastUpdateTime).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.CompanyTrainingBase.renderItemOfList(item, targetComponents) + } @@ -66,13 +58,14 @@ class CompanyTrainingProfile extends Component { const cardsData = {cardsName:"公司培训",cardsFor: "companyTraining",cardsSource: companyTraining, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -82,7 +75,7 @@ class CompanyTrainingProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/consumerorder/ConsumerOrder.associateform.js b/bizui/src/bizcomponents/consumerorder/ConsumerOrder.associateform.js index ccb61b140..99dbdf912 100644 --- a/bizui/src/bizcomponents/consumerorder/ConsumerOrder.associateform.js +++ b/bizui/src/bizcomponents/consumerorder/ConsumerOrder.associateform.js @@ -19,8 +19,8 @@ const testValues = {}; /* const testValues = { title: '消费订单', - consumerId: 'RSM000001', - storeId: 'RS000001', + consumerId: 'RSM00000001', + storeId: 'RS00000001', } */ diff --git a/bizui/src/bizcomponents/consumerorder/ConsumerOrder.base.js b/bizui/src/bizcomponents/consumerorder/ConsumerOrder.base.js index da49c02fc..0348498cd 100644 --- a/bizui/src/bizcomponents/consumerorder/ConsumerOrder.base.js +++ b/bizui/src/bizcomponents/consumerorder/ConsumerOrder.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -45,10 +46,10 @@ const fieldLabels = { title: '头衔', consumer: '消费者', confirmation: '确认', - approval: '验收', - processing: '处理', - shipment: '装运', - delivery: '送货', + approval: '批准', + processing: '过程', + shipment: '船', + delivery: '交付', store: '商场', lastUpdateTime: '最后更新时间', currentStatus: '当前状态', @@ -70,33 +71,29 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({consumerOrder,targetComponent})=>{ +const renderItemOfList=(consumerOrder,targetComponent)=>{ - const {ConsumerOrderService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {consumerOrder.id} {consumerOrder.title} {consumerOrder.consumer==null?appLocaleName(userContext,"NotAssigned"):`${consumerOrder.consumer.displayName}(${consumerOrder.consumer.id})`} - - showTransferModel(targetComponent,"消费者","retailStoreMember",ConsumerOrderService.requestCandidateConsumer, - ConsumerOrderService.transferToAnotherConsumer,"anotherConsumerId",consumerOrder.consumer?consumerOrder.consumer.id:"")} - style={{fontSize: 20,color:"red"}} /> {consumerOrder.store==null?appLocaleName(userContext,"NotAssigned"):`${consumerOrder.store.displayName}(${consumerOrder.store.id})`} - - showTransferModel(targetComponent,"商场","retailStore",ConsumerOrderService.requestCandidateStore, - ConsumerOrderService.transferToAnotherStore,"anotherStoreId",consumerOrder.store?consumerOrder.store.id:"")} - style={{fontSize: 20,color:"red"}} /> { moment(consumerOrder.lastUpdateTime).format('YYYY-MM-DD')} {consumerOrder.currentStatus} - {buildTransferModal(consumerOrder,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/consumerorder/ConsumerOrder.createform.js b/bizui/src/bizcomponents/consumerorder/ConsumerOrder.createform.js index 333f88f19..a39346e38 100644 --- a/bizui/src/bizcomponents/consumerorder/ConsumerOrder.createform.js +++ b/bizui/src/bizcomponents/consumerorder/ConsumerOrder.createform.js @@ -18,8 +18,8 @@ const testValues = {}; /* const testValues = { title: '消费订单', - consumerId: 'RSM000001', - storeId: 'RS000001', + consumerId: 'RSM00000001', + storeId: 'RS00000001', } */ diff --git a/bizui/src/bizcomponents/consumerorder/ConsumerOrder.dashboard.js b/bizui/src/bizcomponents/consumerorder/ConsumerOrder.dashboard.js index de1be6d3c..ea224d1d9 100644 --- a/bizui/src/bizcomponents/consumerorder/ConsumerOrder.dashboard.js +++ b/bizui/src/bizcomponents/consumerorder/ConsumerOrder.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(consumerOrder)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (consumerOrder) =>defaultSettingListOf(consumerOrder, optionList) const internalLargeTextOf = (consumerOrder) =>{ @@ -137,11 +137,11 @@ class ConsumerOrderDashboard extends Component { const cardsData = {cardsName:"消费者订单",cardsFor: "consumerOrder", cardsSource: this.props.consumerOrder,returnURL,displayName, subItems: [ -{name: 'consumerOrderLineItemList', displayName:'消费者订单行项目',type:'consumerOrderLineItem',count:consumerOrderLineItemCount,addFunction: true, role: 'consumerOrderLineItem', metaInfo: consumerOrderLineItemListMetaInfo}, -{name: 'consumerOrderShippingGroupList', displayName:'消费订单送货分组',type:'consumerOrderShippingGroup',count:consumerOrderShippingGroupCount,addFunction: true, role: 'consumerOrderShippingGroup', metaInfo: consumerOrderShippingGroupListMetaInfo}, -{name: 'consumerOrderPaymentGroupList', displayName:'消费者订单付款组',type:'consumerOrderPaymentGroup',count:consumerOrderPaymentGroupCount,addFunction: true, role: 'consumerOrderPaymentGroup', metaInfo: consumerOrderPaymentGroupListMetaInfo}, -{name: 'consumerOrderPriceAdjustmentList', displayName:'消费品价格调整',type:'consumerOrderPriceAdjustment',count:consumerOrderPriceAdjustmentCount,addFunction: true, role: 'consumerOrderPriceAdjustment', metaInfo: consumerOrderPriceAdjustmentListMetaInfo}, -{name: 'retailStoreMemberGiftCardConsumeRecordList', displayName:'零售商店会员卡消费记录',type:'retailStoreMemberGiftCardConsumeRecord',count:retailStoreMemberGiftCardConsumeRecordCount,addFunction: true, role: 'retailStoreMemberGiftCardConsumeRecord', metaInfo: retailStoreMemberGiftCardConsumeRecordListMetaInfo}, +{name: 'consumerOrderLineItemList', displayName:'消费者订单行项目',type:'consumerOrderLineItem',count:consumerOrderLineItemCount,addFunction: true, role: 'consumerOrderLineItem', metaInfo: consumerOrderLineItemListMetaInfo, renderItem: GlobalComponents.ConsumerOrderLineItemBase.renderItemOfList}, +{name: 'consumerOrderShippingGroupList', displayName:'消费订单送货分组',type:'consumerOrderShippingGroup',count:consumerOrderShippingGroupCount,addFunction: true, role: 'consumerOrderShippingGroup', metaInfo: consumerOrderShippingGroupListMetaInfo, renderItem: GlobalComponents.ConsumerOrderShippingGroupBase.renderItemOfList}, +{name: 'consumerOrderPaymentGroupList', displayName:'消费者订单付款组',type:'consumerOrderPaymentGroup',count:consumerOrderPaymentGroupCount,addFunction: true, role: 'consumerOrderPaymentGroup', metaInfo: consumerOrderPaymentGroupListMetaInfo, renderItem: GlobalComponents.ConsumerOrderPaymentGroupBase.renderItemOfList}, +{name: 'consumerOrderPriceAdjustmentList', displayName:'消费品价格调整',type:'consumerOrderPriceAdjustment',count:consumerOrderPriceAdjustmentCount,addFunction: true, role: 'consumerOrderPriceAdjustment', metaInfo: consumerOrderPriceAdjustmentListMetaInfo, renderItem: GlobalComponents.ConsumerOrderPriceAdjustmentBase.renderItemOfList}, +{name: 'retailStoreMemberGiftCardConsumeRecordList', displayName:'零售商店会员卡消费记录',type:'retailStoreMemberGiftCardConsumeRecord',count:retailStoreMemberGiftCardConsumeRecordCount,addFunction: true, role: 'retailStoreMemberGiftCardConsumeRecord', metaInfo: retailStoreMemberGiftCardConsumeRecordListMetaInfo, renderItem: GlobalComponents.RetailStoreMemberGiftCardConsumeRecordBase.renderItemOfList}, ], }; @@ -156,6 +156,8 @@ class ConsumerOrderDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/consumerorder/ConsumerOrder.permission.js b/bizui/src/bizcomponents/consumerorder/ConsumerOrder.permission.js index e353c153e..f88b5a8a0 100644 --- a/bizui/src/bizcomponents/consumerorder/ConsumerOrder.permission.js +++ b/bizui/src/bizcomponents/consumerorder/ConsumerOrder.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ConsumerOrder.preference.less' +import styles from './ConsumerOrder.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/consumerorder/ConsumerOrder.preference.js b/bizui/src/bizcomponents/consumerorder/ConsumerOrder.preference.js deleted file mode 100644 index 09e910690..000000000 --- a/bizui/src/bizcomponents/consumerorder/ConsumerOrder.preference.js +++ /dev/null @@ -1,363 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ConsumerOrder.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (consumerOrder) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (consumerOrder) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (consumerOrder) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {ConsumerOrderService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = ConsumerOrderService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (consumerOrder,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=consumerOrder.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_consumerOrder/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (consumerOrder,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(consumerOrder,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (consumerOrder) =>{ - return null -} -const internalRenderExtraFooter = (consumerOrder) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (consumerOrder,targetComponent) =>{ - const userContext = null - return ( - -{consumerOrder.id} -{consumerOrder.title} -{consumerOrder.consumer==null?appLocaleName(userContext,"NotAssigned"):consumerOrder.consumer.displayName} - - showTransferModel(targetComponent,"消费者","retailStoreMember","requestCandidateConsumer", - "transferToAnotherConsumer","anotherConsumerId",consumerOrder.consumer?consumerOrder.consumer.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{consumerOrder.store==null?appLocaleName(userContext,"NotAssigned"):consumerOrder.store.displayName} - - showTransferModel(targetComponent,"商场","retailStore","requestCandidateStore", - "transferToAnotherStore","anotherStoreId",consumerOrder.store?consumerOrder.store.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{ moment(consumerOrder.lastUpdateTime).format('YYYY-MM-DD')} -{consumerOrder.currentStatus} - - {buildTransferModal(consumerOrder,targetComponent)} - - ) - -} - - -const renderPermissionSetting = consumerOrder => { - const {ConsumerOrderBase} = GlobalComponents - return - - -} - - -class ConsumerOrderPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const consumerOrder = this.props.consumerOrder; - const { id,displayName, consumerOrderLineItemCount, consumerOrderShippingGroupCount, consumerOrderPaymentGroupCount, consumerOrderPriceAdjustmentCount, retailStoreMemberGiftCardConsumeRecordCount } = consumerOrder - - - - const cardsData = {cardsName:"消费者订单",cardsFor: "consumerOrder",cardsSource: consumerOrder, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - consumerOrder: state._consumerOrder, -}))(Form.create()(ConsumerOrderPreference)) - diff --git a/bizui/src/bizcomponents/consumerorder/ConsumerOrder.preference.less b/bizui/src/bizcomponents/consumerorder/ConsumerOrder.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/consumerorder/ConsumerOrder.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/consumerorder/ConsumerOrder.profile.js b/bizui/src/bizcomponents/consumerorder/ConsumerOrder.profile.js index 29224b358..473baf2b2 100644 --- a/bizui/src/bizcomponents/consumerorder/ConsumerOrder.profile.js +++ b/bizui/src/bizcomponents/consumerorder/ConsumerOrder.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ConsumerOrder.preference.less' +import styles from './ConsumerOrder.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,18 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (consumerOrder,targetComponent) =>{ - const userContext = null - return ( - -{consumerOrder.id} -{consumerOrder.title} -{ moment(consumerOrder.lastUpdateTime).format('YYYY-MM-DD')} -{consumerOrder.currentStatus} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.ConsumerOrderBase.renderItemOfList(item, targetComponents) + } @@ -65,13 +58,14 @@ class ConsumerOrderProfile extends Component { const cardsData = {cardsName:"消费者订单",cardsFor: "consumerOrder",cardsSource: consumerOrder, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -81,7 +75,7 @@ class ConsumerOrderProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.associateform.js b/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.associateform.js index 080005736..6ccc49678 100644 --- a/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.associateform.js +++ b/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { who: '批准者', - approveTime: '2016-06-07', + approveTime: '2017-10-22', } */ diff --git a/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.base.js b/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.base.js index 3c2d4d9ae..4a088e52d 100644 --- a/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.base.js +++ b/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -49,20 +50,24 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({consumerOrderApproval,targetComponent})=>{ +const renderItemOfList=(consumerOrderApproval,targetComponent)=>{ - const {ConsumerOrderApprovalService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {consumerOrderApproval.id} {consumerOrderApproval.who} { moment(consumerOrderApproval.approveTime).format('YYYY-MM-DD')} - {buildTransferModal(consumerOrderApproval,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.createform.js b/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.createform.js index 46c72ff7e..812ac9df1 100644 --- a/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.createform.js +++ b/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { who: '批准者', - approveTime: '2018-05-09', + approveTime: '2017-12-04', } */ diff --git a/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.dashboard.js b/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.dashboard.js index c0902d3b6..f747b1afe 100644 --- a/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.dashboard.js +++ b/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(consumerOrderApproval)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (consumerOrderApproval) =>defaultSettingListOf(consumerOrderApproval, optionList) const internalLargeTextOf = (consumerOrderApproval) =>{ @@ -138,6 +138,8 @@ class ConsumerOrderApprovalDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.permission.js b/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.permission.js index 884269316..2c28992a5 100644 --- a/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.permission.js +++ b/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ConsumerOrderApproval.preference.less' +import styles from './ConsumerOrderApproval.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.preference.js b/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.preference.js deleted file mode 100644 index 4b9121534..000000000 --- a/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.preference.js +++ /dev/null @@ -1,350 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ConsumerOrderApproval.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (consumerOrderApproval) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (consumerOrderApproval) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (consumerOrderApproval) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {ConsumerOrderApprovalService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = ConsumerOrderApprovalService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (consumerOrderApproval,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=consumerOrderApproval.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_consumerOrderApproval/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (consumerOrderApproval,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(consumerOrderApproval,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (consumerOrderApproval) =>{ - return null -} -const internalRenderExtraFooter = (consumerOrderApproval) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (consumerOrderApproval,targetComponent) =>{ - const userContext = null - return ( - -{consumerOrderApproval.id} -{consumerOrderApproval.who} -{ moment(consumerOrderApproval.approveTime).format('YYYY-MM-DD')} - - {buildTransferModal(consumerOrderApproval,targetComponent)} - - ) - -} - - -const renderPermissionSetting = consumerOrderApproval => { - const {ConsumerOrderApprovalBase} = GlobalComponents - return - - -} - - -class ConsumerOrderApprovalPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const consumerOrderApproval = this.props.consumerOrderApproval; - const { id,displayName, } = consumerOrderApproval - - - - const cardsData = {cardsName:"消费者的订单审批",cardsFor: "consumerOrderApproval",cardsSource: consumerOrderApproval, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - consumerOrderApproval: state._consumerOrderApproval, -}))(Form.create()(ConsumerOrderApprovalPreference)) - diff --git a/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.preference.less b/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.profile.js b/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.profile.js index cded03efb..7f47966a8 100644 --- a/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.profile.js +++ b/bizui/src/bizcomponents/consumerorderapproval/ConsumerOrderApproval.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ConsumerOrderApproval.preference.less' +import styles from './ConsumerOrderApproval.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,17 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (consumerOrderApproval,targetComponent) =>{ - const userContext = null - return ( - -{consumerOrderApproval.id} -{consumerOrderApproval.who} -{ moment(consumerOrderApproval.approveTime).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.ConsumerOrderApprovalBase.renderItemOfList(item, targetComponents) + } @@ -64,13 +58,14 @@ class ConsumerOrderApprovalProfile extends Component { const cardsData = {cardsName:"消费者的订单审批",cardsFor: "consumerOrderApproval",cardsSource: consumerOrderApproval, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -80,7 +75,7 @@ class ConsumerOrderApprovalProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.associateform.js b/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.associateform.js index 35811123d..bed31c04f 100644 --- a/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.associateform.js +++ b/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { who: '确认者', - confirmTime: '2017-09-09', + confirmTime: '2016-09-18', } */ diff --git a/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.base.js b/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.base.js index e45fa2516..25409fd2f 100644 --- a/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.base.js +++ b/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -49,20 +50,24 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({consumerOrderConfirmation,targetComponent})=>{ +const renderItemOfList=(consumerOrderConfirmation,targetComponent)=>{ - const {ConsumerOrderConfirmationService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {consumerOrderConfirmation.id} {consumerOrderConfirmation.who} { moment(consumerOrderConfirmation.confirmTime).format('YYYY-MM-DD')} - {buildTransferModal(consumerOrderConfirmation,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.createform.js b/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.createform.js index bde79f168..d247a0df6 100644 --- a/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.createform.js +++ b/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { who: '确认者', - confirmTime: '2017-11-24', + confirmTime: '2017-08-19', } */ diff --git a/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.dashboard.js b/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.dashboard.js index 0105dd2df..629c7651a 100644 --- a/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.dashboard.js +++ b/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(consumerOrderConfirmation)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (consumerOrderConfirmation) =>defaultSettingListOf(consumerOrderConfirmation, optionList) const internalLargeTextOf = (consumerOrderConfirmation) =>{ @@ -138,6 +138,8 @@ class ConsumerOrderConfirmationDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.permission.js b/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.permission.js index fafe1534c..942769ebd 100644 --- a/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.permission.js +++ b/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ConsumerOrderConfirmation.preference.less' +import styles from './ConsumerOrderConfirmation.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.preference.js b/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.preference.js deleted file mode 100644 index dfe03fa5e..000000000 --- a/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.preference.js +++ /dev/null @@ -1,350 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ConsumerOrderConfirmation.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (consumerOrderConfirmation) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (consumerOrderConfirmation) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (consumerOrderConfirmation) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {ConsumerOrderConfirmationService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = ConsumerOrderConfirmationService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (consumerOrderConfirmation,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=consumerOrderConfirmation.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_consumerOrderConfirmation/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (consumerOrderConfirmation,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(consumerOrderConfirmation,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (consumerOrderConfirmation) =>{ - return null -} -const internalRenderExtraFooter = (consumerOrderConfirmation) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (consumerOrderConfirmation,targetComponent) =>{ - const userContext = null - return ( - -{consumerOrderConfirmation.id} -{consumerOrderConfirmation.who} -{ moment(consumerOrderConfirmation.confirmTime).format('YYYY-MM-DD')} - - {buildTransferModal(consumerOrderConfirmation,targetComponent)} - - ) - -} - - -const renderPermissionSetting = consumerOrderConfirmation => { - const {ConsumerOrderConfirmationBase} = GlobalComponents - return - - -} - - -class ConsumerOrderConfirmationPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const consumerOrderConfirmation = this.props.consumerOrderConfirmation; - const { id,displayName, } = consumerOrderConfirmation - - - - const cardsData = {cardsName:"客户订单确认",cardsFor: "consumerOrderConfirmation",cardsSource: consumerOrderConfirmation, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - consumerOrderConfirmation: state._consumerOrderConfirmation, -}))(Form.create()(ConsumerOrderConfirmationPreference)) - diff --git a/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.preference.less b/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.profile.js b/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.profile.js index 78c0e9255..157ddf7f0 100644 --- a/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.profile.js +++ b/bizui/src/bizcomponents/consumerorderconfirmation/ConsumerOrderConfirmation.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ConsumerOrderConfirmation.preference.less' +import styles from './ConsumerOrderConfirmation.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,17 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (consumerOrderConfirmation,targetComponent) =>{ - const userContext = null - return ( - -{consumerOrderConfirmation.id} -{consumerOrderConfirmation.who} -{ moment(consumerOrderConfirmation.confirmTime).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.ConsumerOrderConfirmationBase.renderItemOfList(item, targetComponents) + } @@ -64,13 +58,14 @@ class ConsumerOrderConfirmationProfile extends Component { const cardsData = {cardsName:"客户订单确认",cardsFor: "consumerOrderConfirmation",cardsSource: consumerOrderConfirmation, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -80,7 +75,7 @@ class ConsumerOrderConfirmationProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.associateform.js b/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.associateform.js index c463be194..d5ebba4c7 100644 --- a/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.associateform.js +++ b/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { who: '送货者', - deliveryTime: '2016-09-29', + deliveryTime: '2019-02-04', } */ diff --git a/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.base.js b/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.base.js index 1985fea48..9ef699836 100644 --- a/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.base.js +++ b/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -49,20 +50,24 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({consumerOrderDelivery,targetComponent})=>{ +const renderItemOfList=(consumerOrderDelivery,targetComponent)=>{ - const {ConsumerOrderDeliveryService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {consumerOrderDelivery.id} {consumerOrderDelivery.who} { moment(consumerOrderDelivery.deliveryTime).format('YYYY-MM-DD')} - {buildTransferModal(consumerOrderDelivery,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.createform.js b/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.createform.js index 1045169d1..7cf5c2d2d 100644 --- a/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.createform.js +++ b/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { who: '送货者', - deliveryTime: '2018-02-26', + deliveryTime: '2017-02-07', } */ diff --git a/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.dashboard.js b/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.dashboard.js index 1f888ca6b..56b7e1818 100644 --- a/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.dashboard.js +++ b/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(consumerOrderDelivery)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (consumerOrderDelivery) =>defaultSettingListOf(consumerOrderDelivery, optionList) const internalLargeTextOf = (consumerOrderDelivery) =>{ @@ -138,6 +138,8 @@ class ConsumerOrderDeliveryDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.permission.js b/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.permission.js index a669bd236..b739e9285 100644 --- a/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.permission.js +++ b/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ConsumerOrderDelivery.preference.less' +import styles from './ConsumerOrderDelivery.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.preference.js b/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.preference.js deleted file mode 100644 index 11700d547..000000000 --- a/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.preference.js +++ /dev/null @@ -1,350 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ConsumerOrderDelivery.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (consumerOrderDelivery) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (consumerOrderDelivery) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (consumerOrderDelivery) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {ConsumerOrderDeliveryService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = ConsumerOrderDeliveryService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (consumerOrderDelivery,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=consumerOrderDelivery.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_consumerOrderDelivery/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (consumerOrderDelivery,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(consumerOrderDelivery,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (consumerOrderDelivery) =>{ - return null -} -const internalRenderExtraFooter = (consumerOrderDelivery) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (consumerOrderDelivery,targetComponent) =>{ - const userContext = null - return ( - -{consumerOrderDelivery.id} -{consumerOrderDelivery.who} -{ moment(consumerOrderDelivery.deliveryTime).format('YYYY-MM-DD')} - - {buildTransferModal(consumerOrderDelivery,targetComponent)} - - ) - -} - - -const renderPermissionSetting = consumerOrderDelivery => { - const {ConsumerOrderDeliveryBase} = GlobalComponents - return - - -} - - -class ConsumerOrderDeliveryPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const consumerOrderDelivery = this.props.consumerOrderDelivery; - const { id,displayName, } = consumerOrderDelivery - - - - const cardsData = {cardsName:"消费者订单交货",cardsFor: "consumerOrderDelivery",cardsSource: consumerOrderDelivery, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - consumerOrderDelivery: state._consumerOrderDelivery, -}))(Form.create()(ConsumerOrderDeliveryPreference)) - diff --git a/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.preference.less b/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.profile.js b/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.profile.js index 1b1d169ed..ec00f32f5 100644 --- a/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.profile.js +++ b/bizui/src/bizcomponents/consumerorderdelivery/ConsumerOrderDelivery.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ConsumerOrderDelivery.preference.less' +import styles from './ConsumerOrderDelivery.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,17 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (consumerOrderDelivery,targetComponent) =>{ - const userContext = null - return ( - -{consumerOrderDelivery.id} -{consumerOrderDelivery.who} -{ moment(consumerOrderDelivery.deliveryTime).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.ConsumerOrderDeliveryBase.renderItemOfList(item, targetComponents) + } @@ -64,13 +58,14 @@ class ConsumerOrderDeliveryProfile extends Component { const cardsData = {cardsName:"消费者订单交货",cardsFor: "consumerOrderDelivery",cardsSource: consumerOrderDelivery, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -80,7 +75,7 @@ class ConsumerOrderDeliveryProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.associateform.js b/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.associateform.js index b8a6aa039..985faab91 100644 --- a/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.associateform.js +++ b/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.associateform.js @@ -20,10 +20,10 @@ const testValues = {}; const testValues = { skuId: 'SKU', skuName: '大瓶可乐', - price: '5.26', - quantity: '848.95', - amount: '9191.32', - bizOrderId: 'CO000001', + price: '4.93', + quantity: '807.53', + amount: '8526.21', + bizOrderId: 'CO00000001', } */ diff --git a/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.base.js b/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.base.js index d1a930a30..007c6f1bd 100644 --- a/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.base.js +++ b/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -59,20 +60,18 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({consumerOrderLineItem,targetComponent})=>{ +const renderItemOfList=(consumerOrderLineItem,targetComponent)=>{ - const {ConsumerOrderLineItemService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {consumerOrderLineItem.id} {consumerOrderLineItem.bizOrder==null?appLocaleName(userContext,"NotAssigned"):`${consumerOrderLineItem.bizOrder.displayName}(${consumerOrderLineItem.bizOrder.id})`} - - showTransferModel(targetComponent,"订单","consumerOrder",ConsumerOrderLineItemService.requestCandidateBizOrder, - ConsumerOrderLineItemService.transferToAnotherBizOrder,"anotherBizOrderId",consumerOrderLineItem.bizOrder?consumerOrderLineItem.bizOrder.id:"")} - style={{fontSize: 20,color:"red"}} /> {consumerOrderLineItem.skuId} {consumerOrderLineItem.skuName} @@ -81,8 +80,10 @@ const renderItemOfList=({consumerOrderLineItem,targetComponent})=>{ {consumerOrderLineItem.amount} { moment(consumerOrderLineItem.lastUpdateTime).format('YYYY-MM-DD')} - {buildTransferModal(consumerOrderLineItem,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.createform.js b/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.createform.js index 182792ac7..0f988f2f3 100644 --- a/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.createform.js +++ b/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.createform.js @@ -19,10 +19,10 @@ const testValues = {}; const testValues = { skuId: 'SKU', skuName: '大瓶可乐', - price: '4.40', - quantity: '971.77', - amount: '7242.78', - bizOrderId: 'CO000001', + price: '4.81', + quantity: '912.51', + amount: '7994.48', + bizOrderId: 'CO00000001', } */ diff --git a/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.dashboard.js b/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.dashboard.js index e4d7240c2..0d0105c4d 100644 --- a/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.dashboard.js +++ b/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(consumerOrderLineItem)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (consumerOrderLineItem) =>defaultSettingListOf(consumerOrderLineItem, optionList) const internalLargeTextOf = (consumerOrderLineItem) =>{ @@ -148,6 +148,8 @@ class ConsumerOrderLineItemDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.permission.js b/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.permission.js index 7240ee784..8e59d9eaf 100644 --- a/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.permission.js +++ b/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ConsumerOrderLineItem.preference.less' +import styles from './ConsumerOrderLineItem.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.preference.js b/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.preference.js deleted file mode 100644 index 0d3f1e594..000000000 --- a/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.preference.js +++ /dev/null @@ -1,360 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ConsumerOrderLineItem.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (consumerOrderLineItem) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (consumerOrderLineItem) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (consumerOrderLineItem) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {ConsumerOrderLineItemService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = ConsumerOrderLineItemService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (consumerOrderLineItem,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=consumerOrderLineItem.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_consumerOrderLineItem/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (consumerOrderLineItem,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(consumerOrderLineItem,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (consumerOrderLineItem) =>{ - return null -} -const internalRenderExtraFooter = (consumerOrderLineItem) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (consumerOrderLineItem,targetComponent) =>{ - const userContext = null - return ( - -{consumerOrderLineItem.id} -{consumerOrderLineItem.bizOrder==null?appLocaleName(userContext,"NotAssigned"):consumerOrderLineItem.bizOrder.displayName} - - showTransferModel(targetComponent,"订单","consumerOrder","requestCandidateBizOrder", - "transferToAnotherBizOrder","anotherBizOrderId",consumerOrderLineItem.bizOrder?consumerOrderLineItem.bizOrder.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{consumerOrderLineItem.skuId} -{consumerOrderLineItem.skuName} -{consumerOrderLineItem.price} -{consumerOrderLineItem.quantity} -{consumerOrderLineItem.amount} -{ moment(consumerOrderLineItem.lastUpdateTime).format('YYYY-MM-DD')} - - {buildTransferModal(consumerOrderLineItem,targetComponent)} - - ) - -} - - -const renderPermissionSetting = consumerOrderLineItem => { - const {ConsumerOrderLineItemBase} = GlobalComponents - return - - -} - - -class ConsumerOrderLineItemPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const consumerOrderLineItem = this.props.consumerOrderLineItem; - const { id,displayName, } = consumerOrderLineItem - - - - const cardsData = {cardsName:"消费者订单行项目",cardsFor: "consumerOrderLineItem",cardsSource: consumerOrderLineItem, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - consumerOrderLineItem: state._consumerOrderLineItem, -}))(Form.create()(ConsumerOrderLineItemPreference)) - diff --git a/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.preference.less b/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.profile.js b/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.profile.js index 963c28083..72562581e 100644 --- a/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.profile.js +++ b/bizui/src/bizcomponents/consumerorderlineitem/ConsumerOrderLineItem.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ConsumerOrderLineItem.preference.less' +import styles from './ConsumerOrderLineItem.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,21 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (consumerOrderLineItem,targetComponent) =>{ - const userContext = null - return ( - -{consumerOrderLineItem.id} -{consumerOrderLineItem.skuId} -{consumerOrderLineItem.skuName} -{consumerOrderLineItem.price} -{consumerOrderLineItem.quantity} -{consumerOrderLineItem.amount} -{ moment(consumerOrderLineItem.lastUpdateTime).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.ConsumerOrderLineItemBase.renderItemOfList(item, targetComponents) + } @@ -68,13 +58,14 @@ class ConsumerOrderLineItemProfile extends Component { const cardsData = {cardsName:"消费者订单行项目",cardsFor: "consumerOrderLineItem",cardsSource: consumerOrderLineItem, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -84,7 +75,7 @@ class ConsumerOrderLineItemProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.associateform.js b/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.associateform.js index 85ce5dfa7..3c92dfd8a 100644 --- a/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.associateform.js +++ b/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.associateform.js @@ -20,7 +20,7 @@ const testValues = {}; const testValues = { name: '信用卡', cardNumber: '4111 1111 1111 - ', - bizOrderId: 'CO000001', + bizOrderId: 'CO00000001', } */ diff --git a/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.base.js b/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.base.js index 37f2e03fa..a92931884 100644 --- a/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.base.js +++ b/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -51,26 +52,26 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({consumerOrderPaymentGroup,targetComponent})=>{ +const renderItemOfList=(consumerOrderPaymentGroup,targetComponent)=>{ - const {ConsumerOrderPaymentGroupService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {consumerOrderPaymentGroup.id} {consumerOrderPaymentGroup.name} {consumerOrderPaymentGroup.bizOrder==null?appLocaleName(userContext,"NotAssigned"):`${consumerOrderPaymentGroup.bizOrder.displayName}(${consumerOrderPaymentGroup.bizOrder.id})`} - - showTransferModel(targetComponent,"订单","consumerOrder",ConsumerOrderPaymentGroupService.requestCandidateBizOrder, - ConsumerOrderPaymentGroupService.transferToAnotherBizOrder,"anotherBizOrderId",consumerOrderPaymentGroup.bizOrder?consumerOrderPaymentGroup.bizOrder.id:"")} - style={{fontSize: 20,color:"red"}} /> {consumerOrderPaymentGroup.cardNumber} - {buildTransferModal(consumerOrderPaymentGroup,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.createform.js b/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.createform.js index 1f2a29bfb..8321e7cf1 100644 --- a/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.createform.js +++ b/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.createform.js @@ -19,7 +19,7 @@ const testValues = {}; const testValues = { name: '信用卡', cardNumber: '4111 1111 1111 - ', - bizOrderId: 'CO000001', + bizOrderId: 'CO00000001', } */ diff --git a/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.dashboard.js b/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.dashboard.js index 1b15de627..95b6aa986 100644 --- a/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.dashboard.js +++ b/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(consumerOrderPaymentGroup)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (consumerOrderPaymentGroup) =>defaultSettingListOf(consumerOrderPaymentGroup, optionList) const internalLargeTextOf = (consumerOrderPaymentGroup) =>{ @@ -144,6 +144,8 @@ class ConsumerOrderPaymentGroupDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.permission.js b/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.permission.js index 566f495fd..cff306889 100644 --- a/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.permission.js +++ b/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ConsumerOrderPaymentGroup.preference.less' +import styles from './ConsumerOrderPaymentGroup.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.preference.js b/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.preference.js deleted file mode 100644 index d427cbe7b..000000000 --- a/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.preference.js +++ /dev/null @@ -1,356 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ConsumerOrderPaymentGroup.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (consumerOrderPaymentGroup) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (consumerOrderPaymentGroup) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (consumerOrderPaymentGroup) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {ConsumerOrderPaymentGroupService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = ConsumerOrderPaymentGroupService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (consumerOrderPaymentGroup,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=consumerOrderPaymentGroup.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_consumerOrderPaymentGroup/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (consumerOrderPaymentGroup,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(consumerOrderPaymentGroup,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (consumerOrderPaymentGroup) =>{ - return null -} -const internalRenderExtraFooter = (consumerOrderPaymentGroup) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (consumerOrderPaymentGroup,targetComponent) =>{ - const userContext = null - return ( - -{consumerOrderPaymentGroup.id} -{consumerOrderPaymentGroup.name} -{consumerOrderPaymentGroup.bizOrder==null?appLocaleName(userContext,"NotAssigned"):consumerOrderPaymentGroup.bizOrder.displayName} - - showTransferModel(targetComponent,"订单","consumerOrder","requestCandidateBizOrder", - "transferToAnotherBizOrder","anotherBizOrderId",consumerOrderPaymentGroup.bizOrder?consumerOrderPaymentGroup.bizOrder.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{consumerOrderPaymentGroup.cardNumber} - - {buildTransferModal(consumerOrderPaymentGroup,targetComponent)} - - ) - -} - - -const renderPermissionSetting = consumerOrderPaymentGroup => { - const {ConsumerOrderPaymentGroupBase} = GlobalComponents - return - - -} - - -class ConsumerOrderPaymentGroupPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const consumerOrderPaymentGroup = this.props.consumerOrderPaymentGroup; - const { id,displayName, } = consumerOrderPaymentGroup - - - - const cardsData = {cardsName:"消费者订单付款组",cardsFor: "consumerOrderPaymentGroup",cardsSource: consumerOrderPaymentGroup, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - consumerOrderPaymentGroup: state._consumerOrderPaymentGroup, -}))(Form.create()(ConsumerOrderPaymentGroupPreference)) - diff --git a/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.preference.less b/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.profile.js b/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.profile.js index a29a534e1..d671be66d 100644 --- a/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.profile.js +++ b/bizui/src/bizcomponents/consumerorderpaymentgroup/ConsumerOrderPaymentGroup.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ConsumerOrderPaymentGroup.preference.less' +import styles from './ConsumerOrderPaymentGroup.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,17 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (consumerOrderPaymentGroup,targetComponent) =>{ - const userContext = null - return ( - -{consumerOrderPaymentGroup.id} -{consumerOrderPaymentGroup.name} -{consumerOrderPaymentGroup.cardNumber} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.ConsumerOrderPaymentGroupBase.renderItemOfList(item, targetComponents) + } @@ -64,13 +58,14 @@ class ConsumerOrderPaymentGroupProfile extends Component { const cardsData = {cardsName:"消费者订单付款组",cardsFor: "consumerOrderPaymentGroup",cardsSource: consumerOrderPaymentGroup, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -80,7 +75,7 @@ class ConsumerOrderPaymentGroupProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.associateform.js b/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.associateform.js index bdef284e3..61f159e4f 100644 --- a/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.associateform.js +++ b/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.associateform.js @@ -19,9 +19,9 @@ const testValues = {}; /* const testValues = { name: '端午促销', - amount: '429.73', + amount: '493.95', provider: '供货商', - bizOrderId: 'CO000001', + bizOrderId: 'CO00000001', } */ diff --git a/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.base.js b/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.base.js index 8ebcff587..478690cc2 100644 --- a/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.base.js +++ b/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -53,27 +54,27 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({consumerOrderPriceAdjustment,targetComponent})=>{ +const renderItemOfList=(consumerOrderPriceAdjustment,targetComponent)=>{ - const {ConsumerOrderPriceAdjustmentService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {consumerOrderPriceAdjustment.id} {consumerOrderPriceAdjustment.name} {consumerOrderPriceAdjustment.bizOrder==null?appLocaleName(userContext,"NotAssigned"):`${consumerOrderPriceAdjustment.bizOrder.displayName}(${consumerOrderPriceAdjustment.bizOrder.id})`} - - showTransferModel(targetComponent,"订单","consumerOrder",ConsumerOrderPriceAdjustmentService.requestCandidateBizOrder, - ConsumerOrderPriceAdjustmentService.transferToAnotherBizOrder,"anotherBizOrderId",consumerOrderPriceAdjustment.bizOrder?consumerOrderPriceAdjustment.bizOrder.id:"")} - style={{fontSize: 20,color:"red"}} /> {consumerOrderPriceAdjustment.amount} {consumerOrderPriceAdjustment.provider} - {buildTransferModal(consumerOrderPriceAdjustment,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.createform.js b/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.createform.js index 004a5b66b..7584de74f 100644 --- a/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.createform.js +++ b/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.createform.js @@ -18,9 +18,9 @@ const testValues = {}; /* const testValues = { name: '端午促销', - amount: '493.61', + amount: '548.01', provider: '供货商', - bizOrderId: 'CO000001', + bizOrderId: 'CO00000001', } */ diff --git a/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.dashboard.js b/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.dashboard.js index f53e02fe5..23745317f 100644 --- a/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.dashboard.js +++ b/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(consumerOrderPriceAdjustment)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (consumerOrderPriceAdjustment) =>defaultSettingListOf(consumerOrderPriceAdjustment, optionList) const internalLargeTextOf = (consumerOrderPriceAdjustment) =>{ @@ -145,6 +145,8 @@ class ConsumerOrderPriceAdjustmentDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.permission.js b/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.permission.js index 8c6952f67..9bfeef3e4 100644 --- a/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.permission.js +++ b/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ConsumerOrderPriceAdjustment.preference.less' +import styles from './ConsumerOrderPriceAdjustment.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.preference.js b/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.preference.js deleted file mode 100644 index 67eef8eab..000000000 --- a/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.preference.js +++ /dev/null @@ -1,357 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ConsumerOrderPriceAdjustment.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (consumerOrderPriceAdjustment) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (consumerOrderPriceAdjustment) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (consumerOrderPriceAdjustment) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {ConsumerOrderPriceAdjustmentService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = ConsumerOrderPriceAdjustmentService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (consumerOrderPriceAdjustment,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=consumerOrderPriceAdjustment.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_consumerOrderPriceAdjustment/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (consumerOrderPriceAdjustment,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(consumerOrderPriceAdjustment,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (consumerOrderPriceAdjustment) =>{ - return null -} -const internalRenderExtraFooter = (consumerOrderPriceAdjustment) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (consumerOrderPriceAdjustment,targetComponent) =>{ - const userContext = null - return ( - -{consumerOrderPriceAdjustment.id} -{consumerOrderPriceAdjustment.name} -{consumerOrderPriceAdjustment.bizOrder==null?appLocaleName(userContext,"NotAssigned"):consumerOrderPriceAdjustment.bizOrder.displayName} - - showTransferModel(targetComponent,"订单","consumerOrder","requestCandidateBizOrder", - "transferToAnotherBizOrder","anotherBizOrderId",consumerOrderPriceAdjustment.bizOrder?consumerOrderPriceAdjustment.bizOrder.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{consumerOrderPriceAdjustment.amount} -{consumerOrderPriceAdjustment.provider} - - {buildTransferModal(consumerOrderPriceAdjustment,targetComponent)} - - ) - -} - - -const renderPermissionSetting = consumerOrderPriceAdjustment => { - const {ConsumerOrderPriceAdjustmentBase} = GlobalComponents - return - - -} - - -class ConsumerOrderPriceAdjustmentPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const consumerOrderPriceAdjustment = this.props.consumerOrderPriceAdjustment; - const { id,displayName, } = consumerOrderPriceAdjustment - - - - const cardsData = {cardsName:"消费品价格调整",cardsFor: "consumerOrderPriceAdjustment",cardsSource: consumerOrderPriceAdjustment, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - consumerOrderPriceAdjustment: state._consumerOrderPriceAdjustment, -}))(Form.create()(ConsumerOrderPriceAdjustmentPreference)) - diff --git a/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.preference.less b/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.profile.js b/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.profile.js index 4c804a426..a9823ae4b 100644 --- a/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.profile.js +++ b/bizui/src/bizcomponents/consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ConsumerOrderPriceAdjustment.preference.less' +import styles from './ConsumerOrderPriceAdjustment.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,18 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (consumerOrderPriceAdjustment,targetComponent) =>{ - const userContext = null - return ( - -{consumerOrderPriceAdjustment.id} -{consumerOrderPriceAdjustment.name} -{consumerOrderPriceAdjustment.amount} -{consumerOrderPriceAdjustment.provider} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.ConsumerOrderPriceAdjustmentBase.renderItemOfList(item, targetComponents) + } @@ -65,13 +58,14 @@ class ConsumerOrderPriceAdjustmentProfile extends Component { const cardsData = {cardsName:"消费品价格调整",cardsFor: "consumerOrderPriceAdjustment",cardsSource: consumerOrderPriceAdjustment, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -81,7 +75,7 @@ class ConsumerOrderPriceAdjustmentProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.associateform.js b/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.associateform.js index 2ddfc2e11..13f3e21e6 100644 --- a/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.associateform.js +++ b/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { who: '处理者', - processTime: '2019-01-12', + processTime: '2017-01-21', } */ diff --git a/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.base.js b/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.base.js index 16bc7c8b2..cd7fec04e 100644 --- a/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.base.js +++ b/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -49,20 +50,24 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({consumerOrderProcessing,targetComponent})=>{ +const renderItemOfList=(consumerOrderProcessing,targetComponent)=>{ - const {ConsumerOrderProcessingService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {consumerOrderProcessing.id} {consumerOrderProcessing.who} { moment(consumerOrderProcessing.processTime).format('YYYY-MM-DD')} - {buildTransferModal(consumerOrderProcessing,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.createform.js b/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.createform.js index 8d28659c2..4e01a3920 100644 --- a/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.createform.js +++ b/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { who: '处理者', - processTime: '2019-05-04', + processTime: '2017-02-27', } */ diff --git a/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.dashboard.js b/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.dashboard.js index 80c98a5cd..6021314b9 100644 --- a/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.dashboard.js +++ b/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(consumerOrderProcessing)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (consumerOrderProcessing) =>defaultSettingListOf(consumerOrderProcessing, optionList) const internalLargeTextOf = (consumerOrderProcessing) =>{ @@ -138,6 +138,8 @@ class ConsumerOrderProcessingDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.permission.js b/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.permission.js index 6f101617e..dcd1e1d3c 100644 --- a/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.permission.js +++ b/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ConsumerOrderProcessing.preference.less' +import styles from './ConsumerOrderProcessing.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.preference.js b/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.preference.js deleted file mode 100644 index 826cfe988..000000000 --- a/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.preference.js +++ /dev/null @@ -1,350 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ConsumerOrderProcessing.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (consumerOrderProcessing) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (consumerOrderProcessing) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (consumerOrderProcessing) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {ConsumerOrderProcessingService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = ConsumerOrderProcessingService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (consumerOrderProcessing,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=consumerOrderProcessing.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_consumerOrderProcessing/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (consumerOrderProcessing,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(consumerOrderProcessing,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (consumerOrderProcessing) =>{ - return null -} -const internalRenderExtraFooter = (consumerOrderProcessing) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (consumerOrderProcessing,targetComponent) =>{ - const userContext = null - return ( - -{consumerOrderProcessing.id} -{consumerOrderProcessing.who} -{ moment(consumerOrderProcessing.processTime).format('YYYY-MM-DD')} - - {buildTransferModal(consumerOrderProcessing,targetComponent)} - - ) - -} - - -const renderPermissionSetting = consumerOrderProcessing => { - const {ConsumerOrderProcessingBase} = GlobalComponents - return - - -} - - -class ConsumerOrderProcessingPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const consumerOrderProcessing = this.props.consumerOrderProcessing; - const { id,displayName, } = consumerOrderProcessing - - - - const cardsData = {cardsName:"消费者的订单处理",cardsFor: "consumerOrderProcessing",cardsSource: consumerOrderProcessing, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - consumerOrderProcessing: state._consumerOrderProcessing, -}))(Form.create()(ConsumerOrderProcessingPreference)) - diff --git a/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.preference.less b/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.profile.js b/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.profile.js index a5ab6bd88..31de090b9 100644 --- a/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.profile.js +++ b/bizui/src/bizcomponents/consumerorderprocessing/ConsumerOrderProcessing.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ConsumerOrderProcessing.preference.less' +import styles from './ConsumerOrderProcessing.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,17 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (consumerOrderProcessing,targetComponent) =>{ - const userContext = null - return ( - -{consumerOrderProcessing.id} -{consumerOrderProcessing.who} -{ moment(consumerOrderProcessing.processTime).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.ConsumerOrderProcessingBase.renderItemOfList(item, targetComponents) + } @@ -64,13 +58,14 @@ class ConsumerOrderProcessingProfile extends Component { const cardsData = {cardsName:"消费者的订单处理",cardsFor: "consumerOrderProcessing",cardsSource: consumerOrderProcessing, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -80,7 +75,7 @@ class ConsumerOrderProcessingProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.associateform.js b/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.associateform.js index 96d73ba12..a8e1f1d71 100644 --- a/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.associateform.js +++ b/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { who: '运货者', - shipTime: '2019-01-13', + shipTime: '2019-05-29', } */ diff --git a/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.base.js b/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.base.js index 4e8ef531c..8d60d66f7 100644 --- a/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.base.js +++ b/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -49,20 +50,24 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({consumerOrderShipment,targetComponent})=>{ +const renderItemOfList=(consumerOrderShipment,targetComponent)=>{ - const {ConsumerOrderShipmentService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {consumerOrderShipment.id} {consumerOrderShipment.who} { moment(consumerOrderShipment.shipTime).format('YYYY-MM-DD')} - {buildTransferModal(consumerOrderShipment,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.createform.js b/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.createform.js index 53196d9fa..8c419f7f1 100644 --- a/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.createform.js +++ b/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { who: '运货者', - shipTime: '2019-02-06', + shipTime: '2017-02-22', } */ diff --git a/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.dashboard.js b/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.dashboard.js index 798072a74..3aa67aeff 100644 --- a/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.dashboard.js +++ b/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(consumerOrderShipment)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (consumerOrderShipment) =>defaultSettingListOf(consumerOrderShipment, optionList) const internalLargeTextOf = (consumerOrderShipment) =>{ @@ -138,6 +138,8 @@ class ConsumerOrderShipmentDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.permission.js b/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.permission.js index 1509cb2e1..e0e4e8d02 100644 --- a/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.permission.js +++ b/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ConsumerOrderShipment.preference.less' +import styles from './ConsumerOrderShipment.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.preference.js b/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.preference.js deleted file mode 100644 index 665f213b2..000000000 --- a/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.preference.js +++ /dev/null @@ -1,350 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ConsumerOrderShipment.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (consumerOrderShipment) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (consumerOrderShipment) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (consumerOrderShipment) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {ConsumerOrderShipmentService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = ConsumerOrderShipmentService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (consumerOrderShipment,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=consumerOrderShipment.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_consumerOrderShipment/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (consumerOrderShipment,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(consumerOrderShipment,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (consumerOrderShipment) =>{ - return null -} -const internalRenderExtraFooter = (consumerOrderShipment) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (consumerOrderShipment,targetComponent) =>{ - const userContext = null - return ( - -{consumerOrderShipment.id} -{consumerOrderShipment.who} -{ moment(consumerOrderShipment.shipTime).format('YYYY-MM-DD')} - - {buildTransferModal(consumerOrderShipment,targetComponent)} - - ) - -} - - -const renderPermissionSetting = consumerOrderShipment => { - const {ConsumerOrderShipmentBase} = GlobalComponents - return - - -} - - -class ConsumerOrderShipmentPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const consumerOrderShipment = this.props.consumerOrderShipment; - const { id,displayName, } = consumerOrderShipment - - - - const cardsData = {cardsName:"消费者的订单发货",cardsFor: "consumerOrderShipment",cardsSource: consumerOrderShipment, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - consumerOrderShipment: state._consumerOrderShipment, -}))(Form.create()(ConsumerOrderShipmentPreference)) - diff --git a/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.preference.less b/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.profile.js b/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.profile.js index 4e3283ba0..ab9c75a0f 100644 --- a/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.profile.js +++ b/bizui/src/bizcomponents/consumerordershipment/ConsumerOrderShipment.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ConsumerOrderShipment.preference.less' +import styles from './ConsumerOrderShipment.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,17 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (consumerOrderShipment,targetComponent) =>{ - const userContext = null - return ( - -{consumerOrderShipment.id} -{consumerOrderShipment.who} -{ moment(consumerOrderShipment.shipTime).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.ConsumerOrderShipmentBase.renderItemOfList(item, targetComponents) + } @@ -64,13 +58,14 @@ class ConsumerOrderShipmentProfile extends Component { const cardsData = {cardsName:"消费者的订单发货",cardsFor: "consumerOrderShipment",cardsSource: consumerOrderShipment, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -80,7 +75,7 @@ class ConsumerOrderShipmentProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.associateform.js b/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.associateform.js index 52e5fcbd1..4e248a847 100644 --- a/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.associateform.js +++ b/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.associateform.js @@ -19,8 +19,8 @@ const testValues = {}; /* const testValues = { name: '送货到刘强家', - amount: '440.19', - bizOrderId: 'CO000001', + amount: '456.24', + bizOrderId: 'CO00000001', } */ diff --git a/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.base.js b/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.base.js index 0a890e631..bb1e7e0ef 100644 --- a/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.base.js +++ b/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -51,26 +52,26 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({consumerOrderShippingGroup,targetComponent})=>{ +const renderItemOfList=(consumerOrderShippingGroup,targetComponent)=>{ - const {ConsumerOrderShippingGroupService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {consumerOrderShippingGroup.id} {consumerOrderShippingGroup.name} {consumerOrderShippingGroup.bizOrder==null?appLocaleName(userContext,"NotAssigned"):`${consumerOrderShippingGroup.bizOrder.displayName}(${consumerOrderShippingGroup.bizOrder.id})`} - - showTransferModel(targetComponent,"订单","consumerOrder",ConsumerOrderShippingGroupService.requestCandidateBizOrder, - ConsumerOrderShippingGroupService.transferToAnotherBizOrder,"anotherBizOrderId",consumerOrderShippingGroup.bizOrder?consumerOrderShippingGroup.bizOrder.id:"")} - style={{fontSize: 20,color:"red"}} /> {consumerOrderShippingGroup.amount} - {buildTransferModal(consumerOrderShippingGroup,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.createform.js b/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.createform.js index 1de0fc713..7475adfc4 100644 --- a/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.createform.js +++ b/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.createform.js @@ -18,8 +18,8 @@ const testValues = {}; /* const testValues = { name: '送货到刘强家', - amount: '534.58', - bizOrderId: 'CO000001', + amount: '537.02', + bizOrderId: 'CO00000001', } */ diff --git a/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.dashboard.js b/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.dashboard.js index 9c0d69090..43189629b 100644 --- a/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.dashboard.js +++ b/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(consumerOrderShippingGroup)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (consumerOrderShippingGroup) =>defaultSettingListOf(consumerOrderShippingGroup, optionList) const internalLargeTextOf = (consumerOrderShippingGroup) =>{ @@ -144,6 +144,8 @@ class ConsumerOrderShippingGroupDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.permission.js b/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.permission.js index 9dc0c0504..6e6382ab6 100644 --- a/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.permission.js +++ b/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ConsumerOrderShippingGroup.preference.less' +import styles from './ConsumerOrderShippingGroup.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.preference.js b/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.preference.js deleted file mode 100644 index 3699abc80..000000000 --- a/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.preference.js +++ /dev/null @@ -1,356 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ConsumerOrderShippingGroup.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (consumerOrderShippingGroup) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (consumerOrderShippingGroup) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (consumerOrderShippingGroup) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {ConsumerOrderShippingGroupService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = ConsumerOrderShippingGroupService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (consumerOrderShippingGroup,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=consumerOrderShippingGroup.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_consumerOrderShippingGroup/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (consumerOrderShippingGroup,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(consumerOrderShippingGroup,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (consumerOrderShippingGroup) =>{ - return null -} -const internalRenderExtraFooter = (consumerOrderShippingGroup) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (consumerOrderShippingGroup,targetComponent) =>{ - const userContext = null - return ( - -{consumerOrderShippingGroup.id} -{consumerOrderShippingGroup.name} -{consumerOrderShippingGroup.bizOrder==null?appLocaleName(userContext,"NotAssigned"):consumerOrderShippingGroup.bizOrder.displayName} - - showTransferModel(targetComponent,"订单","consumerOrder","requestCandidateBizOrder", - "transferToAnotherBizOrder","anotherBizOrderId",consumerOrderShippingGroup.bizOrder?consumerOrderShippingGroup.bizOrder.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{consumerOrderShippingGroup.amount} - - {buildTransferModal(consumerOrderShippingGroup,targetComponent)} - - ) - -} - - -const renderPermissionSetting = consumerOrderShippingGroup => { - const {ConsumerOrderShippingGroupBase} = GlobalComponents - return - - -} - - -class ConsumerOrderShippingGroupPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const consumerOrderShippingGroup = this.props.consumerOrderShippingGroup; - const { id,displayName, } = consumerOrderShippingGroup - - - - const cardsData = {cardsName:"消费订单送货分组",cardsFor: "consumerOrderShippingGroup",cardsSource: consumerOrderShippingGroup, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - consumerOrderShippingGroup: state._consumerOrderShippingGroup, -}))(Form.create()(ConsumerOrderShippingGroupPreference)) - diff --git a/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.preference.less b/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.profile.js b/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.profile.js index b90741545..b7774ed3b 100644 --- a/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.profile.js +++ b/bizui/src/bizcomponents/consumerordershippinggroup/ConsumerOrderShippingGroup.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ConsumerOrderShippingGroup.preference.less' +import styles from './ConsumerOrderShippingGroup.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,17 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (consumerOrderShippingGroup,targetComponent) =>{ - const userContext = null - return ( - -{consumerOrderShippingGroup.id} -{consumerOrderShippingGroup.name} -{consumerOrderShippingGroup.amount} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.ConsumerOrderShippingGroupBase.renderItemOfList(item, targetComponents) + } @@ -64,13 +58,14 @@ class ConsumerOrderShippingGroupProfile extends Component { const cardsData = {cardsName:"消费订单送货分组",cardsFor: "consumerOrderShippingGroup",cardsSource: consumerOrderShippingGroup, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -80,7 +75,7 @@ class ConsumerOrderShippingGroupProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/damagespace/DamageSpace.associateform.js b/bizui/src/bizcomponents/damagespace/DamageSpace.associateform.js index 8921c2cbc..879017027 100644 --- a/bizui/src/bizcomponents/damagespace/DamageSpace.associateform.js +++ b/bizui/src/bizcomponents/damagespace/DamageSpace.associateform.js @@ -21,9 +21,9 @@ const testValues = { location: '成都龙泉驿飞鹤路20号仓库损坏货物堆放区', contactNumber: '02887654321', totalArea: '1876平方米', - latitude: '40.9131411992218', - longitude: '131.67405608988966', - warehouseId: 'W000001', + latitude: '41.36088713396802', + longitude: '131.8653759956818', + warehouseId: 'W00000001', } */ diff --git a/bizui/src/bizcomponents/damagespace/DamageSpace.base.js b/bizui/src/bizcomponents/damagespace/DamageSpace.base.js index 7aafe6850..65240fc8b 100644 --- a/bizui/src/bizcomponents/damagespace/DamageSpace.base.js +++ b/bizui/src/bizcomponents/damagespace/DamageSpace.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -60,14 +61,16 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({damageSpace,targetComponent})=>{ +const renderItemOfList=(damageSpace,targetComponent)=>{ - const {DamageSpaceService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {damageSpace.id} {damageSpace.location} {damageSpace.contactNumber} @@ -75,15 +78,13 @@ const renderItemOfList=({damageSpace,targetComponent})=>{ {damageSpace.latitude} {damageSpace.longitude} {damageSpace.warehouse==null?appLocaleName(userContext,"NotAssigned"):`${damageSpace.warehouse.displayName}(${damageSpace.warehouse.id})`} - - showTransferModel(targetComponent,"仓库","warehouse",DamageSpaceService.requestCandidateWarehouse, - DamageSpaceService.transferToAnotherWarehouse,"anotherWarehouseId",damageSpace.warehouse?damageSpace.warehouse.id:"")} - style={{fontSize: 20,color:"red"}} /> { moment(damageSpace.lastUpdateTime).format('YYYY-MM-DD')} - {buildTransferModal(damageSpace,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/damagespace/DamageSpace.createform.js b/bizui/src/bizcomponents/damagespace/DamageSpace.createform.js index 870508c16..b169c8d14 100644 --- a/bizui/src/bizcomponents/damagespace/DamageSpace.createform.js +++ b/bizui/src/bizcomponents/damagespace/DamageSpace.createform.js @@ -20,9 +20,9 @@ const testValues = { location: '成都龙泉驿飞鹤路20号仓库损坏货物堆放区', contactNumber: '02887654321', totalArea: '1876平方米', - latitude: '41.12233422115167', - longitude: '130.05604157914584', - warehouseId: 'W000001', + latitude: '40.98282072753314', + longitude: '130.4693114127071', + warehouseId: 'W00000001', } */ diff --git a/bizui/src/bizcomponents/damagespace/DamageSpace.dashboard.js b/bizui/src/bizcomponents/damagespace/DamageSpace.dashboard.js index 93de529b8..26a47e56e 100644 --- a/bizui/src/bizcomponents/damagespace/DamageSpace.dashboard.js +++ b/bizui/src/bizcomponents/damagespace/DamageSpace.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(damageSpace)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (damageSpace) =>defaultSettingListOf(damageSpace, optionList) const internalLargeTextOf = (damageSpace) =>{ @@ -134,7 +134,7 @@ class DamageSpaceDashboard extends Component { const cardsData = {cardsName:"残次货物存放区",cardsFor: "damageSpace", cardsSource: this.props.damageSpace,returnURL,displayName, subItems: [ -{name: 'goodsShelfList', displayName:'货架',type:'goodsShelf',count:goodsShelfCount,addFunction: true, role: 'goodsShelf', metaInfo: goodsShelfListMetaInfo}, +{name: 'goodsShelfList', displayName:'货架',type:'goodsShelf',count:goodsShelfCount,addFunction: true, role: 'goodsShelf', metaInfo: goodsShelfListMetaInfo, renderItem: GlobalComponents.GoodsShelfBase.renderItemOfList}, ], }; @@ -149,6 +149,8 @@ class DamageSpaceDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/damagespace/DamageSpace.permission.js b/bizui/src/bizcomponents/damagespace/DamageSpace.permission.js index 738e20942..3ee001f70 100644 --- a/bizui/src/bizcomponents/damagespace/DamageSpace.permission.js +++ b/bizui/src/bizcomponents/damagespace/DamageSpace.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './DamageSpace.preference.less' +import styles from './DamageSpace.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/damagespace/DamageSpace.preference.js b/bizui/src/bizcomponents/damagespace/DamageSpace.preference.js deleted file mode 100644 index 0dd29b6ff..000000000 --- a/bizui/src/bizcomponents/damagespace/DamageSpace.preference.js +++ /dev/null @@ -1,360 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './DamageSpace.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (damageSpace) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (damageSpace) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (damageSpace) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {DamageSpaceService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = DamageSpaceService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (damageSpace,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=damageSpace.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_damageSpace/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (damageSpace,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(damageSpace,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (damageSpace) =>{ - return null -} -const internalRenderExtraFooter = (damageSpace) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (damageSpace,targetComponent) =>{ - const userContext = null - return ( - -{damageSpace.id} -{damageSpace.location} -{damageSpace.contactNumber} -{damageSpace.totalArea} -{damageSpace.latitude} -{damageSpace.longitude} -{damageSpace.warehouse==null?appLocaleName(userContext,"NotAssigned"):damageSpace.warehouse.displayName} - - showTransferModel(targetComponent,"仓库","warehouse","requestCandidateWarehouse", - "transferToAnotherWarehouse","anotherWarehouseId",damageSpace.warehouse?damageSpace.warehouse.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{ moment(damageSpace.lastUpdateTime).format('YYYY-MM-DD')} - - {buildTransferModal(damageSpace,targetComponent)} - - ) - -} - - -const renderPermissionSetting = damageSpace => { - const {DamageSpaceBase} = GlobalComponents - return - - -} - - -class DamageSpacePreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const damageSpace = this.props.damageSpace; - const { id,displayName, goodsShelfCount } = damageSpace - - - - const cardsData = {cardsName:"残次货物存放区",cardsFor: "damageSpace",cardsSource: damageSpace, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - damageSpace: state._damageSpace, -}))(Form.create()(DamageSpacePreference)) - diff --git a/bizui/src/bizcomponents/damagespace/DamageSpace.preference.less b/bizui/src/bizcomponents/damagespace/DamageSpace.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/damagespace/DamageSpace.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/damagespace/DamageSpace.profile.js b/bizui/src/bizcomponents/damagespace/DamageSpace.profile.js index 53920a042..4cede6c67 100644 --- a/bizui/src/bizcomponents/damagespace/DamageSpace.profile.js +++ b/bizui/src/bizcomponents/damagespace/DamageSpace.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './DamageSpace.preference.less' +import styles from './DamageSpace.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,21 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (damageSpace,targetComponent) =>{ - const userContext = null - return ( - -{damageSpace.id} -{damageSpace.location} -{damageSpace.contactNumber} -{damageSpace.totalArea} -{damageSpace.latitude} -{damageSpace.longitude} -{ moment(damageSpace.lastUpdateTime).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.DamageSpaceBase.renderItemOfList(item, targetComponents) + } @@ -68,13 +58,14 @@ class DamageSpaceProfile extends Component { const cardsData = {cardsName:"残次货物存放区",cardsFor: "damageSpace",cardsSource: damageSpace, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -84,7 +75,7 @@ class DamageSpaceProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/employee/Employee.associateform.js b/bizui/src/bizcomponents/employee/Employee.associateform.js index d0038839c..ce181906c 100644 --- a/bizui/src/bizcomponents/employee/Employee.associateform.js +++ b/bizui/src/bizcomponents/employee/Employee.associateform.js @@ -26,11 +26,11 @@ const testValues = { address: '学院路234号', cellPhone: '18677778888', salaryAccount: '6226 7788 9908 ', - companyId: 'RSCC000001', - departmentId: 'LTD000001', - occupationId: 'OT000001', - responsibleForId: 'RT000001', - currentSalaryGradeId: 'SG000001', + companyId: 'RSCC00000001', + departmentId: 'LTD00000001', + occupationId: 'OT00000001', + responsibleForId: 'RT00000001', + currentSalaryGradeId: 'SG00000001', } */ diff --git a/bizui/src/bizcomponents/employee/Employee.base.js b/bizui/src/bizcomponents/employee/Employee.base.js index 44b456892..3475756eb 100644 --- a/bizui/src/bizcomponents/employee/Employee.base.js +++ b/bizui/src/bizcomponents/employee/Employee.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -62,13 +63,13 @@ const fieldLabels = { responsibleFor: '负责', currentSalaryGrade: '目前工资等级', salaryAccount: '工资账户', - jobApplication: '工作申请', - professionInterview: '专业面试', - hrInterview: '人力资源部面试', - offerApproval: '审批工作要约', - offerAcceptance: '接受工作要约', - employeeBoarding: '员工入职', - termination: '雇佣终止', + jobApplication: '申请的工作', + professionInterview: '采访的职业', + hrInterview: '面试由人力资源', + offerApproval: '通过提供', + offerAcceptance: '接受报价', + employeeBoarding: '董事会员工', + termination: '终止', lastUpdateTime: '最后更新时间', currentStatus: '当前状态', @@ -101,21 +102,19 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({employee,targetComponent})=>{ +const renderItemOfList=(employee,targetComponent)=>{ - const {EmployeeService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {employee.id} {employee.title} {employee.department==null?appLocaleName(userContext,"NotAssigned"):`${employee.department.displayName}(${employee.department.id})`} - - showTransferModel(targetComponent,"部门","levelThreeDepartment",EmployeeService.requestCandidateDepartment, - EmployeeService.transferToAnotherDepartment,"anotherDepartmentId",employee.department?employee.department.id:"")} - style={{fontSize: 20,color:"red"}} /> {employee.familyName} {employee.givenName} @@ -124,35 +123,21 @@ const renderItemOfList=({employee,targetComponent})=>{ {employee.address} {employee.cellPhone} {employee.occupation==null?appLocaleName(userContext,"NotAssigned"):`${employee.occupation.displayName}(${employee.occupation.id})`} - - showTransferModel(targetComponent,"职业","occupationType",EmployeeService.requestCandidateOccupation, - EmployeeService.transferToAnotherOccupation,"anotherOccupationId",employee.occupation?employee.occupation.id:"")} - style={{fontSize: 20,color:"red"}} /> {employee.responsibleFor==null?appLocaleName(userContext,"NotAssigned"):`${employee.responsibleFor.displayName}(${employee.responsibleFor.id})`} - - showTransferModel(targetComponent,"负责","responsibilityType",EmployeeService.requestCandidateResponsibleFor, - EmployeeService.transferToAnotherResponsibleFor,"anotherResponsibleForId",employee.responsibleFor?employee.responsibleFor.id:"")} - style={{fontSize: 20,color:"red"}} /> {employee.currentSalaryGrade==null?appLocaleName(userContext,"NotAssigned"):`${employee.currentSalaryGrade.displayName}(${employee.currentSalaryGrade.id})`} - - showTransferModel(targetComponent,"目前工资等级","salaryGrade",EmployeeService.requestCandidateCurrentSalaryGrade, - EmployeeService.transferToAnotherCurrentSalaryGrade,"anotherCurrentSalaryGradeId",employee.currentSalaryGrade?employee.currentSalaryGrade.id:"")} - style={{fontSize: 20,color:"red"}} /> {employee.salaryAccount} -{employee.termination==null?appLocaleName(userContext,"NotAssigned"):`${employee.termination.displayName}(${employee.termination.id})`} - - showTransferModel(targetComponent,"雇佣终止","termination",EmployeeService.requestCandidateTermination, - EmployeeService.transferToAnotherTermination,"anotherTerminationId",employee.termination?employee.termination.id:"")} - style={{fontSize: 20,color:"red"}} /> +{employee.termination==null?appLocaleName(userContext,"NotAssigned"):`${employee.termination.displayName}(${employee.termination.id})`} { moment(employee.lastUpdateTime).format('YYYY-MM-DD')} {employee.currentStatus} - {buildTransferModal(employee,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/employee/Employee.createform.js b/bizui/src/bizcomponents/employee/Employee.createform.js index e9b3715c8..fc82bdb68 100644 --- a/bizui/src/bizcomponents/employee/Employee.createform.js +++ b/bizui/src/bizcomponents/employee/Employee.createform.js @@ -25,11 +25,11 @@ const testValues = { address: '学院路234号', cellPhone: '18677778888', salaryAccount: '6226 7788 9908 ', - companyId: 'RSCC000001', - departmentId: 'LTD000001', - occupationId: 'OT000001', - responsibleForId: 'RT000001', - currentSalaryGradeId: 'SG000001', + companyId: 'RSCC00000001', + departmentId: 'LTD00000001', + occupationId: 'OT00000001', + responsibleForId: 'RT00000001', + currentSalaryGradeId: 'SG00000001', } */ diff --git a/bizui/src/bizcomponents/employee/Employee.dashboard.js b/bizui/src/bizcomponents/employee/Employee.dashboard.js index a178aca88..4fc80c769 100644 --- a/bizui/src/bizcomponents/employee/Employee.dashboard.js +++ b/bizui/src/bizcomponents/employee/Employee.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(employee)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (employee) =>defaultSettingListOf(employee, optionList) const internalLargeTextOf = (employee) =>{ @@ -114,9 +114,9 @@ const internalSummaryOf = (employee,targetComponent) =>{ style={{fontSize: 20,color:"red"}} /> {employee.salaryAccount} -{employee.termination==null?appLocaleName(userContext,"NotAssigned"):`${employee.termination.displayName}(${employee.termination.id})`} +{employee.termination==null?appLocaleName(userContext,"NotAssigned"):`${employee.termination.displayName}(${employee.termination.id})`} - showTransferModel(targetComponent,"雇佣终止","termination",EmployeeService.requestCandidateTermination, + showTransferModel(targetComponent,"终止","termination",EmployeeService.requestCandidateTermination, EmployeeService.transferToAnotherTermination,"anotherTerminationId",employee.termination?employee.termination.id:"")} style={{fontSize: 20,color:"red"}} /> @@ -162,18 +162,18 @@ class EmployeeDashboard extends Component { const cardsData = {cardsName:"员工",cardsFor: "employee", cardsSource: this.props.employee,returnURL,displayName, subItems: [ -{name: 'employeeCompanyTrainingList', displayName:'员工参与的公司培训',type:'employeeCompanyTraining',count:employeeCompanyTrainingCount,addFunction: true, role: 'employeeCompanyTraining', metaInfo: employeeCompanyTrainingListMetaInfo}, -{name: 'employeeSkillList', displayName:'员工技能',type:'employeeSkill',count:employeeSkillCount,addFunction: true, role: 'employeeSkill', metaInfo: employeeSkillListMetaInfo}, -{name: 'employeePerformanceList', displayName:'员工绩效',type:'employeePerformance',count:employeePerformanceCount,addFunction: true, role: 'employeePerformance', metaInfo: employeePerformanceListMetaInfo}, -{name: 'employeeWorkExperienceList', displayName:'员工工作经验',type:'employeeWorkExperience',count:employeeWorkExperienceCount,addFunction: true, role: 'employeeWorkExperience', metaInfo: employeeWorkExperienceListMetaInfo}, -{name: 'employeeLeaveList', displayName:'请假记录',type:'employeeLeave',count:employeeLeaveCount,addFunction: true, role: 'employeeLeave', metaInfo: employeeLeaveListMetaInfo}, -{name: 'employeeInterviewList', displayName:'员工面试',type:'employeeInterview',count:employeeInterviewCount,addFunction: true, role: 'employeeInterview', metaInfo: employeeInterviewListMetaInfo}, -{name: 'employeeAttendanceList', displayName:'员工考勤',type:'employeeAttendance',count:employeeAttendanceCount,addFunction: true, role: 'employeeAttendance', metaInfo: employeeAttendanceListMetaInfo}, -{name: 'employeeQualifierList', displayName:'员工资质',type:'employeeQualifier',count:employeeQualifierCount,addFunction: true, role: 'employeeQualifier', metaInfo: employeeQualifierListMetaInfo}, -{name: 'employeeEducationList', displayName:'员工教育',type:'employeeEducation',count:employeeEducationCount,addFunction: true, role: 'employeeEducation', metaInfo: employeeEducationListMetaInfo}, -{name: 'employeeAwardList', displayName:'员工嘉奖',type:'employeeAward',count:employeeAwardCount,addFunction: true, role: 'employeeAward', metaInfo: employeeAwardListMetaInfo}, -{name: 'employeeSalarySheetList', displayName:'工资单',type:'employeeSalarySheet',count:employeeSalarySheetCount,addFunction: true, role: 'employeeSalarySheet', metaInfo: employeeSalarySheetListMetaInfo}, -{name: 'payingOffList', displayName:'工资支付',type:'payingOff',count:payingOffCount,addFunction: true, role: 'payingOff', metaInfo: payingOffListMetaInfo}, +{name: 'employeeCompanyTrainingList', displayName:'员工参与的公司培训',type:'employeeCompanyTraining',count:employeeCompanyTrainingCount,addFunction: true, role: 'employeeCompanyTraining', metaInfo: employeeCompanyTrainingListMetaInfo, renderItem: GlobalComponents.EmployeeCompanyTrainingBase.renderItemOfList}, +{name: 'employeeSkillList', displayName:'员工技能',type:'employeeSkill',count:employeeSkillCount,addFunction: true, role: 'employeeSkill', metaInfo: employeeSkillListMetaInfo, renderItem: GlobalComponents.EmployeeSkillBase.renderItemOfList}, +{name: 'employeePerformanceList', displayName:'员工绩效',type:'employeePerformance',count:employeePerformanceCount,addFunction: true, role: 'employeePerformance', metaInfo: employeePerformanceListMetaInfo, renderItem: GlobalComponents.EmployeePerformanceBase.renderItemOfList}, +{name: 'employeeWorkExperienceList', displayName:'员工工作经验',type:'employeeWorkExperience',count:employeeWorkExperienceCount,addFunction: true, role: 'employeeWorkExperience', metaInfo: employeeWorkExperienceListMetaInfo, renderItem: GlobalComponents.EmployeeWorkExperienceBase.renderItemOfList}, +{name: 'employeeLeaveList', displayName:'请假记录',type:'employeeLeave',count:employeeLeaveCount,addFunction: true, role: 'employeeLeave', metaInfo: employeeLeaveListMetaInfo, renderItem: GlobalComponents.EmployeeLeaveBase.renderItemOfList}, +{name: 'employeeInterviewList', displayName:'员工面试',type:'employeeInterview',count:employeeInterviewCount,addFunction: true, role: 'employeeInterview', metaInfo: employeeInterviewListMetaInfo, renderItem: GlobalComponents.EmployeeInterviewBase.renderItemOfList}, +{name: 'employeeAttendanceList', displayName:'员工考勤',type:'employeeAttendance',count:employeeAttendanceCount,addFunction: true, role: 'employeeAttendance', metaInfo: employeeAttendanceListMetaInfo, renderItem: GlobalComponents.EmployeeAttendanceBase.renderItemOfList}, +{name: 'employeeQualifierList', displayName:'员工资质',type:'employeeQualifier',count:employeeQualifierCount,addFunction: true, role: 'employeeQualifier', metaInfo: employeeQualifierListMetaInfo, renderItem: GlobalComponents.EmployeeQualifierBase.renderItemOfList}, +{name: 'employeeEducationList', displayName:'员工教育',type:'employeeEducation',count:employeeEducationCount,addFunction: true, role: 'employeeEducation', metaInfo: employeeEducationListMetaInfo, renderItem: GlobalComponents.EmployeeEducationBase.renderItemOfList}, +{name: 'employeeAwardList', displayName:'员工嘉奖',type:'employeeAward',count:employeeAwardCount,addFunction: true, role: 'employeeAward', metaInfo: employeeAwardListMetaInfo, renderItem: GlobalComponents.EmployeeAwardBase.renderItemOfList}, +{name: 'employeeSalarySheetList', displayName:'工资单',type:'employeeSalarySheet',count:employeeSalarySheetCount,addFunction: true, role: 'employeeSalarySheet', metaInfo: employeeSalarySheetListMetaInfo, renderItem: GlobalComponents.EmployeeSalarySheetBase.renderItemOfList}, +{name: 'payingOffList', displayName:'工资支付',type:'payingOff',count:payingOffCount,addFunction: true, role: 'payingOff', metaInfo: payingOffListMetaInfo, renderItem: GlobalComponents.PayingOffBase.renderItemOfList}, ], }; @@ -188,6 +188,8 @@ class EmployeeDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/employee/Employee.permission.js b/bizui/src/bizcomponents/employee/Employee.permission.js index f6f60e626..1adc7cdfd 100644 --- a/bizui/src/bizcomponents/employee/Employee.permission.js +++ b/bizui/src/bizcomponents/employee/Employee.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './Employee.preference.less' +import styles from './Employee.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/employee/Employee.preference.js b/bizui/src/bizcomponents/employee/Employee.preference.js deleted file mode 100644 index 8dff49b6e..000000000 --- a/bizui/src/bizcomponents/employee/Employee.preference.js +++ /dev/null @@ -1,388 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './Employee.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (employee) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (employee) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (employee) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {EmployeeService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = EmployeeService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (employee,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=employee.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_employee/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (employee,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(employee,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (employee) =>{ - return null -} -const internalRenderExtraFooter = (employee) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (employee,targetComponent) =>{ - const userContext = null - return ( - -{employee.id} -{employee.title} -{employee.department==null?appLocaleName(userContext,"NotAssigned"):employee.department.displayName} - - showTransferModel(targetComponent,"部门","levelThreeDepartment","requestCandidateDepartment", - "transferToAnotherDepartment","anotherDepartmentId",employee.department?employee.department.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{employee.familyName} -{employee.givenName} -{employee.email} -{employee.city} -{employee.address} -{employee.cellPhone} -{employee.occupation==null?appLocaleName(userContext,"NotAssigned"):employee.occupation.displayName} - - showTransferModel(targetComponent,"职业","occupationType","requestCandidateOccupation", - "transferToAnotherOccupation","anotherOccupationId",employee.occupation?employee.occupation.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{employee.responsibleFor==null?appLocaleName(userContext,"NotAssigned"):employee.responsibleFor.displayName} - - showTransferModel(targetComponent,"负责","responsibilityType","requestCandidateResponsibleFor", - "transferToAnotherResponsibleFor","anotherResponsibleForId",employee.responsibleFor?employee.responsibleFor.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{employee.currentSalaryGrade==null?appLocaleName(userContext,"NotAssigned"):employee.currentSalaryGrade.displayName} - - showTransferModel(targetComponent,"目前工资等级","salaryGrade","requestCandidateCurrentSalaryGrade", - "transferToAnotherCurrentSalaryGrade","anotherCurrentSalaryGradeId",employee.currentSalaryGrade?employee.currentSalaryGrade.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{employee.salaryAccount} -{employee.termination==null?appLocaleName(userContext,"NotAssigned"):employee.termination.displayName} - - showTransferModel(targetComponent,"雇佣终止","termination","requestCandidateTermination", - "transferToAnotherTermination","anotherTerminationId",employee.termination?employee.termination.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{ moment(employee.lastUpdateTime).format('YYYY-MM-DD')} -{employee.currentStatus} - - {buildTransferModal(employee,targetComponent)} - - ) - -} - - -const renderPermissionSetting = employee => { - const {EmployeeBase} = GlobalComponents - return - - -} - - -class EmployeePreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const employee = this.props.employee; - const { id,displayName, employeeCompanyTrainingCount, employeeSkillCount, employeePerformanceCount, employeeWorkExperienceCount, employeeLeaveCount, employeeInterviewCount, employeeAttendanceCount, employeeQualifierCount, employeeEducationCount, employeeAwardCount, employeeSalarySheetCount, payingOffCount } = employee - - - - const cardsData = {cardsName:"员工",cardsFor: "employee",cardsSource: employee, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - employee: state._employee, -}))(Form.create()(EmployeePreference)) - diff --git a/bizui/src/bizcomponents/employee/Employee.preference.less b/bizui/src/bizcomponents/employee/Employee.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/employee/Employee.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/employee/Employee.profile.js b/bizui/src/bizcomponents/employee/Employee.profile.js index a77133204..732f8c943 100644 --- a/bizui/src/bizcomponents/employee/Employee.profile.js +++ b/bizui/src/bizcomponents/employee/Employee.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './Employee.preference.less' +import styles from './Employee.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,25 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (employee,targetComponent) =>{ - const userContext = null - return ( - -{employee.id} -{employee.title} -{employee.familyName} -{employee.givenName} -{employee.email} -{employee.city} -{employee.address} -{employee.cellPhone} -{employee.salaryAccount} -{ moment(employee.lastUpdateTime).format('YYYY-MM-DD')} -{employee.currentStatus} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.EmployeeBase.renderItemOfList(item, targetComponents) + } @@ -72,13 +58,14 @@ class EmployeeProfile extends Component { const cardsData = {cardsName:"员工",cardsFor: "employee",cardsSource: employee, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -88,7 +75,7 @@ class EmployeeProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.associateform.js b/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.associateform.js index 5e9ce6b11..9769c390a 100644 --- a/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.associateform.js +++ b/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.associateform.js @@ -18,11 +18,11 @@ const { TextArea } = Input const testValues = {}; /* const testValues = { - enterTime: '2018-02-03', - leaveTime: '2018-08-31', - durationHours: '6', + enterTime: '2017-02-17', + leaveTime: '2016-11-03', + durationHours: '7', remark: '今天状态不错啊', - employeeId: 'E000001', + employeeId: 'E00000001', } */ diff --git a/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.base.js b/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.base.js index bc18bb97d..2ec2ace4f 100644 --- a/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.base.js +++ b/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -55,28 +56,28 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({employeeAttendance,targetComponent})=>{ +const renderItemOfList=(employeeAttendance,targetComponent)=>{ - const {EmployeeAttendanceService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {employeeAttendance.id} {employeeAttendance.employee==null?appLocaleName(userContext,"NotAssigned"):`${employeeAttendance.employee.displayName}(${employeeAttendance.employee.id})`} - - showTransferModel(targetComponent,"员工","employee",EmployeeAttendanceService.requestCandidateEmployee, - EmployeeAttendanceService.transferToAnotherEmployee,"anotherEmployeeId",employeeAttendance.employee?employeeAttendance.employee.id:"")} - style={{fontSize: 20,color:"red"}} /> { moment(employeeAttendance.enterTime).format('YYYY-MM-DD')} { moment(employeeAttendance.leaveTime).format('YYYY-MM-DD')} {employeeAttendance.durationHours} {employeeAttendance.remark} - {buildTransferModal(employeeAttendance,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.createform.js b/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.createform.js index bdc547604..9392dd388 100644 --- a/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.createform.js +++ b/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.createform.js @@ -17,11 +17,11 @@ const { TextArea } = Input const testValues = {}; /* const testValues = { - enterTime: '2018-12-22', - leaveTime: '2018-08-25', - durationHours: '7', + enterTime: '2019-01-31', + leaveTime: '2018-12-19', + durationHours: '6', remark: '今天状态不错啊', - employeeId: 'E000001', + employeeId: 'E00000001', } */ diff --git a/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.dashboard.js b/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.dashboard.js index 43c331a36..84f849ec1 100644 --- a/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.dashboard.js +++ b/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(employeeAttendance)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (employeeAttendance) =>defaultSettingListOf(employeeAttendance, optionList) const internalLargeTextOf = (employeeAttendance) =>{ @@ -146,6 +146,8 @@ class EmployeeAttendanceDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.permission.js b/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.permission.js index 76f67d759..282832368 100644 --- a/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.permission.js +++ b/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './EmployeeAttendance.preference.less' +import styles from './EmployeeAttendance.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.preference.js b/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.preference.js deleted file mode 100644 index 5c8117d4a..000000000 --- a/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.preference.js +++ /dev/null @@ -1,358 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './EmployeeAttendance.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (employeeAttendance) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (employeeAttendance) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (employeeAttendance) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {EmployeeAttendanceService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = EmployeeAttendanceService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (employeeAttendance,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=employeeAttendance.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_employeeAttendance/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (employeeAttendance,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(employeeAttendance,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (employeeAttendance) =>{ - return null -} -const internalRenderExtraFooter = (employeeAttendance) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (employeeAttendance,targetComponent) =>{ - const userContext = null - return ( - -{employeeAttendance.id} -{employeeAttendance.employee==null?appLocaleName(userContext,"NotAssigned"):employeeAttendance.employee.displayName} - - showTransferModel(targetComponent,"员工","employee","requestCandidateEmployee", - "transferToAnotherEmployee","anotherEmployeeId",employeeAttendance.employee?employeeAttendance.employee.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{ moment(employeeAttendance.enterTime).format('YYYY-MM-DD')} -{ moment(employeeAttendance.leaveTime).format('YYYY-MM-DD')} -{employeeAttendance.durationHours} -{employeeAttendance.remark} - - {buildTransferModal(employeeAttendance,targetComponent)} - - ) - -} - - -const renderPermissionSetting = employeeAttendance => { - const {EmployeeAttendanceBase} = GlobalComponents - return - - -} - - -class EmployeeAttendancePreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const employeeAttendance = this.props.employeeAttendance; - const { id,displayName, } = employeeAttendance - - - - const cardsData = {cardsName:"员工考勤",cardsFor: "employeeAttendance",cardsSource: employeeAttendance, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - employeeAttendance: state._employeeAttendance, -}))(Form.create()(EmployeeAttendancePreference)) - diff --git a/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.preference.less b/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.profile.js b/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.profile.js index 4c6934530..fddcd0558 100644 --- a/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.profile.js +++ b/bizui/src/bizcomponents/employeeattendance/EmployeeAttendance.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './EmployeeAttendance.preference.less' +import styles from './EmployeeAttendance.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,19 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (employeeAttendance,targetComponent) =>{ - const userContext = null - return ( - -{employeeAttendance.id} -{ moment(employeeAttendance.enterTime).format('YYYY-MM-DD')} -{ moment(employeeAttendance.leaveTime).format('YYYY-MM-DD')} -{employeeAttendance.durationHours} -{employeeAttendance.remark} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.EmployeeAttendanceBase.renderItemOfList(item, targetComponents) + } @@ -66,13 +58,14 @@ class EmployeeAttendanceProfile extends Component { const cardsData = {cardsName:"员工考勤",cardsFor: "employeeAttendance",cardsSource: employeeAttendance, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -82,7 +75,7 @@ class EmployeeAttendanceProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/employeeaward/EmployeeAward.associateform.js b/bizui/src/bizcomponents/employeeaward/EmployeeAward.associateform.js index eacd9d050..a8abdc8c9 100644 --- a/bizui/src/bizcomponents/employeeaward/EmployeeAward.associateform.js +++ b/bizui/src/bizcomponents/employeeaward/EmployeeAward.associateform.js @@ -18,10 +18,10 @@ const { TextArea } = Input const testValues = {}; /* const testValues = { - completeTime: '2018-08-03', + completeTime: '2017-01-24', type: '明星员工', remark: '考试成绩当年第一名', - employeeId: 'E000001', + employeeId: 'E00000001', } */ diff --git a/bizui/src/bizcomponents/employeeaward/EmployeeAward.base.js b/bizui/src/bizcomponents/employeeaward/EmployeeAward.base.js index 6228a6568..026767d9c 100644 --- a/bizui/src/bizcomponents/employeeaward/EmployeeAward.base.js +++ b/bizui/src/bizcomponents/employeeaward/EmployeeAward.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -53,27 +54,27 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({employeeAward,targetComponent})=>{ +const renderItemOfList=(employeeAward,targetComponent)=>{ - const {EmployeeAwardService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {employeeAward.id} {employeeAward.employee==null?appLocaleName(userContext,"NotAssigned"):`${employeeAward.employee.displayName}(${employeeAward.employee.id})`} - - showTransferModel(targetComponent,"员工","employee",EmployeeAwardService.requestCandidateEmployee, - EmployeeAwardService.transferToAnotherEmployee,"anotherEmployeeId",employeeAward.employee?employeeAward.employee.id:"")} - style={{fontSize: 20,color:"red"}} /> { moment(employeeAward.completeTime).format('YYYY-MM-DD')} {employeeAward.type} {employeeAward.remark} - {buildTransferModal(employeeAward,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/employeeaward/EmployeeAward.createform.js b/bizui/src/bizcomponents/employeeaward/EmployeeAward.createform.js index d01a07170..d88f9d300 100644 --- a/bizui/src/bizcomponents/employeeaward/EmployeeAward.createform.js +++ b/bizui/src/bizcomponents/employeeaward/EmployeeAward.createform.js @@ -17,10 +17,10 @@ const { TextArea } = Input const testValues = {}; /* const testValues = { - completeTime: '2016-07-22', + completeTime: '2017-09-13', type: '明星员工', remark: '考试成绩当年第一名', - employeeId: 'E000001', + employeeId: 'E00000001', } */ diff --git a/bizui/src/bizcomponents/employeeaward/EmployeeAward.dashboard.js b/bizui/src/bizcomponents/employeeaward/EmployeeAward.dashboard.js index 9e8e4b7bf..88110c6cb 100644 --- a/bizui/src/bizcomponents/employeeaward/EmployeeAward.dashboard.js +++ b/bizui/src/bizcomponents/employeeaward/EmployeeAward.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(employeeAward)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (employeeAward) =>defaultSettingListOf(employeeAward, optionList) const internalLargeTextOf = (employeeAward) =>{ @@ -145,6 +145,8 @@ class EmployeeAwardDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/employeeaward/EmployeeAward.permission.js b/bizui/src/bizcomponents/employeeaward/EmployeeAward.permission.js index a1f15c637..8845f5e6e 100644 --- a/bizui/src/bizcomponents/employeeaward/EmployeeAward.permission.js +++ b/bizui/src/bizcomponents/employeeaward/EmployeeAward.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './EmployeeAward.preference.less' +import styles from './EmployeeAward.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/employeeaward/EmployeeAward.preference.js b/bizui/src/bizcomponents/employeeaward/EmployeeAward.preference.js deleted file mode 100644 index 0afcbd193..000000000 --- a/bizui/src/bizcomponents/employeeaward/EmployeeAward.preference.js +++ /dev/null @@ -1,357 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './EmployeeAward.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (employeeAward) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (employeeAward) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (employeeAward) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {EmployeeAwardService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = EmployeeAwardService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (employeeAward,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=employeeAward.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_employeeAward/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (employeeAward,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(employeeAward,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (employeeAward) =>{ - return null -} -const internalRenderExtraFooter = (employeeAward) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (employeeAward,targetComponent) =>{ - const userContext = null - return ( - -{employeeAward.id} -{employeeAward.employee==null?appLocaleName(userContext,"NotAssigned"):employeeAward.employee.displayName} - - showTransferModel(targetComponent,"员工","employee","requestCandidateEmployee", - "transferToAnotherEmployee","anotherEmployeeId",employeeAward.employee?employeeAward.employee.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{ moment(employeeAward.completeTime).format('YYYY-MM-DD')} -{employeeAward.type} -{employeeAward.remark} - - {buildTransferModal(employeeAward,targetComponent)} - - ) - -} - - -const renderPermissionSetting = employeeAward => { - const {EmployeeAwardBase} = GlobalComponents - return - - -} - - -class EmployeeAwardPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const employeeAward = this.props.employeeAward; - const { id,displayName, } = employeeAward - - - - const cardsData = {cardsName:"员工嘉奖",cardsFor: "employeeAward",cardsSource: employeeAward, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - employeeAward: state._employeeAward, -}))(Form.create()(EmployeeAwardPreference)) - diff --git a/bizui/src/bizcomponents/employeeaward/EmployeeAward.preference.less b/bizui/src/bizcomponents/employeeaward/EmployeeAward.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/employeeaward/EmployeeAward.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/employeeaward/EmployeeAward.profile.js b/bizui/src/bizcomponents/employeeaward/EmployeeAward.profile.js index cedad50e5..484194d8b 100644 --- a/bizui/src/bizcomponents/employeeaward/EmployeeAward.profile.js +++ b/bizui/src/bizcomponents/employeeaward/EmployeeAward.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './EmployeeAward.preference.less' +import styles from './EmployeeAward.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,18 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (employeeAward,targetComponent) =>{ - const userContext = null - return ( - -{employeeAward.id} -{ moment(employeeAward.completeTime).format('YYYY-MM-DD')} -{employeeAward.type} -{employeeAward.remark} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.EmployeeAwardBase.renderItemOfList(item, targetComponents) + } @@ -65,13 +58,14 @@ class EmployeeAwardProfile extends Component { const cardsData = {cardsName:"员工嘉奖",cardsFor: "employeeAward",cardsSource: employeeAward, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -81,7 +75,7 @@ class EmployeeAwardProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.associateform.js b/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.associateform.js index 447ccf2a0..df8caa192 100644 --- a/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.associateform.js +++ b/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { who: '人力资源部', - employTime: '2017-10-05', + employTime: '2018-05-22', comments: '欢迎加入植物医生大家庭', } */ diff --git a/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.base.js b/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.base.js index a1c4e3661..cbd149325 100644 --- a/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.base.js +++ b/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -52,21 +53,25 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({employeeBoarding,targetComponent})=>{ +const renderItemOfList=(employeeBoarding,targetComponent)=>{ - const {EmployeeBoardingService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {employeeBoarding.id} {employeeBoarding.who} { moment(employeeBoarding.employTime).format('YYYY-MM-DD')} {employeeBoarding.comments} - {buildTransferModal(employeeBoarding,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.createform.js b/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.createform.js index 21f728ec9..c5e165e66 100644 --- a/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.createform.js +++ b/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { who: '人力资源部', - employTime: '2018-02-12', + employTime: '2016-07-07', comments: '欢迎加入植物医生大家庭', } */ diff --git a/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.dashboard.js b/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.dashboard.js index 147817882..e0add0b79 100644 --- a/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.dashboard.js +++ b/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(employeeBoarding)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (employeeBoarding) =>defaultSettingListOf(employeeBoarding, optionList) const internalLargeTextOf = (employeeBoarding) =>{ @@ -125,7 +125,7 @@ class EmployeeBoardingDashboard extends Component { const cardsData = {cardsName:"员工入职",cardsFor: "employeeBoarding", cardsSource: this.props.employeeBoarding,returnURL,displayName, subItems: [ -{name: 'employeeList', displayName:'员工',type:'employee',count:employeeCount,addFunction: true, role: 'employee', metaInfo: employeeListMetaInfo}, +{name: 'employeeList', displayName:'员工',type:'employee',count:employeeCount,addFunction: true, role: 'employee', metaInfo: employeeListMetaInfo, renderItem: GlobalComponents.EmployeeBase.renderItemOfList}, ], }; @@ -140,6 +140,8 @@ class EmployeeBoardingDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.permission.js b/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.permission.js index 8aa590877..ec6407e93 100644 --- a/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.permission.js +++ b/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './EmployeeBoarding.preference.less' +import styles from './EmployeeBoarding.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.preference.js b/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.preference.js deleted file mode 100644 index f26e70319..000000000 --- a/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.preference.js +++ /dev/null @@ -1,351 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './EmployeeBoarding.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (employeeBoarding) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (employeeBoarding) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (employeeBoarding) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {EmployeeBoardingService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = EmployeeBoardingService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (employeeBoarding,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=employeeBoarding.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_employeeBoarding/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (employeeBoarding,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(employeeBoarding,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (employeeBoarding) =>{ - return null -} -const internalRenderExtraFooter = (employeeBoarding) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (employeeBoarding,targetComponent) =>{ - const userContext = null - return ( - -{employeeBoarding.id} -{employeeBoarding.who} -{ moment(employeeBoarding.employTime).format('YYYY-MM-DD')} -{employeeBoarding.comments} - - {buildTransferModal(employeeBoarding,targetComponent)} - - ) - -} - - -const renderPermissionSetting = employeeBoarding => { - const {EmployeeBoardingBase} = GlobalComponents - return - - -} - - -class EmployeeBoardingPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const employeeBoarding = this.props.employeeBoarding; - const { id,displayName, employeeCount } = employeeBoarding - - - - const cardsData = {cardsName:"员工入职",cardsFor: "employeeBoarding",cardsSource: employeeBoarding, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - employeeBoarding: state._employeeBoarding, -}))(Form.create()(EmployeeBoardingPreference)) - diff --git a/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.preference.less b/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.profile.js b/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.profile.js index 0b2b3de73..c2bf9bf06 100644 --- a/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.profile.js +++ b/bizui/src/bizcomponents/employeeboarding/EmployeeBoarding.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './EmployeeBoarding.preference.less' +import styles from './EmployeeBoarding.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,18 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (employeeBoarding,targetComponent) =>{ - const userContext = null - return ( - -{employeeBoarding.id} -{employeeBoarding.who} -{ moment(employeeBoarding.employTime).format('YYYY-MM-DD')} -{employeeBoarding.comments} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.EmployeeBoardingBase.renderItemOfList(item, targetComponents) + } @@ -65,13 +58,14 @@ class EmployeeBoardingProfile extends Component { const cardsData = {cardsName:"员工入职",cardsFor: "employeeBoarding",cardsSource: employeeBoarding, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -81,7 +75,7 @@ class EmployeeBoardingProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.associateform.js b/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.associateform.js index 796009975..69ee4d08d 100644 --- a/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.associateform.js +++ b/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.associateform.js @@ -18,8 +18,8 @@ const { TextArea } = Input const testValues = {}; /* const testValues = { - employeeId: 'E000001', - trainingId: 'CT000001', + employeeId: 'E00000001', + trainingId: 'CT00000001', } */ diff --git a/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.base.js b/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.base.js index 9e5aeb1f4..37afd5bdf 100644 --- a/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.base.js +++ b/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -39,7 +40,7 @@ const fieldLabels = { id: '序号', employee: '员工', training: '训练', - scoring: '评分', + scoring: '分数', currentStatus: '当前状态', } @@ -53,31 +54,27 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({employeeCompanyTraining,targetComponent})=>{ +const renderItemOfList=(employeeCompanyTraining,targetComponent)=>{ - const {EmployeeCompanyTrainingService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {employeeCompanyTraining.id} {employeeCompanyTraining.employee==null?appLocaleName(userContext,"NotAssigned"):`${employeeCompanyTraining.employee.displayName}(${employeeCompanyTraining.employee.id})`} - - showTransferModel(targetComponent,"员工","employee",EmployeeCompanyTrainingService.requestCandidateEmployee, - EmployeeCompanyTrainingService.transferToAnotherEmployee,"anotherEmployeeId",employeeCompanyTraining.employee?employeeCompanyTraining.employee.id:"")} - style={{fontSize: 20,color:"red"}} /> {employeeCompanyTraining.training==null?appLocaleName(userContext,"NotAssigned"):`${employeeCompanyTraining.training.displayName}(${employeeCompanyTraining.training.id})`} - - showTransferModel(targetComponent,"训练","companyTraining",EmployeeCompanyTrainingService.requestCandidateTraining, - EmployeeCompanyTrainingService.transferToAnotherTraining,"anotherTrainingId",employeeCompanyTraining.training?employeeCompanyTraining.training.id:"")} - style={{fontSize: 20,color:"red"}} /> {employeeCompanyTraining.currentStatus} - {buildTransferModal(employeeCompanyTraining,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.createform.js b/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.createform.js index 6c9b3c094..b371524e8 100644 --- a/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.createform.js +++ b/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.createform.js @@ -17,8 +17,8 @@ const { TextArea } = Input const testValues = {}; /* const testValues = { - employeeId: 'E000001', - trainingId: 'CT000001', + employeeId: 'E00000001', + trainingId: 'CT00000001', } */ diff --git a/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.dashboard.js b/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.dashboard.js index 47bc7bbe6..7fdeca1ea 100644 --- a/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.dashboard.js +++ b/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(employeeCompanyTraining)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (employeeCompanyTraining) =>defaultSettingListOf(employeeCompanyTraining, optionList) const internalLargeTextOf = (employeeCompanyTraining) =>{ @@ -149,6 +149,8 @@ class EmployeeCompanyTrainingDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.permission.js b/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.permission.js index c12a470bb..57584fd66 100644 --- a/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.permission.js +++ b/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './EmployeeCompanyTraining.preference.less' +import styles from './EmployeeCompanyTraining.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.preference.js b/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.preference.js deleted file mode 100644 index ae090d49b..000000000 --- a/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.preference.js +++ /dev/null @@ -1,361 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './EmployeeCompanyTraining.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (employeeCompanyTraining) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (employeeCompanyTraining) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (employeeCompanyTraining) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {EmployeeCompanyTrainingService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = EmployeeCompanyTrainingService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (employeeCompanyTraining,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=employeeCompanyTraining.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_employeeCompanyTraining/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (employeeCompanyTraining,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(employeeCompanyTraining,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (employeeCompanyTraining) =>{ - return null -} -const internalRenderExtraFooter = (employeeCompanyTraining) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (employeeCompanyTraining,targetComponent) =>{ - const userContext = null - return ( - -{employeeCompanyTraining.id} -{employeeCompanyTraining.employee==null?appLocaleName(userContext,"NotAssigned"):employeeCompanyTraining.employee.displayName} - - showTransferModel(targetComponent,"员工","employee","requestCandidateEmployee", - "transferToAnotherEmployee","anotherEmployeeId",employeeCompanyTraining.employee?employeeCompanyTraining.employee.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{employeeCompanyTraining.training==null?appLocaleName(userContext,"NotAssigned"):employeeCompanyTraining.training.displayName} - - showTransferModel(targetComponent,"训练","companyTraining","requestCandidateTraining", - "transferToAnotherTraining","anotherTrainingId",employeeCompanyTraining.training?employeeCompanyTraining.training.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{employeeCompanyTraining.currentStatus} - - {buildTransferModal(employeeCompanyTraining,targetComponent)} - - ) - -} - - -const renderPermissionSetting = employeeCompanyTraining => { - const {EmployeeCompanyTrainingBase} = GlobalComponents - return - - -} - - -class EmployeeCompanyTrainingPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const employeeCompanyTraining = this.props.employeeCompanyTraining; - const { id,displayName, } = employeeCompanyTraining - - - - const cardsData = {cardsName:"员工参与的公司培训",cardsFor: "employeeCompanyTraining",cardsSource: employeeCompanyTraining, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - employeeCompanyTraining: state._employeeCompanyTraining, -}))(Form.create()(EmployeeCompanyTrainingPreference)) - diff --git a/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.preference.less b/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.profile.js b/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.profile.js index 43109fb10..7f363f142 100644 --- a/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.profile.js +++ b/bizui/src/bizcomponents/employeecompanytraining/EmployeeCompanyTraining.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './EmployeeCompanyTraining.preference.less' +import styles from './EmployeeCompanyTraining.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,16 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (employeeCompanyTraining,targetComponent) =>{ - const userContext = null - return ( - -{employeeCompanyTraining.id} -{employeeCompanyTraining.currentStatus} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.EmployeeCompanyTrainingBase.renderItemOfList(item, targetComponents) + } @@ -63,13 +58,14 @@ class EmployeeCompanyTrainingProfile extends Component { const cardsData = {cardsName:"员工参与的公司培训",cardsFor: "employeeCompanyTraining",cardsSource: employeeCompanyTraining, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -79,7 +75,7 @@ class EmployeeCompanyTrainingProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.associateform.js b/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.associateform.js index a37c2dd86..273d0e21e 100644 --- a/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.associateform.js +++ b/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.associateform.js @@ -18,10 +18,10 @@ const { TextArea } = Input const testValues = {}; /* const testValues = { - completeTime: '2018-04-08', + completeTime: '2017-04-25', type: '小学', remark: '考试成绩当年第一名', - employeeId: 'E000001', + employeeId: 'E00000001', } */ diff --git a/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.base.js b/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.base.js index 244111b08..d858e40e4 100644 --- a/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.base.js +++ b/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -53,27 +54,27 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({employeeEducation,targetComponent})=>{ +const renderItemOfList=(employeeEducation,targetComponent)=>{ - const {EmployeeEducationService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {employeeEducation.id} {employeeEducation.employee==null?appLocaleName(userContext,"NotAssigned"):`${employeeEducation.employee.displayName}(${employeeEducation.employee.id})`} - - showTransferModel(targetComponent,"员工","employee",EmployeeEducationService.requestCandidateEmployee, - EmployeeEducationService.transferToAnotherEmployee,"anotherEmployeeId",employeeEducation.employee?employeeEducation.employee.id:"")} - style={{fontSize: 20,color:"red"}} /> { moment(employeeEducation.completeTime).format('YYYY-MM-DD')} {employeeEducation.type} {employeeEducation.remark} - {buildTransferModal(employeeEducation,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.createform.js b/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.createform.js index 4ee3af3c5..a305ab762 100644 --- a/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.createform.js +++ b/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.createform.js @@ -17,10 +17,10 @@ const { TextArea } = Input const testValues = {}; /* const testValues = { - completeTime: '2016-10-20', + completeTime: '2017-06-11', type: '小学', remark: '考试成绩当年第一名', - employeeId: 'E000001', + employeeId: 'E00000001', } */ diff --git a/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.dashboard.js b/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.dashboard.js index a82329658..0377781b8 100644 --- a/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.dashboard.js +++ b/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(employeeEducation)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (employeeEducation) =>defaultSettingListOf(employeeEducation, optionList) const internalLargeTextOf = (employeeEducation) =>{ @@ -145,6 +145,8 @@ class EmployeeEducationDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.permission.js b/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.permission.js index ff0482fd0..cc647fa00 100644 --- a/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.permission.js +++ b/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './EmployeeEducation.preference.less' +import styles from './EmployeeEducation.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.preference.js b/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.preference.js deleted file mode 100644 index 13078848b..000000000 --- a/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.preference.js +++ /dev/null @@ -1,357 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './EmployeeEducation.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (employeeEducation) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (employeeEducation) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (employeeEducation) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {EmployeeEducationService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = EmployeeEducationService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (employeeEducation,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=employeeEducation.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_employeeEducation/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (employeeEducation,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(employeeEducation,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (employeeEducation) =>{ - return null -} -const internalRenderExtraFooter = (employeeEducation) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (employeeEducation,targetComponent) =>{ - const userContext = null - return ( - -{employeeEducation.id} -{employeeEducation.employee==null?appLocaleName(userContext,"NotAssigned"):employeeEducation.employee.displayName} - - showTransferModel(targetComponent,"员工","employee","requestCandidateEmployee", - "transferToAnotherEmployee","anotherEmployeeId",employeeEducation.employee?employeeEducation.employee.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{ moment(employeeEducation.completeTime).format('YYYY-MM-DD')} -{employeeEducation.type} -{employeeEducation.remark} - - {buildTransferModal(employeeEducation,targetComponent)} - - ) - -} - - -const renderPermissionSetting = employeeEducation => { - const {EmployeeEducationBase} = GlobalComponents - return - - -} - - -class EmployeeEducationPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const employeeEducation = this.props.employeeEducation; - const { id,displayName, } = employeeEducation - - - - const cardsData = {cardsName:"员工教育",cardsFor: "employeeEducation",cardsSource: employeeEducation, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - employeeEducation: state._employeeEducation, -}))(Form.create()(EmployeeEducationPreference)) - diff --git a/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.preference.less b/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.profile.js b/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.profile.js index 86093e0b9..c4e017a6d 100644 --- a/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.profile.js +++ b/bizui/src/bizcomponents/employeeeducation/EmployeeEducation.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './EmployeeEducation.preference.less' +import styles from './EmployeeEducation.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,18 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (employeeEducation,targetComponent) =>{ - const userContext = null - return ( - -{employeeEducation.id} -{ moment(employeeEducation.completeTime).format('YYYY-MM-DD')} -{employeeEducation.type} -{employeeEducation.remark} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.EmployeeEducationBase.renderItemOfList(item, targetComponents) + } @@ -65,13 +58,14 @@ class EmployeeEducationProfile extends Component { const cardsData = {cardsName:"员工教育",cardsFor: "employeeEducation",cardsSource: employeeEducation, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -81,7 +75,7 @@ class EmployeeEducationProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.associateform.js b/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.associateform.js index 2432e25b4..7ba7d506c 100644 --- a/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.associateform.js +++ b/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.associateform.js @@ -19,8 +19,8 @@ const testValues = {}; /* const testValues = { remark: '结果不错,面试通过!', - employeeId: 'E000001', - interviewTypeId: 'IT000001', + employeeId: 'E00000001', + interviewTypeId: 'IT00000001', } */ diff --git a/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.base.js b/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.base.js index 55fc67bda..9b77bda7c 100644 --- a/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.base.js +++ b/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -51,31 +52,27 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({employeeInterview,targetComponent})=>{ +const renderItemOfList=(employeeInterview,targetComponent)=>{ - const {EmployeeInterviewService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {employeeInterview.id} {employeeInterview.employee==null?appLocaleName(userContext,"NotAssigned"):`${employeeInterview.employee.displayName}(${employeeInterview.employee.id})`} - - showTransferModel(targetComponent,"员工","employee",EmployeeInterviewService.requestCandidateEmployee, - EmployeeInterviewService.transferToAnotherEmployee,"anotherEmployeeId",employeeInterview.employee?employeeInterview.employee.id:"")} - style={{fontSize: 20,color:"red"}} /> {employeeInterview.interviewType==null?appLocaleName(userContext,"NotAssigned"):`${employeeInterview.interviewType.displayName}(${employeeInterview.interviewType.id})`} - - showTransferModel(targetComponent,"面试类型","interviewType",EmployeeInterviewService.requestCandidateInterviewType, - EmployeeInterviewService.transferToAnotherInterviewType,"anotherInterviewTypeId",employeeInterview.interviewType?employeeInterview.interviewType.id:"")} - style={{fontSize: 20,color:"red"}} /> {employeeInterview.remark} - {buildTransferModal(employeeInterview,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.createform.js b/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.createform.js index db62845ce..3cdee4fe3 100644 --- a/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.createform.js +++ b/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.createform.js @@ -18,8 +18,8 @@ const testValues = {}; /* const testValues = { remark: '结果不错,面试通过!', - employeeId: 'E000001', - interviewTypeId: 'IT000001', + employeeId: 'E00000001', + interviewTypeId: 'IT00000001', } */ diff --git a/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.dashboard.js b/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.dashboard.js index 1aec22e51..2a51a33dc 100644 --- a/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.dashboard.js +++ b/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(employeeInterview)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (employeeInterview) =>defaultSettingListOf(employeeInterview, optionList) const internalLargeTextOf = (employeeInterview) =>{ @@ -149,6 +149,8 @@ class EmployeeInterviewDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.permission.js b/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.permission.js index 750899a6c..da3c1828a 100644 --- a/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.permission.js +++ b/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './EmployeeInterview.preference.less' +import styles from './EmployeeInterview.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.preference.js b/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.preference.js deleted file mode 100644 index 31b5d4031..000000000 --- a/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.preference.js +++ /dev/null @@ -1,361 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './EmployeeInterview.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (employeeInterview) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (employeeInterview) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (employeeInterview) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {EmployeeInterviewService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = EmployeeInterviewService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (employeeInterview,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=employeeInterview.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_employeeInterview/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (employeeInterview,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(employeeInterview,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (employeeInterview) =>{ - return null -} -const internalRenderExtraFooter = (employeeInterview) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (employeeInterview,targetComponent) =>{ - const userContext = null - return ( - -{employeeInterview.id} -{employeeInterview.employee==null?appLocaleName(userContext,"NotAssigned"):employeeInterview.employee.displayName} - - showTransferModel(targetComponent,"员工","employee","requestCandidateEmployee", - "transferToAnotherEmployee","anotherEmployeeId",employeeInterview.employee?employeeInterview.employee.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{employeeInterview.interviewType==null?appLocaleName(userContext,"NotAssigned"):employeeInterview.interviewType.displayName} - - showTransferModel(targetComponent,"面试类型","interviewType","requestCandidateInterviewType", - "transferToAnotherInterviewType","anotherInterviewTypeId",employeeInterview.interviewType?employeeInterview.interviewType.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{employeeInterview.remark} - - {buildTransferModal(employeeInterview,targetComponent)} - - ) - -} - - -const renderPermissionSetting = employeeInterview => { - const {EmployeeInterviewBase} = GlobalComponents - return - - -} - - -class EmployeeInterviewPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const employeeInterview = this.props.employeeInterview; - const { id,displayName, } = employeeInterview - - - - const cardsData = {cardsName:"员工面试",cardsFor: "employeeInterview",cardsSource: employeeInterview, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - employeeInterview: state._employeeInterview, -}))(Form.create()(EmployeeInterviewPreference)) - diff --git a/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.preference.less b/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.profile.js b/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.profile.js index dff48d5ec..827281362 100644 --- a/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.profile.js +++ b/bizui/src/bizcomponents/employeeinterview/EmployeeInterview.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './EmployeeInterview.preference.less' +import styles from './EmployeeInterview.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,16 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (employeeInterview,targetComponent) =>{ - const userContext = null - return ( - -{employeeInterview.id} -{employeeInterview.remark} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.EmployeeInterviewBase.renderItemOfList(item, targetComponents) + } @@ -63,13 +58,14 @@ class EmployeeInterviewProfile extends Component { const cardsData = {cardsName:"员工面试",cardsFor: "employeeInterview",cardsSource: employeeInterview, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -79,7 +75,7 @@ class EmployeeInterviewProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/employeeleave/EmployeeLeave.associateform.js b/bizui/src/bizcomponents/employeeleave/EmployeeLeave.associateform.js index a137447d6..2c9edda10 100644 --- a/bizui/src/bizcomponents/employeeleave/EmployeeLeave.associateform.js +++ b/bizui/src/bizcomponents/employeeleave/EmployeeLeave.associateform.js @@ -18,10 +18,10 @@ const { TextArea } = Input const testValues = {}; /* const testValues = { - leaveDurationHour: '8', + leaveDurationHour: '7', remark: '请年假,出去耍!!!!', - whoId: 'E000001', - typeId: 'LT000001', + whoId: 'E00000001', + typeId: 'LT00000001', } */ diff --git a/bizui/src/bizcomponents/employeeleave/EmployeeLeave.base.js b/bizui/src/bizcomponents/employeeleave/EmployeeLeave.base.js index 3ed56bbb8..6ca0147cc 100644 --- a/bizui/src/bizcomponents/employeeleave/EmployeeLeave.base.js +++ b/bizui/src/bizcomponents/employeeleave/EmployeeLeave.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -53,32 +54,28 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({employeeLeave,targetComponent})=>{ +const renderItemOfList=(employeeLeave,targetComponent)=>{ - const {EmployeeLeaveService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {employeeLeave.id} {employeeLeave.who==null?appLocaleName(userContext,"NotAssigned"):`${employeeLeave.who.displayName}(${employeeLeave.who.id})`} - - showTransferModel(targetComponent,"谁","employee",EmployeeLeaveService.requestCandidateWho, - EmployeeLeaveService.transferToAnotherWho,"anotherWhoId",employeeLeave.who?employeeLeave.who.id:"")} - style={{fontSize: 20,color:"red"}} /> {employeeLeave.type==null?appLocaleName(userContext,"NotAssigned"):`${employeeLeave.type.displayName}(${employeeLeave.type.id})`} - - showTransferModel(targetComponent,"类型","leaveType",EmployeeLeaveService.requestCandidateType, - EmployeeLeaveService.transferToAnotherType,"anotherTypeId",employeeLeave.type?employeeLeave.type.id:"")} - style={{fontSize: 20,color:"red"}} /> {employeeLeave.leaveDurationHour} {employeeLeave.remark} - {buildTransferModal(employeeLeave,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/employeeleave/EmployeeLeave.createform.js b/bizui/src/bizcomponents/employeeleave/EmployeeLeave.createform.js index b8c052a5e..8c78a3ae0 100644 --- a/bizui/src/bizcomponents/employeeleave/EmployeeLeave.createform.js +++ b/bizui/src/bizcomponents/employeeleave/EmployeeLeave.createform.js @@ -19,8 +19,8 @@ const testValues = {}; const testValues = { leaveDurationHour: '8', remark: '请年假,出去耍!!!!', - whoId: 'E000001', - typeId: 'LT000001', + whoId: 'E00000001', + typeId: 'LT00000001', } */ diff --git a/bizui/src/bizcomponents/employeeleave/EmployeeLeave.dashboard.js b/bizui/src/bizcomponents/employeeleave/EmployeeLeave.dashboard.js index a98dbd6a3..bb6b6a5da 100644 --- a/bizui/src/bizcomponents/employeeleave/EmployeeLeave.dashboard.js +++ b/bizui/src/bizcomponents/employeeleave/EmployeeLeave.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(employeeLeave)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (employeeLeave) =>defaultSettingListOf(employeeLeave, optionList) const internalLargeTextOf = (employeeLeave) =>{ @@ -150,6 +150,8 @@ class EmployeeLeaveDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/employeeleave/EmployeeLeave.permission.js b/bizui/src/bizcomponents/employeeleave/EmployeeLeave.permission.js index 129042d4b..56d7f69f9 100644 --- a/bizui/src/bizcomponents/employeeleave/EmployeeLeave.permission.js +++ b/bizui/src/bizcomponents/employeeleave/EmployeeLeave.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './EmployeeLeave.preference.less' +import styles from './EmployeeLeave.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/employeeleave/EmployeeLeave.preference.js b/bizui/src/bizcomponents/employeeleave/EmployeeLeave.preference.js deleted file mode 100644 index 033c47ac0..000000000 --- a/bizui/src/bizcomponents/employeeleave/EmployeeLeave.preference.js +++ /dev/null @@ -1,362 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './EmployeeLeave.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (employeeLeave) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (employeeLeave) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (employeeLeave) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {EmployeeLeaveService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = EmployeeLeaveService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (employeeLeave,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=employeeLeave.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_employeeLeave/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (employeeLeave,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(employeeLeave,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (employeeLeave) =>{ - return null -} -const internalRenderExtraFooter = (employeeLeave) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (employeeLeave,targetComponent) =>{ - const userContext = null - return ( - -{employeeLeave.id} -{employeeLeave.who==null?appLocaleName(userContext,"NotAssigned"):employeeLeave.who.displayName} - - showTransferModel(targetComponent,"谁","employee","requestCandidateWho", - "transferToAnotherWho","anotherWhoId",employeeLeave.who?employeeLeave.who.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{employeeLeave.type==null?appLocaleName(userContext,"NotAssigned"):employeeLeave.type.displayName} - - showTransferModel(targetComponent,"类型","leaveType","requestCandidateType", - "transferToAnotherType","anotherTypeId",employeeLeave.type?employeeLeave.type.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{employeeLeave.leaveDurationHour} -{employeeLeave.remark} - - {buildTransferModal(employeeLeave,targetComponent)} - - ) - -} - - -const renderPermissionSetting = employeeLeave => { - const {EmployeeLeaveBase} = GlobalComponents - return - - -} - - -class EmployeeLeavePreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const employeeLeave = this.props.employeeLeave; - const { id,displayName, } = employeeLeave - - - - const cardsData = {cardsName:"请假记录",cardsFor: "employeeLeave",cardsSource: employeeLeave, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - employeeLeave: state._employeeLeave, -}))(Form.create()(EmployeeLeavePreference)) - diff --git a/bizui/src/bizcomponents/employeeleave/EmployeeLeave.preference.less b/bizui/src/bizcomponents/employeeleave/EmployeeLeave.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/employeeleave/EmployeeLeave.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/employeeleave/EmployeeLeave.profile.js b/bizui/src/bizcomponents/employeeleave/EmployeeLeave.profile.js index 8d0098a00..028d551ea 100644 --- a/bizui/src/bizcomponents/employeeleave/EmployeeLeave.profile.js +++ b/bizui/src/bizcomponents/employeeleave/EmployeeLeave.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './EmployeeLeave.preference.less' +import styles from './EmployeeLeave.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,17 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (employeeLeave,targetComponent) =>{ - const userContext = null - return ( - -{employeeLeave.id} -{employeeLeave.leaveDurationHour} -{employeeLeave.remark} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.EmployeeLeaveBase.renderItemOfList(item, targetComponents) + } @@ -64,13 +58,14 @@ class EmployeeLeaveProfile extends Component { const cardsData = {cardsName:"请假记录",cardsFor: "employeeLeave",cardsSource: employeeLeave, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -80,7 +75,7 @@ class EmployeeLeaveProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.associateform.js b/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.associateform.js index e2f6709e3..8e40381b9 100644 --- a/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.associateform.js +++ b/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { performanceComment: '绩效大大的不错', - employeeId: 'E000001', + employeeId: 'E00000001', } */ diff --git a/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.base.js b/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.base.js index 9a2f76b89..5b17a4306 100644 --- a/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.base.js +++ b/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -49,25 +50,25 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({employeePerformance,targetComponent})=>{ +const renderItemOfList=(employeePerformance,targetComponent)=>{ - const {EmployeePerformanceService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {employeePerformance.id} {employeePerformance.employee==null?appLocaleName(userContext,"NotAssigned"):`${employeePerformance.employee.displayName}(${employeePerformance.employee.id})`} - - showTransferModel(targetComponent,"员工","employee",EmployeePerformanceService.requestCandidateEmployee, - EmployeePerformanceService.transferToAnotherEmployee,"anotherEmployeeId",employeePerformance.employee?employeePerformance.employee.id:"")} - style={{fontSize: 20,color:"red"}} /> {employeePerformance.performanceComment} - {buildTransferModal(employeePerformance,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.createform.js b/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.createform.js index 8c096f3d7..8deb1f419 100644 --- a/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.createform.js +++ b/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { performanceComment: '绩效大大的不错', - employeeId: 'E000001', + employeeId: 'E00000001', } */ diff --git a/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.dashboard.js b/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.dashboard.js index 6ce8eee16..f7ee5d656 100644 --- a/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.dashboard.js +++ b/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(employeePerformance)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (employeePerformance) =>defaultSettingListOf(employeePerformance, optionList) const internalLargeTextOf = (employeePerformance) =>{ @@ -143,6 +143,8 @@ class EmployeePerformanceDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.permission.js b/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.permission.js index 89f5dde99..c270c129b 100644 --- a/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.permission.js +++ b/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './EmployeePerformance.preference.less' +import styles from './EmployeePerformance.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.preference.js b/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.preference.js deleted file mode 100644 index 05d9b269e..000000000 --- a/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.preference.js +++ /dev/null @@ -1,355 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './EmployeePerformance.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (employeePerformance) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (employeePerformance) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (employeePerformance) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {EmployeePerformanceService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = EmployeePerformanceService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (employeePerformance,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=employeePerformance.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_employeePerformance/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (employeePerformance,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(employeePerformance,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (employeePerformance) =>{ - return null -} -const internalRenderExtraFooter = (employeePerformance) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (employeePerformance,targetComponent) =>{ - const userContext = null - return ( - -{employeePerformance.id} -{employeePerformance.employee==null?appLocaleName(userContext,"NotAssigned"):employeePerformance.employee.displayName} - - showTransferModel(targetComponent,"员工","employee","requestCandidateEmployee", - "transferToAnotherEmployee","anotherEmployeeId",employeePerformance.employee?employeePerformance.employee.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{employeePerformance.performanceComment} - - {buildTransferModal(employeePerformance,targetComponent)} - - ) - -} - - -const renderPermissionSetting = employeePerformance => { - const {EmployeePerformanceBase} = GlobalComponents - return - - -} - - -class EmployeePerformancePreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const employeePerformance = this.props.employeePerformance; - const { id,displayName, } = employeePerformance - - - - const cardsData = {cardsName:"员工绩效",cardsFor: "employeePerformance",cardsSource: employeePerformance, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - employeePerformance: state._employeePerformance, -}))(Form.create()(EmployeePerformancePreference)) - diff --git a/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.preference.less b/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.profile.js b/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.profile.js index ec274fe75..48d4f7d3e 100644 --- a/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.profile.js +++ b/bizui/src/bizcomponents/employeeperformance/EmployeePerformance.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './EmployeePerformance.preference.less' +import styles from './EmployeePerformance.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,16 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (employeePerformance,targetComponent) =>{ - const userContext = null - return ( - -{employeePerformance.id} -{employeePerformance.performanceComment} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.EmployeePerformanceBase.renderItemOfList(item, targetComponents) + } @@ -63,13 +58,14 @@ class EmployeePerformanceProfile extends Component { const cardsData = {cardsName:"员工绩效",cardsFor: "employeePerformance",cardsSource: employeePerformance, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -79,7 +75,7 @@ class EmployeePerformanceProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.associateform.js b/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.associateform.js index 642668d88..bd6f0d897 100644 --- a/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.associateform.js +++ b/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.associateform.js @@ -18,11 +18,11 @@ const { TextArea } = Input const testValues = {}; /* const testValues = { - qualifiedTime: '2017-06-05', + qualifiedTime: '2019-05-21', type: '认证药剂师', level: '高级', remark: '考试成绩当年第一名', - employeeId: 'E000001', + employeeId: 'E00000001', } */ diff --git a/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.base.js b/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.base.js index effa4c8e1..d3ecf109d 100644 --- a/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.base.js +++ b/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -55,28 +56,28 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({employeeQualifier,targetComponent})=>{ +const renderItemOfList=(employeeQualifier,targetComponent)=>{ - const {EmployeeQualifierService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {employeeQualifier.id} {employeeQualifier.employee==null?appLocaleName(userContext,"NotAssigned"):`${employeeQualifier.employee.displayName}(${employeeQualifier.employee.id})`} - - showTransferModel(targetComponent,"员工","employee",EmployeeQualifierService.requestCandidateEmployee, - EmployeeQualifierService.transferToAnotherEmployee,"anotherEmployeeId",employeeQualifier.employee?employeeQualifier.employee.id:"")} - style={{fontSize: 20,color:"red"}} /> { moment(employeeQualifier.qualifiedTime).format('YYYY-MM-DD')} {employeeQualifier.type} {employeeQualifier.level} {employeeQualifier.remark} - {buildTransferModal(employeeQualifier,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.createform.js b/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.createform.js index 1524fd788..54ce89fce 100644 --- a/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.createform.js +++ b/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.createform.js @@ -17,11 +17,11 @@ const { TextArea } = Input const testValues = {}; /* const testValues = { - qualifiedTime: '2016-11-20', + qualifiedTime: '2016-08-16', type: '认证药剂师', level: '高级', remark: '考试成绩当年第一名', - employeeId: 'E000001', + employeeId: 'E00000001', } */ diff --git a/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.dashboard.js b/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.dashboard.js index 89a4b7b60..5ef0998f3 100644 --- a/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.dashboard.js +++ b/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(employeeQualifier)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (employeeQualifier) =>defaultSettingListOf(employeeQualifier, optionList) const internalLargeTextOf = (employeeQualifier) =>{ @@ -146,6 +146,8 @@ class EmployeeQualifierDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.permission.js b/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.permission.js index 3c045b6af..3909b78ad 100644 --- a/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.permission.js +++ b/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './EmployeeQualifier.preference.less' +import styles from './EmployeeQualifier.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.preference.js b/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.preference.js deleted file mode 100644 index dbbbe8c8c..000000000 --- a/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.preference.js +++ /dev/null @@ -1,358 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './EmployeeQualifier.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (employeeQualifier) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (employeeQualifier) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (employeeQualifier) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {EmployeeQualifierService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = EmployeeQualifierService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (employeeQualifier,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=employeeQualifier.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_employeeQualifier/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (employeeQualifier,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(employeeQualifier,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (employeeQualifier) =>{ - return null -} -const internalRenderExtraFooter = (employeeQualifier) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (employeeQualifier,targetComponent) =>{ - const userContext = null - return ( - -{employeeQualifier.id} -{employeeQualifier.employee==null?appLocaleName(userContext,"NotAssigned"):employeeQualifier.employee.displayName} - - showTransferModel(targetComponent,"员工","employee","requestCandidateEmployee", - "transferToAnotherEmployee","anotherEmployeeId",employeeQualifier.employee?employeeQualifier.employee.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{ moment(employeeQualifier.qualifiedTime).format('YYYY-MM-DD')} -{employeeQualifier.type} -{employeeQualifier.level} -{employeeQualifier.remark} - - {buildTransferModal(employeeQualifier,targetComponent)} - - ) - -} - - -const renderPermissionSetting = employeeQualifier => { - const {EmployeeQualifierBase} = GlobalComponents - return - - -} - - -class EmployeeQualifierPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const employeeQualifier = this.props.employeeQualifier; - const { id,displayName, } = employeeQualifier - - - - const cardsData = {cardsName:"员工资质",cardsFor: "employeeQualifier",cardsSource: employeeQualifier, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - employeeQualifier: state._employeeQualifier, -}))(Form.create()(EmployeeQualifierPreference)) - diff --git a/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.preference.less b/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.profile.js b/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.profile.js index 284f23b73..49520211d 100644 --- a/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.profile.js +++ b/bizui/src/bizcomponents/employeequalifier/EmployeeQualifier.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './EmployeeQualifier.preference.less' +import styles from './EmployeeQualifier.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,19 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (employeeQualifier,targetComponent) =>{ - const userContext = null - return ( - -{employeeQualifier.id} -{ moment(employeeQualifier.qualifiedTime).format('YYYY-MM-DD')} -{employeeQualifier.type} -{employeeQualifier.level} -{employeeQualifier.remark} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.EmployeeQualifierBase.renderItemOfList(item, targetComponents) + } @@ -66,13 +58,14 @@ class EmployeeQualifierProfile extends Component { const cardsData = {cardsName:"员工资质",cardsFor: "employeeQualifier",cardsSource: employeeQualifier, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -82,7 +75,7 @@ class EmployeeQualifierProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.associateform.js b/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.associateform.js index dfc4d988f..fef1b39f6 100644 --- a/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.associateform.js +++ b/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.associateform.js @@ -18,15 +18,15 @@ const { TextArea } = Input const testValues = {}; /* const testValues = { - baseSalary: '2153.12', - bonus: '716.55', - reward: '988.22', - personalTax: '791.19', - socialSecurity: '1054.54', - housingFound: '912.44', - jobInsurance: '8.45', - employeeId: 'E000001', - currentSalaryGradeId: 'SG000001', + baseSalary: '2973.61', + bonus: '885.57', + reward: '905.98', + personalTax: '781.40', + socialSecurity: '1052.15', + housingFound: '1067.54', + jobInsurance: '6.96', + employeeId: 'E00000001', + currentSalaryGradeId: 'SG00000001', } */ diff --git a/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.base.js b/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.base.js index 3b596f50d..ddc78ed1e 100644 --- a/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.base.js +++ b/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -46,7 +47,7 @@ const fieldLabels = { socialSecurity: '社会保险', housingFound: '住房公积金', jobInsurance: '失业保险', - payingOff: '工资支付', + payingOff: '回报', currentStatus: '当前状态', } @@ -67,26 +68,20 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({employeeSalarySheet,targetComponent})=>{ +const renderItemOfList=(employeeSalarySheet,targetComponent)=>{ - const {EmployeeSalarySheetService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {employeeSalarySheet.id} {employeeSalarySheet.employee==null?appLocaleName(userContext,"NotAssigned"):`${employeeSalarySheet.employee.displayName}(${employeeSalarySheet.employee.id})`} - - showTransferModel(targetComponent,"员工","employee",EmployeeSalarySheetService.requestCandidateEmployee, - EmployeeSalarySheetService.transferToAnotherEmployee,"anotherEmployeeId",employeeSalarySheet.employee?employeeSalarySheet.employee.id:"")} - style={{fontSize: 20,color:"red"}} /> {employeeSalarySheet.currentSalaryGrade==null?appLocaleName(userContext,"NotAssigned"):`${employeeSalarySheet.currentSalaryGrade.displayName}(${employeeSalarySheet.currentSalaryGrade.id})`} - - showTransferModel(targetComponent,"目前工资等级","salaryGrade",EmployeeSalarySheetService.requestCandidateCurrentSalaryGrade, - EmployeeSalarySheetService.transferToAnotherCurrentSalaryGrade,"anotherCurrentSalaryGradeId",employeeSalarySheet.currentSalaryGrade?employeeSalarySheet.currentSalaryGrade.id:"")} - style={{fontSize: 20,color:"red"}} /> {employeeSalarySheet.baseSalary} {employeeSalarySheet.bonus} @@ -95,16 +90,14 @@ const renderItemOfList=({employeeSalarySheet,targetComponent})=>{ {employeeSalarySheet.socialSecurity} {employeeSalarySheet.housingFound} {employeeSalarySheet.jobInsurance} -{employeeSalarySheet.payingOff==null?appLocaleName(userContext,"NotAssigned"):`${employeeSalarySheet.payingOff.displayName}(${employeeSalarySheet.payingOff.id})`} - - showTransferModel(targetComponent,"工资支付","payingOff",EmployeeSalarySheetService.requestCandidatePayingOff, - EmployeeSalarySheetService.transferToAnotherPayingOff,"anotherPayingOffId",employeeSalarySheet.payingOff?employeeSalarySheet.payingOff.id:"")} - style={{fontSize: 20,color:"red"}} /> +{employeeSalarySheet.payingOff==null?appLocaleName(userContext,"NotAssigned"):`${employeeSalarySheet.payingOff.displayName}(${employeeSalarySheet.payingOff.id})`} {employeeSalarySheet.currentStatus} - {buildTransferModal(employeeSalarySheet,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.createform.js b/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.createform.js index 470d97ebf..85435af6f 100644 --- a/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.createform.js +++ b/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.createform.js @@ -17,15 +17,15 @@ const { TextArea } = Input const testValues = {}; /* const testValues = { - baseSalary: '2914.51', - bonus: '747.91', - reward: '827.74', - personalTax: '665.93', - socialSecurity: '1072.18', - housingFound: '1039.89', - jobInsurance: '7.35', - employeeId: 'E000001', - currentSalaryGradeId: 'SG000001', + baseSalary: '2994.02', + bonus: '865.13', + reward: '960.73', + personalTax: '744.69', + socialSecurity: '1098.87', + housingFound: '1172.72', + jobInsurance: '7.63', + employeeId: 'E00000001', + currentSalaryGradeId: 'SG00000001', } */ diff --git a/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.dashboard.js b/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.dashboard.js index 076cb3a92..70f29580d 100644 --- a/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.dashboard.js +++ b/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(employeeSalarySheet)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (employeeSalarySheet) =>defaultSettingListOf(employeeSalarySheet, optionList) const internalLargeTextOf = (employeeSalarySheet) =>{ @@ -101,9 +101,9 @@ const internalSummaryOf = (employeeSalarySheet,targetComponent) =>{ {employeeSalarySheet.socialSecurity} {employeeSalarySheet.housingFound} {employeeSalarySheet.jobInsurance} -{employeeSalarySheet.payingOff==null?appLocaleName(userContext,"NotAssigned"):`${employeeSalarySheet.payingOff.displayName}(${employeeSalarySheet.payingOff.id})`} +{employeeSalarySheet.payingOff==null?appLocaleName(userContext,"NotAssigned"):`${employeeSalarySheet.payingOff.displayName}(${employeeSalarySheet.payingOff.id})`} - showTransferModel(targetComponent,"工资支付","payingOff",EmployeeSalarySheetService.requestCandidatePayingOff, + showTransferModel(targetComponent,"回报","payingOff",EmployeeSalarySheetService.requestCandidatePayingOff, EmployeeSalarySheetService.transferToAnotherPayingOff,"anotherPayingOffId",employeeSalarySheet.payingOff?employeeSalarySheet.payingOff.id:"")} style={{fontSize: 20,color:"red"}} /> @@ -162,6 +162,8 @@ class EmployeeSalarySheetDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.permission.js b/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.permission.js index 7d793f103..bbef3cfcc 100644 --- a/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.permission.js +++ b/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './EmployeeSalarySheet.preference.less' +import styles from './EmployeeSalarySheet.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.preference.js b/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.preference.js deleted file mode 100644 index a0df74ffc..000000000 --- a/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.preference.js +++ /dev/null @@ -1,374 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './EmployeeSalarySheet.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (employeeSalarySheet) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (employeeSalarySheet) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (employeeSalarySheet) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {EmployeeSalarySheetService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = EmployeeSalarySheetService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (employeeSalarySheet,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=employeeSalarySheet.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_employeeSalarySheet/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (employeeSalarySheet,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(employeeSalarySheet,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (employeeSalarySheet) =>{ - return null -} -const internalRenderExtraFooter = (employeeSalarySheet) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (employeeSalarySheet,targetComponent) =>{ - const userContext = null - return ( - -{employeeSalarySheet.id} -{employeeSalarySheet.employee==null?appLocaleName(userContext,"NotAssigned"):employeeSalarySheet.employee.displayName} - - showTransferModel(targetComponent,"员工","employee","requestCandidateEmployee", - "transferToAnotherEmployee","anotherEmployeeId",employeeSalarySheet.employee?employeeSalarySheet.employee.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{employeeSalarySheet.currentSalaryGrade==null?appLocaleName(userContext,"NotAssigned"):employeeSalarySheet.currentSalaryGrade.displayName} - - showTransferModel(targetComponent,"目前工资等级","salaryGrade","requestCandidateCurrentSalaryGrade", - "transferToAnotherCurrentSalaryGrade","anotherCurrentSalaryGradeId",employeeSalarySheet.currentSalaryGrade?employeeSalarySheet.currentSalaryGrade.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{employeeSalarySheet.baseSalary} -{employeeSalarySheet.bonus} -{employeeSalarySheet.reward} -{employeeSalarySheet.personalTax} -{employeeSalarySheet.socialSecurity} -{employeeSalarySheet.housingFound} -{employeeSalarySheet.jobInsurance} -{employeeSalarySheet.payingOff==null?appLocaleName(userContext,"NotAssigned"):employeeSalarySheet.payingOff.displayName} - - showTransferModel(targetComponent,"工资支付","payingOff","requestCandidatePayingOff", - "transferToAnotherPayingOff","anotherPayingOffId",employeeSalarySheet.payingOff?employeeSalarySheet.payingOff.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{employeeSalarySheet.currentStatus} - - {buildTransferModal(employeeSalarySheet,targetComponent)} - - ) - -} - - -const renderPermissionSetting = employeeSalarySheet => { - const {EmployeeSalarySheetBase} = GlobalComponents - return - - -} - - -class EmployeeSalarySheetPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const employeeSalarySheet = this.props.employeeSalarySheet; - const { id,displayName, } = employeeSalarySheet - - - - const cardsData = {cardsName:"工资单",cardsFor: "employeeSalarySheet",cardsSource: employeeSalarySheet, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - employeeSalarySheet: state._employeeSalarySheet, -}))(Form.create()(EmployeeSalarySheetPreference)) - diff --git a/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.preference.less b/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.profile.js b/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.profile.js index a544964f4..aa6304396 100644 --- a/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.profile.js +++ b/bizui/src/bizcomponents/employeesalarysheet/EmployeeSalarySheet.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './EmployeeSalarySheet.preference.less' +import styles from './EmployeeSalarySheet.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,23 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (employeeSalarySheet,targetComponent) =>{ - const userContext = null - return ( - -{employeeSalarySheet.id} -{employeeSalarySheet.baseSalary} -{employeeSalarySheet.bonus} -{employeeSalarySheet.reward} -{employeeSalarySheet.personalTax} -{employeeSalarySheet.socialSecurity} -{employeeSalarySheet.housingFound} -{employeeSalarySheet.jobInsurance} -{employeeSalarySheet.currentStatus} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.EmployeeSalarySheetBase.renderItemOfList(item, targetComponents) + } @@ -70,13 +58,14 @@ class EmployeeSalarySheetProfile extends Component { const cardsData = {cardsName:"工资单",cardsFor: "employeeSalarySheet",cardsSource: employeeSalarySheet, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -86,7 +75,7 @@ class EmployeeSalarySheetProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/employeeskill/EmployeeSkill.associateform.js b/bizui/src/bizcomponents/employeeskill/EmployeeSkill.associateform.js index 8f3fe5861..9c1637d21 100644 --- a/bizui/src/bizcomponents/employeeskill/EmployeeSkill.associateform.js +++ b/bizui/src/bizcomponents/employeeskill/EmployeeSkill.associateform.js @@ -19,8 +19,8 @@ const testValues = {}; /* const testValues = { description: '高手高手高高手', - employeeId: 'E000001', - skillTypeId: 'ST000001', + employeeId: 'E00000001', + skillTypeId: 'ST00000001', } */ diff --git a/bizui/src/bizcomponents/employeeskill/EmployeeSkill.base.js b/bizui/src/bizcomponents/employeeskill/EmployeeSkill.base.js index edba70de0..c682f1ddb 100644 --- a/bizui/src/bizcomponents/employeeskill/EmployeeSkill.base.js +++ b/bizui/src/bizcomponents/employeeskill/EmployeeSkill.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -51,31 +52,27 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({employeeSkill,targetComponent})=>{ +const renderItemOfList=(employeeSkill,targetComponent)=>{ - const {EmployeeSkillService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {employeeSkill.id} {employeeSkill.employee==null?appLocaleName(userContext,"NotAssigned"):`${employeeSkill.employee.displayName}(${employeeSkill.employee.id})`} - - showTransferModel(targetComponent,"员工","employee",EmployeeSkillService.requestCandidateEmployee, - EmployeeSkillService.transferToAnotherEmployee,"anotherEmployeeId",employeeSkill.employee?employeeSkill.employee.id:"")} - style={{fontSize: 20,color:"red"}} /> {employeeSkill.skillType==null?appLocaleName(userContext,"NotAssigned"):`${employeeSkill.skillType.displayName}(${employeeSkill.skillType.id})`} - - showTransferModel(targetComponent,"技能类型","skillType",EmployeeSkillService.requestCandidateSkillType, - EmployeeSkillService.transferToAnotherSkillType,"anotherSkillTypeId",employeeSkill.skillType?employeeSkill.skillType.id:"")} - style={{fontSize: 20,color:"red"}} /> {employeeSkill.description} - {buildTransferModal(employeeSkill,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/employeeskill/EmployeeSkill.createform.js b/bizui/src/bizcomponents/employeeskill/EmployeeSkill.createform.js index 98b371794..23113b249 100644 --- a/bizui/src/bizcomponents/employeeskill/EmployeeSkill.createform.js +++ b/bizui/src/bizcomponents/employeeskill/EmployeeSkill.createform.js @@ -18,8 +18,8 @@ const testValues = {}; /* const testValues = { description: '高手高手高高手', - employeeId: 'E000001', - skillTypeId: 'ST000001', + employeeId: 'E00000001', + skillTypeId: 'ST00000001', } */ diff --git a/bizui/src/bizcomponents/employeeskill/EmployeeSkill.dashboard.js b/bizui/src/bizcomponents/employeeskill/EmployeeSkill.dashboard.js index 0d0e572e1..ecc4cacc3 100644 --- a/bizui/src/bizcomponents/employeeskill/EmployeeSkill.dashboard.js +++ b/bizui/src/bizcomponents/employeeskill/EmployeeSkill.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(employeeSkill)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (employeeSkill) =>defaultSettingListOf(employeeSkill, optionList) const internalLargeTextOf = (employeeSkill) =>{ @@ -149,6 +149,8 @@ class EmployeeSkillDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/employeeskill/EmployeeSkill.permission.js b/bizui/src/bizcomponents/employeeskill/EmployeeSkill.permission.js index 7d657278f..b14edcb3b 100644 --- a/bizui/src/bizcomponents/employeeskill/EmployeeSkill.permission.js +++ b/bizui/src/bizcomponents/employeeskill/EmployeeSkill.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './EmployeeSkill.preference.less' +import styles from './EmployeeSkill.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/employeeskill/EmployeeSkill.preference.js b/bizui/src/bizcomponents/employeeskill/EmployeeSkill.preference.js deleted file mode 100644 index 4c06e8629..000000000 --- a/bizui/src/bizcomponents/employeeskill/EmployeeSkill.preference.js +++ /dev/null @@ -1,361 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './EmployeeSkill.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (employeeSkill) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (employeeSkill) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (employeeSkill) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {EmployeeSkillService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = EmployeeSkillService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (employeeSkill,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=employeeSkill.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_employeeSkill/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (employeeSkill,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(employeeSkill,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (employeeSkill) =>{ - return null -} -const internalRenderExtraFooter = (employeeSkill) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (employeeSkill,targetComponent) =>{ - const userContext = null - return ( - -{employeeSkill.id} -{employeeSkill.employee==null?appLocaleName(userContext,"NotAssigned"):employeeSkill.employee.displayName} - - showTransferModel(targetComponent,"员工","employee","requestCandidateEmployee", - "transferToAnotherEmployee","anotherEmployeeId",employeeSkill.employee?employeeSkill.employee.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{employeeSkill.skillType==null?appLocaleName(userContext,"NotAssigned"):employeeSkill.skillType.displayName} - - showTransferModel(targetComponent,"技能类型","skillType","requestCandidateSkillType", - "transferToAnotherSkillType","anotherSkillTypeId",employeeSkill.skillType?employeeSkill.skillType.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{employeeSkill.description} - - {buildTransferModal(employeeSkill,targetComponent)} - - ) - -} - - -const renderPermissionSetting = employeeSkill => { - const {EmployeeSkillBase} = GlobalComponents - return - - -} - - -class EmployeeSkillPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const employeeSkill = this.props.employeeSkill; - const { id,displayName, } = employeeSkill - - - - const cardsData = {cardsName:"员工技能",cardsFor: "employeeSkill",cardsSource: employeeSkill, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - employeeSkill: state._employeeSkill, -}))(Form.create()(EmployeeSkillPreference)) - diff --git a/bizui/src/bizcomponents/employeeskill/EmployeeSkill.preference.less b/bizui/src/bizcomponents/employeeskill/EmployeeSkill.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/employeeskill/EmployeeSkill.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/employeeskill/EmployeeSkill.profile.js b/bizui/src/bizcomponents/employeeskill/EmployeeSkill.profile.js index 0eb9538bd..f5f206209 100644 --- a/bizui/src/bizcomponents/employeeskill/EmployeeSkill.profile.js +++ b/bizui/src/bizcomponents/employeeskill/EmployeeSkill.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './EmployeeSkill.preference.less' +import styles from './EmployeeSkill.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,16 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (employeeSkill,targetComponent) =>{ - const userContext = null - return ( - -{employeeSkill.id} -{employeeSkill.description} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.EmployeeSkillBase.renderItemOfList(item, targetComponents) + } @@ -63,13 +58,14 @@ class EmployeeSkillProfile extends Component { const cardsData = {cardsName:"员工技能",cardsFor: "employeeSkill",cardsSource: employeeSkill, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -79,7 +75,7 @@ class EmployeeSkillProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.associateform.js b/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.associateform.js index 69747bdf7..8b85c416f 100644 --- a/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.associateform.js +++ b/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.associateform.js @@ -18,11 +18,11 @@ const { TextArea } = Input const testValues = {}; /* const testValues = { - start: '2017-08-20', - end: '2017-04-02', + start: '2018-09-25', + end: '2017-10-05', company: '丝芙兰化妆品公司', description: '在此期间取得非常好的绩效,赢得了客户的信赖', - employeeId: 'E000001', + employeeId: 'E00000001', } */ diff --git a/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.base.js b/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.base.js index bb224bd18..6f6004adc 100644 --- a/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.base.js +++ b/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -55,28 +56,28 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({employeeWorkExperience,targetComponent})=>{ +const renderItemOfList=(employeeWorkExperience,targetComponent)=>{ - const {EmployeeWorkExperienceService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {employeeWorkExperience.id} {employeeWorkExperience.employee==null?appLocaleName(userContext,"NotAssigned"):`${employeeWorkExperience.employee.displayName}(${employeeWorkExperience.employee.id})`} - - showTransferModel(targetComponent,"员工","employee",EmployeeWorkExperienceService.requestCandidateEmployee, - EmployeeWorkExperienceService.transferToAnotherEmployee,"anotherEmployeeId",employeeWorkExperience.employee?employeeWorkExperience.employee.id:"")} - style={{fontSize: 20,color:"red"}} /> { moment(employeeWorkExperience.start).format('YYYY-MM-DD')} { moment(employeeWorkExperience.end).format('YYYY-MM-DD')} {employeeWorkExperience.company} {employeeWorkExperience.description} - {buildTransferModal(employeeWorkExperience,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.createform.js b/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.createform.js index 76f9323fd..ec35fe438 100644 --- a/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.createform.js +++ b/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.createform.js @@ -17,11 +17,11 @@ const { TextArea } = Input const testValues = {}; /* const testValues = { - start: '2017-08-30', - end: '2017-12-31', + start: '2017-08-04', + end: '2019-04-28', company: '丝芙兰化妆品公司', description: '在此期间取得非常好的绩效,赢得了客户的信赖', - employeeId: 'E000001', + employeeId: 'E00000001', } */ diff --git a/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.dashboard.js b/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.dashboard.js index e18f44d6f..6b755680f 100644 --- a/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.dashboard.js +++ b/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(employeeWorkExperience)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (employeeWorkExperience) =>defaultSettingListOf(employeeWorkExperience, optionList) const internalLargeTextOf = (employeeWorkExperience) =>{ @@ -146,6 +146,8 @@ class EmployeeWorkExperienceDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.permission.js b/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.permission.js index 62190ade4..fd913b3f0 100644 --- a/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.permission.js +++ b/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './EmployeeWorkExperience.preference.less' +import styles from './EmployeeWorkExperience.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.preference.js b/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.preference.js deleted file mode 100644 index c13d02b38..000000000 --- a/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.preference.js +++ /dev/null @@ -1,358 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './EmployeeWorkExperience.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (employeeWorkExperience) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (employeeWorkExperience) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (employeeWorkExperience) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {EmployeeWorkExperienceService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = EmployeeWorkExperienceService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (employeeWorkExperience,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=employeeWorkExperience.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_employeeWorkExperience/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (employeeWorkExperience,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(employeeWorkExperience,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (employeeWorkExperience) =>{ - return null -} -const internalRenderExtraFooter = (employeeWorkExperience) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (employeeWorkExperience,targetComponent) =>{ - const userContext = null - return ( - -{employeeWorkExperience.id} -{employeeWorkExperience.employee==null?appLocaleName(userContext,"NotAssigned"):employeeWorkExperience.employee.displayName} - - showTransferModel(targetComponent,"员工","employee","requestCandidateEmployee", - "transferToAnotherEmployee","anotherEmployeeId",employeeWorkExperience.employee?employeeWorkExperience.employee.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{ moment(employeeWorkExperience.start).format('YYYY-MM-DD')} -{ moment(employeeWorkExperience.end).format('YYYY-MM-DD')} -{employeeWorkExperience.company} -{employeeWorkExperience.description} - - {buildTransferModal(employeeWorkExperience,targetComponent)} - - ) - -} - - -const renderPermissionSetting = employeeWorkExperience => { - const {EmployeeWorkExperienceBase} = GlobalComponents - return - - -} - - -class EmployeeWorkExperiencePreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const employeeWorkExperience = this.props.employeeWorkExperience; - const { id,displayName, } = employeeWorkExperience - - - - const cardsData = {cardsName:"员工工作经验",cardsFor: "employeeWorkExperience",cardsSource: employeeWorkExperience, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - employeeWorkExperience: state._employeeWorkExperience, -}))(Form.create()(EmployeeWorkExperiencePreference)) - diff --git a/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.preference.less b/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.profile.js b/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.profile.js index 9a722dd6c..3ff3748b4 100644 --- a/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.profile.js +++ b/bizui/src/bizcomponents/employeeworkexperience/EmployeeWorkExperience.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './EmployeeWorkExperience.preference.less' +import styles from './EmployeeWorkExperience.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,19 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (employeeWorkExperience,targetComponent) =>{ - const userContext = null - return ( - -{employeeWorkExperience.id} -{ moment(employeeWorkExperience.start).format('YYYY-MM-DD')} -{ moment(employeeWorkExperience.end).format('YYYY-MM-DD')} -{employeeWorkExperience.company} -{employeeWorkExperience.description} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.EmployeeWorkExperienceBase.renderItemOfList(item, targetComponents) + } @@ -66,13 +58,14 @@ class EmployeeWorkExperienceProfile extends Component { const cardsData = {cardsName:"员工工作经验",cardsFor: "employeeWorkExperience",cardsSource: employeeWorkExperience, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -82,7 +75,7 @@ class EmployeeWorkExperienceProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/eventattendance/EventAttendance.associateform.js b/bizui/src/bizcomponents/eventattendance/EventAttendance.associateform.js index d18fb8b00..64b452f9e 100644 --- a/bizui/src/bizcomponents/eventattendance/EventAttendance.associateform.js +++ b/bizui/src/bizcomponents/eventattendance/EventAttendance.associateform.js @@ -20,8 +20,8 @@ const testValues = {}; const testValues = { name: '小超见面会参加信息', description: '体会不错,考虑加盟', - potentialCustomerId: 'PC000001', - cityEventId: 'CE000001', + potentialCustomerId: 'PC00000001', + cityEventId: 'CE00000001', } */ diff --git a/bizui/src/bizcomponents/eventattendance/EventAttendance.base.js b/bizui/src/bizcomponents/eventattendance/EventAttendance.base.js index d968ee344..55ae2dafe 100644 --- a/bizui/src/bizcomponents/eventattendance/EventAttendance.base.js +++ b/bizui/src/bizcomponents/eventattendance/EventAttendance.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -53,32 +54,28 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({eventAttendance,targetComponent})=>{ +const renderItemOfList=(eventAttendance,targetComponent)=>{ - const {EventAttendanceService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {eventAttendance.id} {eventAttendance.name} {eventAttendance.potentialCustomer==null?appLocaleName(userContext,"NotAssigned"):`${eventAttendance.potentialCustomer.displayName}(${eventAttendance.potentialCustomer.id})`} - - showTransferModel(targetComponent,"潜在的客户","potentialCustomer",EventAttendanceService.requestCandidatePotentialCustomer, - EventAttendanceService.transferToAnotherPotentialCustomer,"anotherPotentialCustomerId",eventAttendance.potentialCustomer?eventAttendance.potentialCustomer.id:"")} - style={{fontSize: 20,color:"red"}} /> {eventAttendance.cityEvent==null?appLocaleName(userContext,"NotAssigned"):`${eventAttendance.cityEvent.displayName}(${eventAttendance.cityEvent.id})`} - - showTransferModel(targetComponent,"城市活动","cityEvent",EventAttendanceService.requestCandidateCityEvent, - EventAttendanceService.transferToAnotherCityEvent,"anotherCityEventId",eventAttendance.cityEvent?eventAttendance.cityEvent.id:"")} - style={{fontSize: 20,color:"red"}} /> {eventAttendance.description} - {buildTransferModal(eventAttendance,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/eventattendance/EventAttendance.createform.js b/bizui/src/bizcomponents/eventattendance/EventAttendance.createform.js index 2f9a1a6be..82f04afa0 100644 --- a/bizui/src/bizcomponents/eventattendance/EventAttendance.createform.js +++ b/bizui/src/bizcomponents/eventattendance/EventAttendance.createform.js @@ -19,8 +19,8 @@ const testValues = {}; const testValues = { name: '小超见面会参加信息', description: '体会不错,考虑加盟', - potentialCustomerId: 'PC000001', - cityEventId: 'CE000001', + potentialCustomerId: 'PC00000001', + cityEventId: 'CE00000001', } */ diff --git a/bizui/src/bizcomponents/eventattendance/EventAttendance.dashboard.js b/bizui/src/bizcomponents/eventattendance/EventAttendance.dashboard.js index 02405b423..0caf0a0e4 100644 --- a/bizui/src/bizcomponents/eventattendance/EventAttendance.dashboard.js +++ b/bizui/src/bizcomponents/eventattendance/EventAttendance.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(eventAttendance)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (eventAttendance) =>defaultSettingListOf(eventAttendance, optionList) const internalLargeTextOf = (eventAttendance) =>{ @@ -150,6 +150,8 @@ class EventAttendanceDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/eventattendance/EventAttendance.permission.js b/bizui/src/bizcomponents/eventattendance/EventAttendance.permission.js index 123f171a5..47e5109a6 100644 --- a/bizui/src/bizcomponents/eventattendance/EventAttendance.permission.js +++ b/bizui/src/bizcomponents/eventattendance/EventAttendance.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './EventAttendance.preference.less' +import styles from './EventAttendance.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/eventattendance/EventAttendance.preference.js b/bizui/src/bizcomponents/eventattendance/EventAttendance.preference.js deleted file mode 100644 index 7a9da1b3f..000000000 --- a/bizui/src/bizcomponents/eventattendance/EventAttendance.preference.js +++ /dev/null @@ -1,362 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './EventAttendance.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (eventAttendance) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (eventAttendance) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (eventAttendance) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {EventAttendanceService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = EventAttendanceService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (eventAttendance,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=eventAttendance.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_eventAttendance/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (eventAttendance,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(eventAttendance,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (eventAttendance) =>{ - return null -} -const internalRenderExtraFooter = (eventAttendance) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (eventAttendance,targetComponent) =>{ - const userContext = null - return ( - -{eventAttendance.id} -{eventAttendance.name} -{eventAttendance.potentialCustomer==null?appLocaleName(userContext,"NotAssigned"):eventAttendance.potentialCustomer.displayName} - - showTransferModel(targetComponent,"潜在的客户","potentialCustomer","requestCandidatePotentialCustomer", - "transferToAnotherPotentialCustomer","anotherPotentialCustomerId",eventAttendance.potentialCustomer?eventAttendance.potentialCustomer.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{eventAttendance.cityEvent==null?appLocaleName(userContext,"NotAssigned"):eventAttendance.cityEvent.displayName} - - showTransferModel(targetComponent,"城市活动","cityEvent","requestCandidateCityEvent", - "transferToAnotherCityEvent","anotherCityEventId",eventAttendance.cityEvent?eventAttendance.cityEvent.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{eventAttendance.description} - - {buildTransferModal(eventAttendance,targetComponent)} - - ) - -} - - -const renderPermissionSetting = eventAttendance => { - const {EventAttendanceBase} = GlobalComponents - return - - -} - - -class EventAttendancePreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const eventAttendance = this.props.eventAttendance; - const { id,displayName, } = eventAttendance - - - - const cardsData = {cardsName:"活动的参与情况",cardsFor: "eventAttendance",cardsSource: eventAttendance, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - eventAttendance: state._eventAttendance, -}))(Form.create()(EventAttendancePreference)) - diff --git a/bizui/src/bizcomponents/eventattendance/EventAttendance.preference.less b/bizui/src/bizcomponents/eventattendance/EventAttendance.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/eventattendance/EventAttendance.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/eventattendance/EventAttendance.profile.js b/bizui/src/bizcomponents/eventattendance/EventAttendance.profile.js index 01c34fdbd..d2ae2c5ea 100644 --- a/bizui/src/bizcomponents/eventattendance/EventAttendance.profile.js +++ b/bizui/src/bizcomponents/eventattendance/EventAttendance.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './EventAttendance.preference.less' +import styles from './EventAttendance.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,17 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (eventAttendance,targetComponent) =>{ - const userContext = null - return ( - -{eventAttendance.id} -{eventAttendance.name} -{eventAttendance.description} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.EventAttendanceBase.renderItemOfList(item, targetComponents) + } @@ -64,13 +58,14 @@ class EventAttendanceProfile extends Component { const cardsData = {cardsName:"活动的参与情况",cardsFor: "eventAttendance",cardsSource: eventAttendance, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -80,7 +75,7 @@ class EventAttendanceProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/goods/Goods.associateform.js b/bizui/src/bizcomponents/goods/Goods.associateform.js index 9df8ad9c5..ef514aac5 100644 --- a/bizui/src/bizcomponents/goods/Goods.associateform.js +++ b/bizui/src/bizcomponents/goods/Goods.associateform.js @@ -21,17 +21,17 @@ const testValues = { name: '可口可乐', rfid: 'RF99192', uom: '件', - maxPackage: '10', - expireTime: '2017-10-23', - skuId: 'S000001', - receivingSpaceId: 'RS000001', - goodsAllocationId: 'GA000001', - smartPalletId: 'SP000001', - shippingSpaceId: 'SS000001', - transportTaskId: 'TT000001', - retailStoreId: 'RS000001', - bizOrderId: 'SO000001', - retailStoreOrderId: 'RSO000001', + maxPackage: '9', + expireTime: '2017-06-02', + skuId: 'S00000001', + receivingSpaceId: 'RS00000001', + goodsAllocationId: 'GA00000001', + smartPalletId: 'SP00000001', + shippingSpaceId: 'SS00000001', + transportTaskId: 'TT00000001', + retailStoreId: 'RS00000001', + bizOrderId: 'SO00000001', + retailStoreOrderId: 'RSO00000001', } */ diff --git a/bizui/src/bizcomponents/goods/Goods.base.js b/bizui/src/bizcomponents/goods/Goods.base.js index 9f02b9197..18ca50bc0 100644 --- a/bizui/src/bizcomponents/goods/Goods.base.js +++ b/bizui/src/bizcomponents/goods/Goods.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -52,7 +53,7 @@ const fieldLabels = { retailStore: '双链小超', bizOrder: '订单', retailStoreOrder: '生超的订单', - packaging: '包装', + packaging: '包', currentStatus: '当前状态', } @@ -78,14 +79,16 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({goods,targetComponent})=>{ +const renderItemOfList=(goods,targetComponent)=>{ - const {GoodsService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {goods.id} {goods.name} {goods.rfid} @@ -93,63 +96,29 @@ const renderItemOfList=({goods,targetComponent})=>{ {goods.maxPackage} { moment(goods.expireTime).format('YYYY-MM-DD')} {goods.sku==null?appLocaleName(userContext,"NotAssigned"):`${goods.sku.displayName}(${goods.sku.id})`} - - showTransferModel(targetComponent,"SKU","sku",GoodsService.requestCandidateSku, - GoodsService.transferToAnotherSku,"anotherSkuId",goods.sku?goods.sku.id:"")} - style={{fontSize: 20,color:"red"}} /> {goods.receivingSpace==null?appLocaleName(userContext,"NotAssigned"):`${goods.receivingSpace.displayName}(${goods.receivingSpace.id})`} - - showTransferModel(targetComponent,"收货区","receivingSpace",GoodsService.requestCandidateReceivingSpace, - GoodsService.transferToAnotherReceivingSpace,"anotherReceivingSpaceId",goods.receivingSpace?goods.receivingSpace.id:"")} - style={{fontSize: 20,color:"red"}} /> {goods.goodsAllocation==null?appLocaleName(userContext,"NotAssigned"):`${goods.goodsAllocation.displayName}(${goods.goodsAllocation.id})`} - - showTransferModel(targetComponent,"货位","goodsAllocation",GoodsService.requestCandidateGoodsAllocation, - GoodsService.transferToAnotherGoodsAllocation,"anotherGoodsAllocationId",goods.goodsAllocation?goods.goodsAllocation.id:"")} - style={{fontSize: 20,color:"red"}} /> {goods.smartPallet==null?appLocaleName(userContext,"NotAssigned"):`${goods.smartPallet.displayName}(${goods.smartPallet.id})`} - - showTransferModel(targetComponent,"智能托盘","smartPallet",GoodsService.requestCandidateSmartPallet, - GoodsService.transferToAnotherSmartPallet,"anotherSmartPalletId",goods.smartPallet?goods.smartPallet.id:"")} - style={{fontSize: 20,color:"red"}} /> {goods.shippingSpace==null?appLocaleName(userContext,"NotAssigned"):`${goods.shippingSpace.displayName}(${goods.shippingSpace.id})`} - - showTransferModel(targetComponent,"发货区","shippingSpace",GoodsService.requestCandidateShippingSpace, - GoodsService.transferToAnotherShippingSpace,"anotherShippingSpaceId",goods.shippingSpace?goods.shippingSpace.id:"")} - style={{fontSize: 20,color:"red"}} /> {goods.transportTask==null?appLocaleName(userContext,"NotAssigned"):`${goods.transportTask.displayName}(${goods.transportTask.id})`} - - showTransferModel(targetComponent,"运输任务","transportTask",GoodsService.requestCandidateTransportTask, - GoodsService.transferToAnotherTransportTask,"anotherTransportTaskId",goods.transportTask?goods.transportTask.id:"")} - style={{fontSize: 20,color:"red"}} /> {goods.retailStore==null?appLocaleName(userContext,"NotAssigned"):`${goods.retailStore.displayName}(${goods.retailStore.id})`} - - showTransferModel(targetComponent,"双链小超","retailStore",GoodsService.requestCandidateRetailStore, - GoodsService.transferToAnotherRetailStore,"anotherRetailStoreId",goods.retailStore?goods.retailStore.id:"")} - style={{fontSize: 20,color:"red"}} /> {goods.bizOrder==null?appLocaleName(userContext,"NotAssigned"):`${goods.bizOrder.displayName}(${goods.bizOrder.id})`} - - showTransferModel(targetComponent,"订单","supplyOrder",GoodsService.requestCandidateBizOrder, - GoodsService.transferToAnotherBizOrder,"anotherBizOrderId",goods.bizOrder?goods.bizOrder.id:"")} - style={{fontSize: 20,color:"red"}} /> {goods.retailStoreOrder==null?appLocaleName(userContext,"NotAssigned"):`${goods.retailStoreOrder.displayName}(${goods.retailStoreOrder.id})`} - - showTransferModel(targetComponent,"生超的订单","retailStoreOrder",GoodsService.requestCandidateRetailStoreOrder, - GoodsService.transferToAnotherRetailStoreOrder,"anotherRetailStoreOrderId",goods.retailStoreOrder?goods.retailStoreOrder.id:"")} - style={{fontSize: 20,color:"red"}} /> {goods.currentStatus} - {buildTransferModal(goods,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/goods/Goods.createform.js b/bizui/src/bizcomponents/goods/Goods.createform.js index 5e2c24890..c4a4702c6 100644 --- a/bizui/src/bizcomponents/goods/Goods.createform.js +++ b/bizui/src/bizcomponents/goods/Goods.createform.js @@ -21,16 +21,16 @@ const testValues = { rfid: 'RF99192', uom: '件', maxPackage: '10', - expireTime: '2016-11-17', - skuId: 'S000001', - receivingSpaceId: 'RS000001', - goodsAllocationId: 'GA000001', - smartPalletId: 'SP000001', - shippingSpaceId: 'SS000001', - transportTaskId: 'TT000001', - retailStoreId: 'RS000001', - bizOrderId: 'SO000001', - retailStoreOrderId: 'RSO000001', + expireTime: '2018-11-26', + skuId: 'S00000001', + receivingSpaceId: 'RS00000001', + goodsAllocationId: 'GA00000001', + smartPalletId: 'SP00000001', + shippingSpaceId: 'SS00000001', + transportTaskId: 'TT00000001', + retailStoreId: 'RS00000001', + bizOrderId: 'SO00000001', + retailStoreOrderId: 'RSO00000001', } */ diff --git a/bizui/src/bizcomponents/goods/Goods.dashboard.js b/bizui/src/bizcomponents/goods/Goods.dashboard.js index 74a5da52c..b005a9ab1 100644 --- a/bizui/src/bizcomponents/goods/Goods.dashboard.js +++ b/bizui/src/bizcomponents/goods/Goods.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(goods)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (goods) =>defaultSettingListOf(goods, optionList) const internalLargeTextOf = (goods) =>{ @@ -182,7 +182,7 @@ class GoodsDashboard extends Component { const cardsData = {cardsName:"货物",cardsFor: "goods", cardsSource: this.props.goods,returnURL,displayName, subItems: [ -{name: 'goodsMovementList', displayName:'货物移动',type:'goodsMovement',count:goodsMovementCount,addFunction: true, role: 'goodsMovement', metaInfo: goodsMovementListMetaInfo}, +{name: 'goodsMovementList', displayName:'货物移动',type:'goodsMovement',count:goodsMovementCount,addFunction: true, role: 'goodsMovement', metaInfo: goodsMovementListMetaInfo, renderItem: GlobalComponents.GoodsMovementBase.renderItemOfList}, ], }; @@ -197,6 +197,8 @@ class GoodsDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/goods/Goods.permission.js b/bizui/src/bizcomponents/goods/Goods.permission.js index 4f74c7440..fad18a198 100644 --- a/bizui/src/bizcomponents/goods/Goods.permission.js +++ b/bizui/src/bizcomponents/goods/Goods.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './Goods.preference.less' +import styles from './Goods.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/goods/Goods.preference.js b/bizui/src/bizcomponents/goods/Goods.preference.js deleted file mode 100644 index f03eb95f2..000000000 --- a/bizui/src/bizcomponents/goods/Goods.preference.js +++ /dev/null @@ -1,408 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './Goods.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (goods) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (goods) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (goods) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {GoodsService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = GoodsService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (goods,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=goods.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_goods/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (goods,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(goods,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (goods) =>{ - return null -} -const internalRenderExtraFooter = (goods) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (goods,targetComponent) =>{ - const userContext = null - return ( - -{goods.id} -{goods.name} -{goods.rfid} -{goods.uom} -{goods.maxPackage} -{ moment(goods.expireTime).format('YYYY-MM-DD')} -{goods.sku==null?appLocaleName(userContext,"NotAssigned"):goods.sku.displayName} - - showTransferModel(targetComponent,"SKU","sku","requestCandidateSku", - "transferToAnotherSku","anotherSkuId",goods.sku?goods.sku.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{goods.receivingSpace==null?appLocaleName(userContext,"NotAssigned"):goods.receivingSpace.displayName} - - showTransferModel(targetComponent,"收货区","receivingSpace","requestCandidateReceivingSpace", - "transferToAnotherReceivingSpace","anotherReceivingSpaceId",goods.receivingSpace?goods.receivingSpace.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{goods.goodsAllocation==null?appLocaleName(userContext,"NotAssigned"):goods.goodsAllocation.displayName} - - showTransferModel(targetComponent,"货位","goodsAllocation","requestCandidateGoodsAllocation", - "transferToAnotherGoodsAllocation","anotherGoodsAllocationId",goods.goodsAllocation?goods.goodsAllocation.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{goods.smartPallet==null?appLocaleName(userContext,"NotAssigned"):goods.smartPallet.displayName} - - showTransferModel(targetComponent,"智能托盘","smartPallet","requestCandidateSmartPallet", - "transferToAnotherSmartPallet","anotherSmartPalletId",goods.smartPallet?goods.smartPallet.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{goods.shippingSpace==null?appLocaleName(userContext,"NotAssigned"):goods.shippingSpace.displayName} - - showTransferModel(targetComponent,"发货区","shippingSpace","requestCandidateShippingSpace", - "transferToAnotherShippingSpace","anotherShippingSpaceId",goods.shippingSpace?goods.shippingSpace.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{goods.transportTask==null?appLocaleName(userContext,"NotAssigned"):goods.transportTask.displayName} - - showTransferModel(targetComponent,"运输任务","transportTask","requestCandidateTransportTask", - "transferToAnotherTransportTask","anotherTransportTaskId",goods.transportTask?goods.transportTask.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{goods.retailStore==null?appLocaleName(userContext,"NotAssigned"):goods.retailStore.displayName} - - showTransferModel(targetComponent,"双链小超","retailStore","requestCandidateRetailStore", - "transferToAnotherRetailStore","anotherRetailStoreId",goods.retailStore?goods.retailStore.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{goods.bizOrder==null?appLocaleName(userContext,"NotAssigned"):goods.bizOrder.displayName} - - showTransferModel(targetComponent,"订单","supplyOrder","requestCandidateBizOrder", - "transferToAnotherBizOrder","anotherBizOrderId",goods.bizOrder?goods.bizOrder.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{goods.retailStoreOrder==null?appLocaleName(userContext,"NotAssigned"):goods.retailStoreOrder.displayName} - - showTransferModel(targetComponent,"生超的订单","retailStoreOrder","requestCandidateRetailStoreOrder", - "transferToAnotherRetailStoreOrder","anotherRetailStoreOrderId",goods.retailStoreOrder?goods.retailStoreOrder.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{goods.currentStatus} - - {buildTransferModal(goods,targetComponent)} - - ) - -} - - -const renderPermissionSetting = goods => { - const {GoodsBase} = GlobalComponents - return - - -} - - -class GoodsPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const goods = this.props.goods; - const { id,displayName, goodsMovementCount } = goods - - - - const cardsData = {cardsName:"货物",cardsFor: "goods",cardsSource: goods, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - goods: state._goods, -}))(Form.create()(GoodsPreference)) - diff --git a/bizui/src/bizcomponents/goods/Goods.preference.less b/bizui/src/bizcomponents/goods/Goods.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/goods/Goods.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/goods/Goods.profile.js b/bizui/src/bizcomponents/goods/Goods.profile.js index a3d21ad2b..5d52be1d2 100644 --- a/bizui/src/bizcomponents/goods/Goods.profile.js +++ b/bizui/src/bizcomponents/goods/Goods.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './Goods.preference.less' +import styles from './Goods.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,21 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (goods,targetComponent) =>{ - const userContext = null - return ( - -{goods.id} -{goods.name} -{goods.rfid} -{goods.uom} -{goods.maxPackage} -{ moment(goods.expireTime).format('YYYY-MM-DD')} -{goods.currentStatus} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.GoodsBase.renderItemOfList(item, targetComponents) + } @@ -68,13 +58,14 @@ class GoodsProfile extends Component { const cardsData = {cardsName:"货物",cardsFor: "goods",cardsSource: goods, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -84,7 +75,7 @@ class GoodsProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.associateform.js b/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.associateform.js index 0f90a1c10..0de056674 100644 --- a/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.associateform.js +++ b/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.associateform.js @@ -19,9 +19,9 @@ const testValues = {}; /* const testValues = { location: '成都龙泉驿飞鹤路20号存货区货架20号货位', - latitude: '41.995934669165386', - longitude: '130.97181539356887', - goodsShelfId: 'GS000001', + latitude: '41.07173604111933', + longitude: '130.72430464886187', + goodsShelfId: 'GS00000001', } */ diff --git a/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.base.js b/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.base.js index 4567c677d..ce2a84b12 100644 --- a/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.base.js +++ b/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -54,27 +55,27 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({goodsAllocation,targetComponent})=>{ +const renderItemOfList=(goodsAllocation,targetComponent)=>{ - const {GoodsAllocationService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {goodsAllocation.id} {goodsAllocation.location} {goodsAllocation.latitude} {goodsAllocation.longitude} {goodsAllocation.goodsShelf==null?appLocaleName(userContext,"NotAssigned"):`${goodsAllocation.goodsShelf.displayName}(${goodsAllocation.goodsShelf.id})`} - - showTransferModel(targetComponent,"货架","goodsShelf",GoodsAllocationService.requestCandidateGoodsShelf, - GoodsAllocationService.transferToAnotherGoodsShelf,"anotherGoodsShelfId",goodsAllocation.goodsShelf?goodsAllocation.goodsShelf.id:"")} - style={{fontSize: 20,color:"red"}} /> - {buildTransferModal(goodsAllocation,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.createform.js b/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.createform.js index c172d8b08..14f713315 100644 --- a/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.createform.js +++ b/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.createform.js @@ -18,9 +18,9 @@ const testValues = {}; /* const testValues = { location: '成都龙泉驿飞鹤路20号存货区货架20号货位', - latitude: '40.98156824358914', - longitude: '131.50922230583038', - goodsShelfId: 'GS000001', + latitude: '39.83118815952429', + longitude: '131.5407420826705', + goodsShelfId: 'GS00000001', } */ diff --git a/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.dashboard.js b/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.dashboard.js index afeabc038..fcfa59889 100644 --- a/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.dashboard.js +++ b/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(goodsAllocation)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (goodsAllocation) =>defaultSettingListOf(goodsAllocation, optionList) const internalLargeTextOf = (goodsAllocation) =>{ @@ -131,7 +131,7 @@ class GoodsAllocationDashboard extends Component { const cardsData = {cardsName:"货位",cardsFor: "goodsAllocation", cardsSource: this.props.goodsAllocation,returnURL,displayName, subItems: [ -{name: 'goodsList', displayName:'货物',type:'goods',count:goodsCount,addFunction: true, role: 'goods', metaInfo: goodsListMetaInfo}, +{name: 'goodsList', displayName:'货物',type:'goods',count:goodsCount,addFunction: true, role: 'goods', metaInfo: goodsListMetaInfo, renderItem: GlobalComponents.GoodsBase.renderItemOfList}, ], }; @@ -146,6 +146,8 @@ class GoodsAllocationDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.permission.js b/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.permission.js index 857c9082a..9163f4f1a 100644 --- a/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.permission.js +++ b/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './GoodsAllocation.preference.less' +import styles from './GoodsAllocation.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.preference.js b/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.preference.js deleted file mode 100644 index 531e1b752..000000000 --- a/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.preference.js +++ /dev/null @@ -1,357 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './GoodsAllocation.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (goodsAllocation) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (goodsAllocation) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (goodsAllocation) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {GoodsAllocationService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = GoodsAllocationService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (goodsAllocation,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=goodsAllocation.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_goodsAllocation/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (goodsAllocation,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(goodsAllocation,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (goodsAllocation) =>{ - return null -} -const internalRenderExtraFooter = (goodsAllocation) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (goodsAllocation,targetComponent) =>{ - const userContext = null - return ( - -{goodsAllocation.id} -{goodsAllocation.location} -{goodsAllocation.latitude} -{goodsAllocation.longitude} -{goodsAllocation.goodsShelf==null?appLocaleName(userContext,"NotAssigned"):goodsAllocation.goodsShelf.displayName} - - showTransferModel(targetComponent,"货架","goodsShelf","requestCandidateGoodsShelf", - "transferToAnotherGoodsShelf","anotherGoodsShelfId",goodsAllocation.goodsShelf?goodsAllocation.goodsShelf.id:"")} - style={{fontSize: 20,color:"red"}} /> - - - {buildTransferModal(goodsAllocation,targetComponent)} - - ) - -} - - -const renderPermissionSetting = goodsAllocation => { - const {GoodsAllocationBase} = GlobalComponents - return - - -} - - -class GoodsAllocationPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const goodsAllocation = this.props.goodsAllocation; - const { id,displayName, goodsCount } = goodsAllocation - - - - const cardsData = {cardsName:"货位",cardsFor: "goodsAllocation",cardsSource: goodsAllocation, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - goodsAllocation: state._goodsAllocation, -}))(Form.create()(GoodsAllocationPreference)) - diff --git a/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.preference.less b/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.profile.js b/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.profile.js index 6f8453ce4..ce2db11c6 100644 --- a/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.profile.js +++ b/bizui/src/bizcomponents/goodsallocation/GoodsAllocation.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './GoodsAllocation.preference.less' +import styles from './GoodsAllocation.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,18 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (goodsAllocation,targetComponent) =>{ - const userContext = null - return ( - -{goodsAllocation.id} -{goodsAllocation.location} -{goodsAllocation.latitude} -{goodsAllocation.longitude} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.GoodsAllocationBase.renderItemOfList(item, targetComponents) + } @@ -65,13 +58,14 @@ class GoodsAllocationProfile extends Component { const cardsData = {cardsName:"货位",cardsFor: "goodsAllocation",cardsSource: goodsAllocation, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -81,7 +75,7 @@ class GoodsAllocationProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/goodsmovement/GoodsMovement.associateform.js b/bizui/src/bizcomponents/goodsmovement/GoodsMovement.associateform.js index d5c3384f1..22a233974 100644 --- a/bizui/src/bizcomponents/goodsmovement/GoodsMovement.associateform.js +++ b/bizui/src/bizcomponents/goodsmovement/GoodsMovement.associateform.js @@ -18,14 +18,14 @@ const { TextArea } = Input const testValues = {}; /* const testValues = { - moveTime: '2019-04-28 18:39:46', + moveTime: '2019-06-25 20:07:21', facility: '仓库货位', facilityId: '仓库货位', fromIp: '192.168.20.1', sessionId: 'FTYUIOLJYT^*(PLKJYT)', - latitude: '41.849456201586406', - longitude: '131.7397406457198', - goodsId: 'G000001', + latitude: '42.22140306327162', + longitude: '132.1190962186963', + goodsId: 'G00000001', userAgent: 'Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/7B405', } */ diff --git a/bizui/src/bizcomponents/goodsmovement/GoodsMovement.base.js b/bizui/src/bizcomponents/goodsmovement/GoodsMovement.base.js index 7b58ec4a1..5f08cf34e 100644 --- a/bizui/src/bizcomponents/goodsmovement/GoodsMovement.base.js +++ b/bizui/src/bizcomponents/goodsmovement/GoodsMovement.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -63,14 +64,16 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({goodsMovement,targetComponent})=>{ +const renderItemOfList=(goodsMovement,targetComponent)=>{ - const {GoodsMovementService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {goodsMovement.id} { moment(goodsMovement.moveTime).format('YYYY-MM-DD')} {goodsMovement.facility} @@ -80,14 +83,12 @@ const renderItemOfList=({goodsMovement,targetComponent})=>{ {goodsMovement.latitude} {goodsMovement.longitude} {goodsMovement.goods==null?appLocaleName(userContext,"NotAssigned"):`${goodsMovement.goods.displayName}(${goodsMovement.goods.id})`} - - showTransferModel(targetComponent,"货物","goods",GoodsMovementService.requestCandidateGoods, - GoodsMovementService.transferToAnotherGoods,"anotherGoodsId",goodsMovement.goods?goodsMovement.goods.id:"")} - style={{fontSize: 20,color:"red"}} /> - {buildTransferModal(goodsMovement,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/goodsmovement/GoodsMovement.createform.js b/bizui/src/bizcomponents/goodsmovement/GoodsMovement.createform.js index 28b9c344f..9aa2ae1f1 100644 --- a/bizui/src/bizcomponents/goodsmovement/GoodsMovement.createform.js +++ b/bizui/src/bizcomponents/goodsmovement/GoodsMovement.createform.js @@ -17,14 +17,14 @@ const { TextArea } = Input const testValues = {}; /* const testValues = { - moveTime: '2019-05-16 13:23:04', + moveTime: '2019-06-20 06:24:40', facility: '仓库货位', facilityId: '仓库货位', fromIp: '192.168.20.1', sessionId: 'FTYUIOLJYT^*(PLKJYT)', - latitude: '41.76932583351816', - longitude: '129.7784601655759', - goodsId: 'G000001', + latitude: '40.61882626860662', + longitude: '130.74102051139778', + goodsId: 'G00000001', userAgent: 'Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/7B405', } */ diff --git a/bizui/src/bizcomponents/goodsmovement/GoodsMovement.dashboard.js b/bizui/src/bizcomponents/goodsmovement/GoodsMovement.dashboard.js index 8f11b3c21..ed1ce26f4 100644 --- a/bizui/src/bizcomponents/goodsmovement/GoodsMovement.dashboard.js +++ b/bizui/src/bizcomponents/goodsmovement/GoodsMovement.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(goodsMovement)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (goodsMovement) =>defaultSettingListOf(goodsMovement, optionList) const internalLargeTextOf = (goodsMovement) =>{ @@ -152,6 +152,8 @@ class GoodsMovementDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/goodsmovement/GoodsMovement.permission.js b/bizui/src/bizcomponents/goodsmovement/GoodsMovement.permission.js index fc147c23f..a19281c28 100644 --- a/bizui/src/bizcomponents/goodsmovement/GoodsMovement.permission.js +++ b/bizui/src/bizcomponents/goodsmovement/GoodsMovement.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './GoodsMovement.preference.less' +import styles from './GoodsMovement.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/goodsmovement/GoodsMovement.preference.js b/bizui/src/bizcomponents/goodsmovement/GoodsMovement.preference.js deleted file mode 100644 index 731db7795..000000000 --- a/bizui/src/bizcomponents/goodsmovement/GoodsMovement.preference.js +++ /dev/null @@ -1,364 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './GoodsMovement.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (goodsMovement) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (goodsMovement) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (goodsMovement) =>{ - - return(
-
{goodsMovement.userAgent}
-
) - - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {GoodsMovementService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = GoodsMovementService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (goodsMovement,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=goodsMovement.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_goodsMovement/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (goodsMovement,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(goodsMovement,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (goodsMovement) =>{ - return null -} -const internalRenderExtraFooter = (goodsMovement) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (goodsMovement,targetComponent) =>{ - const userContext = null - return ( - -{goodsMovement.id} -{ moment(goodsMovement.moveTime).format('YYYY-MM-DD')} -{goodsMovement.facility} -{goodsMovement.facilityId} -{goodsMovement.fromIp} -{goodsMovement.sessionId} -{goodsMovement.latitude} -{goodsMovement.longitude} -{goodsMovement.goods==null?appLocaleName(userContext,"NotAssigned"):goodsMovement.goods.displayName} - - showTransferModel(targetComponent,"货物","goods","requestCandidateGoods", - "transferToAnotherGoods","anotherGoodsId",goodsMovement.goods?goodsMovement.goods.id:"")} - style={{fontSize: 20,color:"red"}} /> - - - {buildTransferModal(goodsMovement,targetComponent)} - - ) - -} - - -const renderPermissionSetting = goodsMovement => { - const {GoodsMovementBase} = GlobalComponents - return - - -} - - -class GoodsMovementPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const goodsMovement = this.props.goodsMovement; - const { id,displayName, } = goodsMovement - - - - const cardsData = {cardsName:"货物移动",cardsFor: "goodsMovement",cardsSource: goodsMovement, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - goodsMovement: state._goodsMovement, -}))(Form.create()(GoodsMovementPreference)) - diff --git a/bizui/src/bizcomponents/goodsmovement/GoodsMovement.preference.less b/bizui/src/bizcomponents/goodsmovement/GoodsMovement.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/goodsmovement/GoodsMovement.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/goodsmovement/GoodsMovement.profile.js b/bizui/src/bizcomponents/goodsmovement/GoodsMovement.profile.js index e14b84433..ae2d4ce30 100644 --- a/bizui/src/bizcomponents/goodsmovement/GoodsMovement.profile.js +++ b/bizui/src/bizcomponents/goodsmovement/GoodsMovement.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './GoodsMovement.preference.less' +import styles from './GoodsMovement.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,22 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (goodsMovement,targetComponent) =>{ - const userContext = null - return ( - -{goodsMovement.id} -{ moment(goodsMovement.moveTime).format('YYYY-MM-DD')} -{goodsMovement.facility} -{goodsMovement.facilityId} -{goodsMovement.fromIp} -{goodsMovement.sessionId} -{goodsMovement.latitude} -{goodsMovement.longitude} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.GoodsMovementBase.renderItemOfList(item, targetComponents) + } @@ -69,13 +58,14 @@ class GoodsMovementProfile extends Component { const cardsData = {cardsName:"货物移动",cardsFor: "goodsMovement",cardsSource: goodsMovement, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -85,7 +75,7 @@ class GoodsMovementProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.associateform.js b/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.associateform.js index 1b4b1cd5b..87fb1ac92 100644 --- a/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.associateform.js +++ b/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.associateform.js @@ -20,7 +20,7 @@ const testValues = {}; const testValues = { packageName: '王煜东', rfid: 'RF99192', - packageTime: '2018-07-24', + packageTime: '2016-12-16', description: '打包完成,准备起运', } */ diff --git a/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.base.js b/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.base.js index 1ea3b38aa..9d57a9b20 100644 --- a/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.base.js +++ b/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -54,22 +55,26 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({goodsPackaging,targetComponent})=>{ +const renderItemOfList=(goodsPackaging,targetComponent)=>{ - const {GoodsPackagingService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {goodsPackaging.id} {goodsPackaging.packageName} {goodsPackaging.rfid} { moment(goodsPackaging.packageTime).format('YYYY-MM-DD')} {goodsPackaging.description} - {buildTransferModal(goodsPackaging,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.createform.js b/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.createform.js index 5e96e4569..f5627a929 100644 --- a/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.createform.js +++ b/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.createform.js @@ -19,7 +19,7 @@ const testValues = {}; const testValues = { packageName: '王煜东', rfid: 'RF99192', - packageTime: '2018-12-25', + packageTime: '2017-04-28', description: '打包完成,准备起运', } */ diff --git a/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.dashboard.js b/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.dashboard.js index 32335222c..6f0282d1d 100644 --- a/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.dashboard.js +++ b/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(goodsPackaging)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (goodsPackaging) =>defaultSettingListOf(goodsPackaging, optionList) const internalLargeTextOf = (goodsPackaging) =>{ @@ -126,7 +126,7 @@ class GoodsPackagingDashboard extends Component { const cardsData = {cardsName:"货物包装",cardsFor: "goodsPackaging", cardsSource: this.props.goodsPackaging,returnURL,displayName, subItems: [ -{name: 'goodsList', displayName:'货物',type:'goods',count:goodsCount,addFunction: true, role: 'goods', metaInfo: goodsListMetaInfo}, +{name: 'goodsList', displayName:'货物',type:'goods',count:goodsCount,addFunction: true, role: 'goods', metaInfo: goodsListMetaInfo, renderItem: GlobalComponents.GoodsBase.renderItemOfList}, ], }; @@ -141,6 +141,8 @@ class GoodsPackagingDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.permission.js b/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.permission.js index 12d13e6bf..caac52e2f 100644 --- a/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.permission.js +++ b/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './GoodsPackaging.preference.less' +import styles from './GoodsPackaging.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.preference.js b/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.preference.js deleted file mode 100644 index 44e9b9af3..000000000 --- a/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.preference.js +++ /dev/null @@ -1,352 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './GoodsPackaging.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (goodsPackaging) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (goodsPackaging) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (goodsPackaging) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {GoodsPackagingService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = GoodsPackagingService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (goodsPackaging,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=goodsPackaging.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_goodsPackaging/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (goodsPackaging,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(goodsPackaging,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (goodsPackaging) =>{ - return null -} -const internalRenderExtraFooter = (goodsPackaging) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (goodsPackaging,targetComponent) =>{ - const userContext = null - return ( - -{goodsPackaging.id} -{goodsPackaging.packageName} -{goodsPackaging.rfid} -{ moment(goodsPackaging.packageTime).format('YYYY-MM-DD')} -{goodsPackaging.description} - - {buildTransferModal(goodsPackaging,targetComponent)} - - ) - -} - - -const renderPermissionSetting = goodsPackaging => { - const {GoodsPackagingBase} = GlobalComponents - return - - -} - - -class GoodsPackagingPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const goodsPackaging = this.props.goodsPackaging; - const { id,displayName, goodsCount } = goodsPackaging - - - - const cardsData = {cardsName:"货物包装",cardsFor: "goodsPackaging",cardsSource: goodsPackaging, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - goodsPackaging: state._goodsPackaging, -}))(Form.create()(GoodsPackagingPreference)) - diff --git a/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.preference.less b/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.profile.js b/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.profile.js index 937fcc49e..eed3742a5 100644 --- a/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.profile.js +++ b/bizui/src/bizcomponents/goodspackaging/GoodsPackaging.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './GoodsPackaging.preference.less' +import styles from './GoodsPackaging.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,19 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (goodsPackaging,targetComponent) =>{ - const userContext = null - return ( - -{goodsPackaging.id} -{goodsPackaging.packageName} -{goodsPackaging.rfid} -{ moment(goodsPackaging.packageTime).format('YYYY-MM-DD')} -{goodsPackaging.description} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.GoodsPackagingBase.renderItemOfList(item, targetComponents) + } @@ -66,13 +58,14 @@ class GoodsPackagingProfile extends Component { const cardsData = {cardsName:"货物包装",cardsFor: "goodsPackaging",cardsSource: goodsPackaging, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -82,7 +75,7 @@ class GoodsPackagingProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/goodsshelf/GoodsShelf.associateform.js b/bizui/src/bizcomponents/goodsshelf/GoodsShelf.associateform.js index ac2589298..60d730b68 100644 --- a/bizui/src/bizcomponents/goodsshelf/GoodsShelf.associateform.js +++ b/bizui/src/bizcomponents/goodsshelf/GoodsShelf.associateform.js @@ -19,9 +19,9 @@ const testValues = {}; /* const testValues = { location: '成都龙泉驿飞鹤路20号存货区货架', - storageSpaceId: 'SS000001', - supplierSpaceId: 'SS000001', - damageSpaceId: 'DS000001', + storageSpaceId: 'SS00000001', + supplierSpaceId: 'SS00000001', + damageSpaceId: 'DS00000001', } */ diff --git a/bizui/src/bizcomponents/goodsshelf/GoodsShelf.base.js b/bizui/src/bizcomponents/goodsshelf/GoodsShelf.base.js index 5d6bb52c8..6a52db6ab 100644 --- a/bizui/src/bizcomponents/goodsshelf/GoodsShelf.base.js +++ b/bizui/src/bizcomponents/goodsshelf/GoodsShelf.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -57,38 +58,30 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({goodsShelf,targetComponent})=>{ +const renderItemOfList=(goodsShelf,targetComponent)=>{ - const {GoodsShelfService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {goodsShelf.id} {goodsShelf.location} {goodsShelf.storageSpace==null?appLocaleName(userContext,"NotAssigned"):`${goodsShelf.storageSpace.displayName}(${goodsShelf.storageSpace.id})`} - - showTransferModel(targetComponent,"存货区","storageSpace",GoodsShelfService.requestCandidateStorageSpace, - GoodsShelfService.transferToAnotherStorageSpace,"anotherStorageSpaceId",goodsShelf.storageSpace?goodsShelf.storageSpace.id:"")} - style={{fontSize: 20,color:"red"}} /> {goodsShelf.supplierSpace==null?appLocaleName(userContext,"NotAssigned"):`${goodsShelf.supplierSpace.displayName}(${goodsShelf.supplierSpace.id})`} - - showTransferModel(targetComponent,"供应商的空间","supplierSpace",GoodsShelfService.requestCandidateSupplierSpace, - GoodsShelfService.transferToAnotherSupplierSpace,"anotherSupplierSpaceId",goodsShelf.supplierSpace?goodsShelf.supplierSpace.id:"")} - style={{fontSize: 20,color:"red"}} /> {goodsShelf.damageSpace==null?appLocaleName(userContext,"NotAssigned"):`${goodsShelf.damageSpace.displayName}(${goodsShelf.damageSpace.id})`} - - showTransferModel(targetComponent,"残次货物存放区","damageSpace",GoodsShelfService.requestCandidateDamageSpace, - GoodsShelfService.transferToAnotherDamageSpace,"anotherDamageSpaceId",goodsShelf.damageSpace?goodsShelf.damageSpace.id:"")} - style={{fontSize: 20,color:"red"}} /> { moment(goodsShelf.lastUpdateTime).format('YYYY-MM-DD')} - {buildTransferModal(goodsShelf,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/goodsshelf/GoodsShelf.createform.js b/bizui/src/bizcomponents/goodsshelf/GoodsShelf.createform.js index adf507ae6..7e7a6c483 100644 --- a/bizui/src/bizcomponents/goodsshelf/GoodsShelf.createform.js +++ b/bizui/src/bizcomponents/goodsshelf/GoodsShelf.createform.js @@ -18,9 +18,9 @@ const testValues = {}; /* const testValues = { location: '成都龙泉驿飞鹤路20号存货区货架', - storageSpaceId: 'SS000001', - supplierSpaceId: 'SS000001', - damageSpaceId: 'DS000001', + storageSpaceId: 'SS00000001', + supplierSpaceId: 'SS00000001', + damageSpaceId: 'DS00000001', } */ diff --git a/bizui/src/bizcomponents/goodsshelf/GoodsShelf.dashboard.js b/bizui/src/bizcomponents/goodsshelf/GoodsShelf.dashboard.js index 083b141c5..4f8f2a0da 100644 --- a/bizui/src/bizcomponents/goodsshelf/GoodsShelf.dashboard.js +++ b/bizui/src/bizcomponents/goodsshelf/GoodsShelf.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(goodsShelf)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (goodsShelf) =>defaultSettingListOf(goodsShelf, optionList) const internalLargeTextOf = (goodsShelf) =>{ @@ -142,8 +142,8 @@ class GoodsShelfDashboard extends Component { const cardsData = {cardsName:"货架",cardsFor: "goodsShelf", cardsSource: this.props.goodsShelf,returnURL,displayName, subItems: [ -{name: 'goodsShelfStockCountList', displayName:'货架库存盘点',type:'goodsShelfStockCount',count:goodsShelfStockCountCount,addFunction: true, role: 'goodsShelfStockCount', metaInfo: goodsShelfStockCountListMetaInfo}, -{name: 'goodsAllocationList', displayName:'货位',type:'goodsAllocation',count:goodsAllocationCount,addFunction: true, role: 'goodsAllocation', metaInfo: goodsAllocationListMetaInfo}, +{name: 'goodsShelfStockCountList', displayName:'货架库存盘点',type:'goodsShelfStockCount',count:goodsShelfStockCountCount,addFunction: true, role: 'goodsShelfStockCount', metaInfo: goodsShelfStockCountListMetaInfo, renderItem: GlobalComponents.GoodsShelfStockCountBase.renderItemOfList}, +{name: 'goodsAllocationList', displayName:'货位',type:'goodsAllocation',count:goodsAllocationCount,addFunction: true, role: 'goodsAllocation', metaInfo: goodsAllocationListMetaInfo, renderItem: GlobalComponents.GoodsAllocationBase.renderItemOfList}, ], }; @@ -158,6 +158,8 @@ class GoodsShelfDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/goodsshelf/GoodsShelf.permission.js b/bizui/src/bizcomponents/goodsshelf/GoodsShelf.permission.js index c671b5867..e6acccd7d 100644 --- a/bizui/src/bizcomponents/goodsshelf/GoodsShelf.permission.js +++ b/bizui/src/bizcomponents/goodsshelf/GoodsShelf.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './GoodsShelf.preference.less' +import styles from './GoodsShelf.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/goodsshelf/GoodsShelf.preference.js b/bizui/src/bizcomponents/goodsshelf/GoodsShelf.preference.js deleted file mode 100644 index cc9364438..000000000 --- a/bizui/src/bizcomponents/goodsshelf/GoodsShelf.preference.js +++ /dev/null @@ -1,368 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './GoodsShelf.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (goodsShelf) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (goodsShelf) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (goodsShelf) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {GoodsShelfService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = GoodsShelfService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (goodsShelf,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=goodsShelf.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_goodsShelf/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (goodsShelf,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(goodsShelf,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (goodsShelf) =>{ - return null -} -const internalRenderExtraFooter = (goodsShelf) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (goodsShelf,targetComponent) =>{ - const userContext = null - return ( - -{goodsShelf.id} -{goodsShelf.location} -{goodsShelf.storageSpace==null?appLocaleName(userContext,"NotAssigned"):goodsShelf.storageSpace.displayName} - - showTransferModel(targetComponent,"存货区","storageSpace","requestCandidateStorageSpace", - "transferToAnotherStorageSpace","anotherStorageSpaceId",goodsShelf.storageSpace?goodsShelf.storageSpace.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{goodsShelf.supplierSpace==null?appLocaleName(userContext,"NotAssigned"):goodsShelf.supplierSpace.displayName} - - showTransferModel(targetComponent,"供应商的空间","supplierSpace","requestCandidateSupplierSpace", - "transferToAnotherSupplierSpace","anotherSupplierSpaceId",goodsShelf.supplierSpace?goodsShelf.supplierSpace.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{goodsShelf.damageSpace==null?appLocaleName(userContext,"NotAssigned"):goodsShelf.damageSpace.displayName} - - showTransferModel(targetComponent,"残次货物存放区","damageSpace","requestCandidateDamageSpace", - "transferToAnotherDamageSpace","anotherDamageSpaceId",goodsShelf.damageSpace?goodsShelf.damageSpace.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{ moment(goodsShelf.lastUpdateTime).format('YYYY-MM-DD')} - - {buildTransferModal(goodsShelf,targetComponent)} - - ) - -} - - -const renderPermissionSetting = goodsShelf => { - const {GoodsShelfBase} = GlobalComponents - return - - -} - - -class GoodsShelfPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const goodsShelf = this.props.goodsShelf; - const { id,displayName, goodsShelfStockCountCount, goodsAllocationCount } = goodsShelf - - - - const cardsData = {cardsName:"货架",cardsFor: "goodsShelf",cardsSource: goodsShelf, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - goodsShelf: state._goodsShelf, -}))(Form.create()(GoodsShelfPreference)) - diff --git a/bizui/src/bizcomponents/goodsshelf/GoodsShelf.preference.less b/bizui/src/bizcomponents/goodsshelf/GoodsShelf.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/goodsshelf/GoodsShelf.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/goodsshelf/GoodsShelf.profile.js b/bizui/src/bizcomponents/goodsshelf/GoodsShelf.profile.js index aff0eb8b1..998fe10eb 100644 --- a/bizui/src/bizcomponents/goodsshelf/GoodsShelf.profile.js +++ b/bizui/src/bizcomponents/goodsshelf/GoodsShelf.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './GoodsShelf.preference.less' +import styles from './GoodsShelf.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,17 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (goodsShelf,targetComponent) =>{ - const userContext = null - return ( - -{goodsShelf.id} -{goodsShelf.location} -{ moment(goodsShelf.lastUpdateTime).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.GoodsShelfBase.renderItemOfList(item, targetComponents) + } @@ -64,13 +58,14 @@ class GoodsShelfProfile extends Component { const cardsData = {cardsName:"货架",cardsFor: "goodsShelf",cardsSource: goodsShelf, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -80,7 +75,7 @@ class GoodsShelfProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.associateform.js b/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.associateform.js index 0b5cb7fa9..9633f2241 100644 --- a/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.associateform.js +++ b/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.associateform.js @@ -19,9 +19,9 @@ const testValues = {}; /* const testValues = { title: '每日盘点', - countTime: '2018-08-09', + countTime: '2016-07-11', summary: '使用先进的rfid技术,没有任何错误', - shelfId: 'GS000001', + shelfId: 'GS00000001', } */ diff --git a/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.base.js b/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.base.js index d83863099..2562b4df1 100644 --- a/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.base.js +++ b/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -54,27 +55,27 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({goodsShelfStockCount,targetComponent})=>{ +const renderItemOfList=(goodsShelfStockCount,targetComponent)=>{ - const {GoodsShelfStockCountService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {goodsShelfStockCount.id} {goodsShelfStockCount.title} { moment(goodsShelfStockCount.countTime).format('YYYY-MM-DD')} {goodsShelfStockCount.summary} {goodsShelfStockCount.shelf==null?appLocaleName(userContext,"NotAssigned"):`${goodsShelfStockCount.shelf.displayName}(${goodsShelfStockCount.shelf.id})`} - - showTransferModel(targetComponent,"架","goodsShelf",GoodsShelfStockCountService.requestCandidateShelf, - GoodsShelfStockCountService.transferToAnotherShelf,"anotherShelfId",goodsShelfStockCount.shelf?goodsShelfStockCount.shelf.id:"")} - style={{fontSize: 20,color:"red"}} /> - {buildTransferModal(goodsShelfStockCount,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.createform.js b/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.createform.js index 6c92cad6b..b63dd7d1c 100644 --- a/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.createform.js +++ b/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.createform.js @@ -18,9 +18,9 @@ const testValues = {}; /* const testValues = { title: '每日盘点', - countTime: '2016-06-06', + countTime: '2017-12-02', summary: '使用先进的rfid技术,没有任何错误', - shelfId: 'GS000001', + shelfId: 'GS00000001', } */ diff --git a/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.dashboard.js b/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.dashboard.js index 6977d9d18..275171f17 100644 --- a/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.dashboard.js +++ b/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(goodsShelfStockCount)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (goodsShelfStockCount) =>defaultSettingListOf(goodsShelfStockCount, optionList) const internalLargeTextOf = (goodsShelfStockCount) =>{ @@ -131,7 +131,7 @@ class GoodsShelfStockCountDashboard extends Component { const cardsData = {cardsName:"货架库存盘点",cardsFor: "goodsShelfStockCount", cardsSource: this.props.goodsShelfStockCount,returnURL,displayName, subItems: [ -{name: 'stockCountIssueTrackList', displayName:'库存计数问题跟踪',type:'stockCountIssueTrack',count:stockCountIssueTrackCount,addFunction: true, role: 'stockCountIssueTrack', metaInfo: stockCountIssueTrackListMetaInfo}, +{name: 'stockCountIssueTrackList', displayName:'库存计数问题跟踪',type:'stockCountIssueTrack',count:stockCountIssueTrackCount,addFunction: true, role: 'stockCountIssueTrack', metaInfo: stockCountIssueTrackListMetaInfo, renderItem: GlobalComponents.StockCountIssueTrackBase.renderItemOfList}, ], }; @@ -146,6 +146,8 @@ class GoodsShelfStockCountDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.permission.js b/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.permission.js index 7ba6f34d4..fd0169770 100644 --- a/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.permission.js +++ b/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './GoodsShelfStockCount.preference.less' +import styles from './GoodsShelfStockCount.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.preference.js b/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.preference.js deleted file mode 100644 index 467096e60..000000000 --- a/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.preference.js +++ /dev/null @@ -1,357 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './GoodsShelfStockCount.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (goodsShelfStockCount) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (goodsShelfStockCount) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (goodsShelfStockCount) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {GoodsShelfStockCountService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = GoodsShelfStockCountService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (goodsShelfStockCount,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=goodsShelfStockCount.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_goodsShelfStockCount/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (goodsShelfStockCount,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(goodsShelfStockCount,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (goodsShelfStockCount) =>{ - return null -} -const internalRenderExtraFooter = (goodsShelfStockCount) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (goodsShelfStockCount,targetComponent) =>{ - const userContext = null - return ( - -{goodsShelfStockCount.id} -{goodsShelfStockCount.title} -{ moment(goodsShelfStockCount.countTime).format('YYYY-MM-DD')} -{goodsShelfStockCount.summary} -{goodsShelfStockCount.shelf==null?appLocaleName(userContext,"NotAssigned"):goodsShelfStockCount.shelf.displayName} - - showTransferModel(targetComponent,"架","goodsShelf","requestCandidateShelf", - "transferToAnotherShelf","anotherShelfId",goodsShelfStockCount.shelf?goodsShelfStockCount.shelf.id:"")} - style={{fontSize: 20,color:"red"}} /> - - - {buildTransferModal(goodsShelfStockCount,targetComponent)} - - ) - -} - - -const renderPermissionSetting = goodsShelfStockCount => { - const {GoodsShelfStockCountBase} = GlobalComponents - return - - -} - - -class GoodsShelfStockCountPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const goodsShelfStockCount = this.props.goodsShelfStockCount; - const { id,displayName, stockCountIssueTrackCount } = goodsShelfStockCount - - - - const cardsData = {cardsName:"货架库存盘点",cardsFor: "goodsShelfStockCount",cardsSource: goodsShelfStockCount, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - goodsShelfStockCount: state._goodsShelfStockCount, -}))(Form.create()(GoodsShelfStockCountPreference)) - diff --git a/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.preference.less b/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.profile.js b/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.profile.js index dbe155daa..e21419481 100644 --- a/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.profile.js +++ b/bizui/src/bizcomponents/goodsshelfstockcount/GoodsShelfStockCount.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './GoodsShelfStockCount.preference.less' +import styles from './GoodsShelfStockCount.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,18 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (goodsShelfStockCount,targetComponent) =>{ - const userContext = null - return ( - -{goodsShelfStockCount.id} -{goodsShelfStockCount.title} -{ moment(goodsShelfStockCount.countTime).format('YYYY-MM-DD')} -{goodsShelfStockCount.summary} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.GoodsShelfStockCountBase.renderItemOfList(item, targetComponents) + } @@ -65,13 +58,14 @@ class GoodsShelfStockCountProfile extends Component { const cardsData = {cardsName:"货架库存盘点",cardsFor: "goodsShelfStockCount",cardsSource: goodsShelfStockCount, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -81,7 +75,7 @@ class GoodsShelfStockCountProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.associateform.js b/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.associateform.js index 0068a63a2..166084c97 100644 --- a/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.associateform.js +++ b/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.associateform.js @@ -22,7 +22,7 @@ const testValues = { supplyProduct: '洗护用品', contactNumber: '18677889999', description: '啤酒饮料矿泉水,香肠瓜子方便面都提供', - belongToId: 'RSCC000001', + belongToId: 'RSCC00000001', } */ diff --git a/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.base.js b/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.base.js index 495948cf3..798a04e88 100644 --- a/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.base.js +++ b/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -60,14 +61,16 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({goodsSupplier,targetComponent})=>{ +const renderItemOfList=(goodsSupplier,targetComponent)=>{ - const {GoodsSupplierService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {goodsSupplier.id} {goodsSupplier.name} {goodsSupplier.supplyProduct} @@ -75,8 +78,10 @@ const renderItemOfList=({goodsSupplier,targetComponent})=>{ {goodsSupplier.description} { moment(goodsSupplier.lastUpdateTime).format('YYYY-MM-DD')} - {buildTransferModal(goodsSupplier,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.createform.js b/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.createform.js index 63b1a9417..c33714592 100644 --- a/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.createform.js +++ b/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.createform.js @@ -21,7 +21,7 @@ const testValues = { supplyProduct: '洗护用品', contactNumber: '18677889999', description: '啤酒饮料矿泉水,香肠瓜子方便面都提供', - belongToId: 'RSCC000001', + belongToId: 'RSCC00000001', } */ diff --git a/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.dashboard.js b/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.dashboard.js index 4d11640f4..6c4bbe485 100644 --- a/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.dashboard.js +++ b/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(goodsSupplier)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (goodsSupplier) =>defaultSettingListOf(goodsSupplier, optionList) const internalLargeTextOf = (goodsSupplier) =>{ @@ -127,9 +127,9 @@ class GoodsSupplierDashboard extends Component { const cardsData = {cardsName:"产品供应商",cardsFor: "goodsSupplier", cardsSource: this.props.goodsSupplier,returnURL,displayName, subItems: [ -{name: 'supplierProductList', displayName:'供应商的产品',type:'supplierProduct',count:supplierProductCount,addFunction: true, role: 'supplierProduct', metaInfo: supplierProductListMetaInfo}, -{name: 'supplyOrderList', displayName:'供应订单',type:'supplyOrder',count:supplyOrderCount,addFunction: true, role: 'supplyOrder', metaInfo: supplyOrderListMetaInfo}, -{name: 'accountSetList', displayName:'账套',type:'accountSet',count:accountSetCount,addFunction: true, role: 'accountSet', metaInfo: accountSetListMetaInfo}, +{name: 'supplierProductList', displayName:'供应商的产品',type:'supplierProduct',count:supplierProductCount,addFunction: true, role: 'supplierProduct', metaInfo: supplierProductListMetaInfo, renderItem: GlobalComponents.SupplierProductBase.renderItemOfList}, +{name: 'supplyOrderList', displayName:'供应订单',type:'supplyOrder',count:supplyOrderCount,addFunction: true, role: 'supplyOrder', metaInfo: supplyOrderListMetaInfo, renderItem: GlobalComponents.SupplyOrderBase.renderItemOfList}, +{name: 'accountSetList', displayName:'账套',type:'accountSet',count:accountSetCount,addFunction: true, role: 'accountSet', metaInfo: accountSetListMetaInfo, renderItem: GlobalComponents.AccountSetBase.renderItemOfList}, ], }; @@ -144,6 +144,8 @@ class GoodsSupplierDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.permission.js b/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.permission.js index 5d71a0d44..7214c1f67 100644 --- a/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.permission.js +++ b/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './GoodsSupplier.preference.less' +import styles from './GoodsSupplier.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.preference.js b/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.preference.js deleted file mode 100644 index 1b0b415c9..000000000 --- a/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.preference.js +++ /dev/null @@ -1,353 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './GoodsSupplier.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (goodsSupplier) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (goodsSupplier) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (goodsSupplier) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {GoodsSupplierService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = GoodsSupplierService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (goodsSupplier,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=goodsSupplier.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_goodsSupplier/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (goodsSupplier,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(goodsSupplier,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (goodsSupplier) =>{ - return null -} -const internalRenderExtraFooter = (goodsSupplier) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (goodsSupplier,targetComponent) =>{ - const userContext = null - return ( - -{goodsSupplier.id} -{goodsSupplier.name} -{goodsSupplier.supplyProduct} -{goodsSupplier.contactNumber} -{goodsSupplier.description} -{ moment(goodsSupplier.lastUpdateTime).format('YYYY-MM-DD')} - - {buildTransferModal(goodsSupplier,targetComponent)} - - ) - -} - - -const renderPermissionSetting = goodsSupplier => { - const {GoodsSupplierBase} = GlobalComponents - return - - -} - - -class GoodsSupplierPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const goodsSupplier = this.props.goodsSupplier; - const { id,displayName, supplierProductCount, supplyOrderCount, accountSetCount } = goodsSupplier - - - - const cardsData = {cardsName:"产品供应商",cardsFor: "goodsSupplier",cardsSource: goodsSupplier, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - goodsSupplier: state._goodsSupplier, -}))(Form.create()(GoodsSupplierPreference)) - diff --git a/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.preference.less b/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.profile.js b/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.profile.js index fb9d32311..82652b658 100644 --- a/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.profile.js +++ b/bizui/src/bizcomponents/goodssupplier/GoodsSupplier.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './GoodsSupplier.preference.less' +import styles from './GoodsSupplier.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,20 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (goodsSupplier,targetComponent) =>{ - const userContext = null - return ( - -{goodsSupplier.id} -{goodsSupplier.name} -{goodsSupplier.supplyProduct} -{goodsSupplier.contactNumber} -{goodsSupplier.description} -{ moment(goodsSupplier.lastUpdateTime).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.GoodsSupplierBase.renderItemOfList(item, targetComponents) + } @@ -67,13 +58,14 @@ class GoodsSupplierProfile extends Component { const cardsData = {cardsName:"产品供应商",cardsFor: "goodsSupplier",cardsSource: goodsSupplier, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -83,7 +75,7 @@ class GoodsSupplierProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/hrinterview/HrInterview.associateform.js b/bizui/src/bizcomponents/hrinterview/HrInterview.associateform.js index 28817c24c..69f5c2c90 100644 --- a/bizui/src/bizcomponents/hrinterview/HrInterview.associateform.js +++ b/bizui/src/bizcomponents/hrinterview/HrInterview.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { who: '人力资源部', - interviewTime: '2017-07-11', + interviewTime: '2017-04-17', comments: '软技能,责任感,气质不错啊', } */ diff --git a/bizui/src/bizcomponents/hrinterview/HrInterview.base.js b/bizui/src/bizcomponents/hrinterview/HrInterview.base.js index bc6a008fd..1787389d6 100644 --- a/bizui/src/bizcomponents/hrinterview/HrInterview.base.js +++ b/bizui/src/bizcomponents/hrinterview/HrInterview.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -52,21 +53,25 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({hrInterview,targetComponent})=>{ +const renderItemOfList=(hrInterview,targetComponent)=>{ - const {HrInterviewService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {hrInterview.id} {hrInterview.who} { moment(hrInterview.interviewTime).format('YYYY-MM-DD')} {hrInterview.comments} - {buildTransferModal(hrInterview,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/hrinterview/HrInterview.createform.js b/bizui/src/bizcomponents/hrinterview/HrInterview.createform.js index 420ae5d29..869c79617 100644 --- a/bizui/src/bizcomponents/hrinterview/HrInterview.createform.js +++ b/bizui/src/bizcomponents/hrinterview/HrInterview.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { who: '人力资源部', - interviewTime: '2018-06-30', + interviewTime: '2017-09-09', comments: '软技能,责任感,气质不错啊', } */ diff --git a/bizui/src/bizcomponents/hrinterview/HrInterview.dashboard.js b/bizui/src/bizcomponents/hrinterview/HrInterview.dashboard.js index 760e5cb05..b35ae44b4 100644 --- a/bizui/src/bizcomponents/hrinterview/HrInterview.dashboard.js +++ b/bizui/src/bizcomponents/hrinterview/HrInterview.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(hrInterview)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (hrInterview) =>defaultSettingListOf(hrInterview, optionList) const internalLargeTextOf = (hrInterview) =>{ @@ -125,7 +125,7 @@ class HrInterviewDashboard extends Component { const cardsData = {cardsName:"人力资源部面试",cardsFor: "hrInterview", cardsSource: this.props.hrInterview,returnURL,displayName, subItems: [ -{name: 'employeeList', displayName:'员工',type:'employee',count:employeeCount,addFunction: true, role: 'employee', metaInfo: employeeListMetaInfo}, +{name: 'employeeList', displayName:'员工',type:'employee',count:employeeCount,addFunction: true, role: 'employee', metaInfo: employeeListMetaInfo, renderItem: GlobalComponents.EmployeeBase.renderItemOfList}, ], }; @@ -140,6 +140,8 @@ class HrInterviewDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/hrinterview/HrInterview.permission.js b/bizui/src/bizcomponents/hrinterview/HrInterview.permission.js index 7603539d7..fe5ea45a2 100644 --- a/bizui/src/bizcomponents/hrinterview/HrInterview.permission.js +++ b/bizui/src/bizcomponents/hrinterview/HrInterview.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './HrInterview.preference.less' +import styles from './HrInterview.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/hrinterview/HrInterview.preference.js b/bizui/src/bizcomponents/hrinterview/HrInterview.preference.js deleted file mode 100644 index d07ff666b..000000000 --- a/bizui/src/bizcomponents/hrinterview/HrInterview.preference.js +++ /dev/null @@ -1,351 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './HrInterview.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (hrInterview) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (hrInterview) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (hrInterview) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {HrInterviewService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = HrInterviewService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (hrInterview,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=hrInterview.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_hrInterview/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (hrInterview,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(hrInterview,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (hrInterview) =>{ - return null -} -const internalRenderExtraFooter = (hrInterview) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (hrInterview,targetComponent) =>{ - const userContext = null - return ( - -{hrInterview.id} -{hrInterview.who} -{ moment(hrInterview.interviewTime).format('YYYY-MM-DD')} -{hrInterview.comments} - - {buildTransferModal(hrInterview,targetComponent)} - - ) - -} - - -const renderPermissionSetting = hrInterview => { - const {HrInterviewBase} = GlobalComponents - return - - -} - - -class HrInterviewPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const hrInterview = this.props.hrInterview; - const { id,displayName, employeeCount } = hrInterview - - - - const cardsData = {cardsName:"人力资源部面试",cardsFor: "hrInterview",cardsSource: hrInterview, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - hrInterview: state._hrInterview, -}))(Form.create()(HrInterviewPreference)) - diff --git a/bizui/src/bizcomponents/hrinterview/HrInterview.preference.less b/bizui/src/bizcomponents/hrinterview/HrInterview.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/hrinterview/HrInterview.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/hrinterview/HrInterview.profile.js b/bizui/src/bizcomponents/hrinterview/HrInterview.profile.js index 41002ddc9..8aa611632 100644 --- a/bizui/src/bizcomponents/hrinterview/HrInterview.profile.js +++ b/bizui/src/bizcomponents/hrinterview/HrInterview.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './HrInterview.preference.less' +import styles from './HrInterview.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,18 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (hrInterview,targetComponent) =>{ - const userContext = null - return ( - -{hrInterview.id} -{hrInterview.who} -{ moment(hrInterview.interviewTime).format('YYYY-MM-DD')} -{hrInterview.comments} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.HrInterviewBase.renderItemOfList(item, targetComponents) + } @@ -65,13 +58,14 @@ class HrInterviewProfile extends Component { const cardsData = {cardsName:"人力资源部面试",cardsFor: "hrInterview",cardsSource: hrInterview, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -81,7 +75,7 @@ class HrInterviewProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/index.js b/bizui/src/bizcomponents/index.js index 9504c89e0..d77b453d9 100644 --- a/bizui/src/bizcomponents/index.js +++ b/bizui/src/bizcomponents/index.js @@ -6,7 +6,6 @@ import RetailStoreCountryCenterBase from './retailstorecountrycenter/RetailStore import RetailStoreCountryCenterBizApp from './retailstorecountrycenter/RetailStoreCountryCenter.app'; import RetailStoreCountryCenterModel from './retailstorecountrycenter/RetailStoreCountryCenter.model'; import RetailStoreCountryCenterDashboard from './retailstorecountrycenter/RetailStoreCountryCenter.dashboard'; -import RetailStoreCountryCenterPreference from './retailstorecountrycenter/RetailStoreCountryCenter.preference'; import RetailStoreCountryCenterModalTable from './retailstorecountrycenter/RetailStoreCountryCenter.modaltable'; import RetailStoreCountryCenterSearch from './retailstorecountrycenter/RetailStoreCountryCenter.search'; import RetailStoreCountryCenterSearchForm from './retailstorecountrycenter/RetailStoreCountryCenter.searchform'; @@ -21,7 +20,6 @@ import CatalogBase from './catalog/Catalog.base'; import CatalogBizApp from './catalog/Catalog.app'; import CatalogModel from './catalog/Catalog.model'; import CatalogDashboard from './catalog/Catalog.dashboard'; -import CatalogPreference from './catalog/Catalog.preference'; import CatalogModalTable from './catalog/Catalog.modaltable'; import CatalogSearch from './catalog/Catalog.search'; import CatalogSearchForm from './catalog/Catalog.searchform'; @@ -36,7 +34,6 @@ import LevelOneCategoryBase from './levelonecategory/LevelOneCategory.base'; import LevelOneCategoryBizApp from './levelonecategory/LevelOneCategory.app'; import LevelOneCategoryModel from './levelonecategory/LevelOneCategory.model'; import LevelOneCategoryDashboard from './levelonecategory/LevelOneCategory.dashboard'; -import LevelOneCategoryPreference from './levelonecategory/LevelOneCategory.preference'; import LevelOneCategoryModalTable from './levelonecategory/LevelOneCategory.modaltable'; import LevelOneCategorySearch from './levelonecategory/LevelOneCategory.search'; import LevelOneCategorySearchForm from './levelonecategory/LevelOneCategory.searchform'; @@ -51,7 +48,6 @@ import LevelTwoCategoryBase from './leveltwocategory/LevelTwoCategory.base'; import LevelTwoCategoryBizApp from './leveltwocategory/LevelTwoCategory.app'; import LevelTwoCategoryModel from './leveltwocategory/LevelTwoCategory.model'; import LevelTwoCategoryDashboard from './leveltwocategory/LevelTwoCategory.dashboard'; -import LevelTwoCategoryPreference from './leveltwocategory/LevelTwoCategory.preference'; import LevelTwoCategoryModalTable from './leveltwocategory/LevelTwoCategory.modaltable'; import LevelTwoCategorySearch from './leveltwocategory/LevelTwoCategory.search'; import LevelTwoCategorySearchForm from './leveltwocategory/LevelTwoCategory.searchform'; @@ -66,7 +62,6 @@ import LevelThreeCategoryBase from './levelthreecategory/LevelThreeCategory.base import LevelThreeCategoryBizApp from './levelthreecategory/LevelThreeCategory.app'; import LevelThreeCategoryModel from './levelthreecategory/LevelThreeCategory.model'; import LevelThreeCategoryDashboard from './levelthreecategory/LevelThreeCategory.dashboard'; -import LevelThreeCategoryPreference from './levelthreecategory/LevelThreeCategory.preference'; import LevelThreeCategoryModalTable from './levelthreecategory/LevelThreeCategory.modaltable'; import LevelThreeCategorySearch from './levelthreecategory/LevelThreeCategory.search'; import LevelThreeCategorySearchForm from './levelthreecategory/LevelThreeCategory.searchform'; @@ -81,7 +76,6 @@ import ProductBase from './product/Product.base'; import ProductBizApp from './product/Product.app'; import ProductModel from './product/Product.model'; import ProductDashboard from './product/Product.dashboard'; -import ProductPreference from './product/Product.preference'; import ProductModalTable from './product/Product.modaltable'; import ProductSearch from './product/Product.search'; import ProductSearchForm from './product/Product.searchform'; @@ -96,7 +90,6 @@ import SkuBase from './sku/Sku.base'; import SkuBizApp from './sku/Sku.app'; import SkuModel from './sku/Sku.model'; import SkuDashboard from './sku/Sku.dashboard'; -import SkuPreference from './sku/Sku.preference'; import SkuModalTable from './sku/Sku.modaltable'; import SkuSearch from './sku/Sku.search'; import SkuSearchForm from './sku/Sku.searchform'; @@ -111,7 +104,6 @@ import RetailStoreProvinceCenterBase from './retailstoreprovincecenter/RetailSto import RetailStoreProvinceCenterBizApp from './retailstoreprovincecenter/RetailStoreProvinceCenter.app'; import RetailStoreProvinceCenterModel from './retailstoreprovincecenter/RetailStoreProvinceCenter.model'; import RetailStoreProvinceCenterDashboard from './retailstoreprovincecenter/RetailStoreProvinceCenter.dashboard'; -import RetailStoreProvinceCenterPreference from './retailstoreprovincecenter/RetailStoreProvinceCenter.preference'; import RetailStoreProvinceCenterModalTable from './retailstoreprovincecenter/RetailStoreProvinceCenter.modaltable'; import RetailStoreProvinceCenterSearch from './retailstoreprovincecenter/RetailStoreProvinceCenter.search'; import RetailStoreProvinceCenterSearchForm from './retailstoreprovincecenter/RetailStoreProvinceCenter.searchform'; @@ -126,7 +118,6 @@ import ProvinceCenterDepartmentBase from './provincecenterdepartment/ProvinceCen import ProvinceCenterDepartmentBizApp from './provincecenterdepartment/ProvinceCenterDepartment.app'; import ProvinceCenterDepartmentModel from './provincecenterdepartment/ProvinceCenterDepartment.model'; import ProvinceCenterDepartmentDashboard from './provincecenterdepartment/ProvinceCenterDepartment.dashboard'; -import ProvinceCenterDepartmentPreference from './provincecenterdepartment/ProvinceCenterDepartment.preference'; import ProvinceCenterDepartmentModalTable from './provincecenterdepartment/ProvinceCenterDepartment.modaltable'; import ProvinceCenterDepartmentSearch from './provincecenterdepartment/ProvinceCenterDepartment.search'; import ProvinceCenterDepartmentSearchForm from './provincecenterdepartment/ProvinceCenterDepartment.searchform'; @@ -141,7 +132,6 @@ import ProvinceCenterEmployeeBase from './provincecenteremployee/ProvinceCenterE import ProvinceCenterEmployeeBizApp from './provincecenteremployee/ProvinceCenterEmployee.app'; import ProvinceCenterEmployeeModel from './provincecenteremployee/ProvinceCenterEmployee.model'; import ProvinceCenterEmployeeDashboard from './provincecenteremployee/ProvinceCenterEmployee.dashboard'; -import ProvinceCenterEmployeePreference from './provincecenteremployee/ProvinceCenterEmployee.preference'; import ProvinceCenterEmployeeModalTable from './provincecenteremployee/ProvinceCenterEmployee.modaltable'; import ProvinceCenterEmployeeSearch from './provincecenteremployee/ProvinceCenterEmployee.search'; import ProvinceCenterEmployeeSearchForm from './provincecenteremployee/ProvinceCenterEmployee.searchform'; @@ -156,7 +146,6 @@ import RetailStoreCityServiceCenterBase from './retailstorecityservicecenter/Ret import RetailStoreCityServiceCenterBizApp from './retailstorecityservicecenter/RetailStoreCityServiceCenter.app'; import RetailStoreCityServiceCenterModel from './retailstorecityservicecenter/RetailStoreCityServiceCenter.model'; import RetailStoreCityServiceCenterDashboard from './retailstorecityservicecenter/RetailStoreCityServiceCenter.dashboard'; -import RetailStoreCityServiceCenterPreference from './retailstorecityservicecenter/RetailStoreCityServiceCenter.preference'; import RetailStoreCityServiceCenterModalTable from './retailstorecityservicecenter/RetailStoreCityServiceCenter.modaltable'; import RetailStoreCityServiceCenterSearch from './retailstorecityservicecenter/RetailStoreCityServiceCenter.search'; import RetailStoreCityServiceCenterSearchForm from './retailstorecityservicecenter/RetailStoreCityServiceCenter.searchform'; @@ -171,7 +160,6 @@ import CityPartnerBase from './citypartner/CityPartner.base'; import CityPartnerBizApp from './citypartner/CityPartner.app'; import CityPartnerModel from './citypartner/CityPartner.model'; import CityPartnerDashboard from './citypartner/CityPartner.dashboard'; -import CityPartnerPreference from './citypartner/CityPartner.preference'; import CityPartnerModalTable from './citypartner/CityPartner.modaltable'; import CityPartnerSearch from './citypartner/CityPartner.search'; import CityPartnerSearchForm from './citypartner/CityPartner.searchform'; @@ -186,7 +174,6 @@ import PotentialCustomerBase from './potentialcustomer/PotentialCustomer.base'; import PotentialCustomerBizApp from './potentialcustomer/PotentialCustomer.app'; import PotentialCustomerModel from './potentialcustomer/PotentialCustomer.model'; import PotentialCustomerDashboard from './potentialcustomer/PotentialCustomer.dashboard'; -import PotentialCustomerPreference from './potentialcustomer/PotentialCustomer.preference'; import PotentialCustomerModalTable from './potentialcustomer/PotentialCustomer.modaltable'; import PotentialCustomerSearch from './potentialcustomer/PotentialCustomer.search'; import PotentialCustomerSearchForm from './potentialcustomer/PotentialCustomer.searchform'; @@ -201,7 +188,6 @@ import PotentialCustomerContactPersonBase from './potentialcustomercontactperson import PotentialCustomerContactPersonBizApp from './potentialcustomercontactperson/PotentialCustomerContactPerson.app'; import PotentialCustomerContactPersonModel from './potentialcustomercontactperson/PotentialCustomerContactPerson.model'; import PotentialCustomerContactPersonDashboard from './potentialcustomercontactperson/PotentialCustomerContactPerson.dashboard'; -import PotentialCustomerContactPersonPreference from './potentialcustomercontactperson/PotentialCustomerContactPerson.preference'; import PotentialCustomerContactPersonModalTable from './potentialcustomercontactperson/PotentialCustomerContactPerson.modaltable'; import PotentialCustomerContactPersonSearch from './potentialcustomercontactperson/PotentialCustomerContactPerson.search'; import PotentialCustomerContactPersonSearchForm from './potentialcustomercontactperson/PotentialCustomerContactPerson.searchform'; @@ -216,7 +202,6 @@ import PotentialCustomerContactBase from './potentialcustomercontact/PotentialCu import PotentialCustomerContactBizApp from './potentialcustomercontact/PotentialCustomerContact.app'; import PotentialCustomerContactModel from './potentialcustomercontact/PotentialCustomerContact.model'; import PotentialCustomerContactDashboard from './potentialcustomercontact/PotentialCustomerContact.dashboard'; -import PotentialCustomerContactPreference from './potentialcustomercontact/PotentialCustomerContact.preference'; import PotentialCustomerContactModalTable from './potentialcustomercontact/PotentialCustomerContact.modaltable'; import PotentialCustomerContactSearch from './potentialcustomercontact/PotentialCustomerContact.search'; import PotentialCustomerContactSearchForm from './potentialcustomercontact/PotentialCustomerContact.searchform'; @@ -231,7 +216,6 @@ import CityEventBase from './cityevent/CityEvent.base'; import CityEventBizApp from './cityevent/CityEvent.app'; import CityEventModel from './cityevent/CityEvent.model'; import CityEventDashboard from './cityevent/CityEvent.dashboard'; -import CityEventPreference from './cityevent/CityEvent.preference'; import CityEventModalTable from './cityevent/CityEvent.modaltable'; import CityEventSearch from './cityevent/CityEvent.search'; import CityEventSearchForm from './cityevent/CityEvent.searchform'; @@ -246,7 +230,6 @@ import EventAttendanceBase from './eventattendance/EventAttendance.base'; import EventAttendanceBizApp from './eventattendance/EventAttendance.app'; import EventAttendanceModel from './eventattendance/EventAttendance.model'; import EventAttendanceDashboard from './eventattendance/EventAttendance.dashboard'; -import EventAttendancePreference from './eventattendance/EventAttendance.preference'; import EventAttendanceModalTable from './eventattendance/EventAttendance.modaltable'; import EventAttendanceSearch from './eventattendance/EventAttendance.search'; import EventAttendanceSearchForm from './eventattendance/EventAttendance.searchform'; @@ -261,7 +244,6 @@ import RetailStoreBase from './retailstore/RetailStore.base'; import RetailStoreBizApp from './retailstore/RetailStore.app'; import RetailStoreModel from './retailstore/RetailStore.model'; import RetailStoreDashboard from './retailstore/RetailStore.dashboard'; -import RetailStorePreference from './retailstore/RetailStore.preference'; import RetailStoreModalTable from './retailstore/RetailStore.modaltable'; import RetailStoreSearch from './retailstore/RetailStore.search'; import RetailStoreSearchForm from './retailstore/RetailStore.searchform'; @@ -276,7 +258,6 @@ import RetailStoreCreationBase from './retailstorecreation/RetailStoreCreation.b import RetailStoreCreationBizApp from './retailstorecreation/RetailStoreCreation.app'; import RetailStoreCreationModel from './retailstorecreation/RetailStoreCreation.model'; import RetailStoreCreationDashboard from './retailstorecreation/RetailStoreCreation.dashboard'; -import RetailStoreCreationPreference from './retailstorecreation/RetailStoreCreation.preference'; import RetailStoreCreationModalTable from './retailstorecreation/RetailStoreCreation.modaltable'; import RetailStoreCreationSearch from './retailstorecreation/RetailStoreCreation.search'; import RetailStoreCreationSearchForm from './retailstorecreation/RetailStoreCreation.searchform'; @@ -291,7 +272,6 @@ import RetailStoreInvestmentInvitationBase from './retailstoreinvestmentinvitati import RetailStoreInvestmentInvitationBizApp from './retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.app'; import RetailStoreInvestmentInvitationModel from './retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.model'; import RetailStoreInvestmentInvitationDashboard from './retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.dashboard'; -import RetailStoreInvestmentInvitationPreference from './retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.preference'; import RetailStoreInvestmentInvitationModalTable from './retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.modaltable'; import RetailStoreInvestmentInvitationSearch from './retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.search'; import RetailStoreInvestmentInvitationSearchForm from './retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.searchform'; @@ -306,7 +286,6 @@ import RetailStoreFranchisingBase from './retailstorefranchising/RetailStoreFran import RetailStoreFranchisingBizApp from './retailstorefranchising/RetailStoreFranchising.app'; import RetailStoreFranchisingModel from './retailstorefranchising/RetailStoreFranchising.model'; import RetailStoreFranchisingDashboard from './retailstorefranchising/RetailStoreFranchising.dashboard'; -import RetailStoreFranchisingPreference from './retailstorefranchising/RetailStoreFranchising.preference'; import RetailStoreFranchisingModalTable from './retailstorefranchising/RetailStoreFranchising.modaltable'; import RetailStoreFranchisingSearch from './retailstorefranchising/RetailStoreFranchising.search'; import RetailStoreFranchisingSearchForm from './retailstorefranchising/RetailStoreFranchising.searchform'; @@ -321,7 +300,6 @@ import RetailStoreDecorationBase from './retailstoredecoration/RetailStoreDecora import RetailStoreDecorationBizApp from './retailstoredecoration/RetailStoreDecoration.app'; import RetailStoreDecorationModel from './retailstoredecoration/RetailStoreDecoration.model'; import RetailStoreDecorationDashboard from './retailstoredecoration/RetailStoreDecoration.dashboard'; -import RetailStoreDecorationPreference from './retailstoredecoration/RetailStoreDecoration.preference'; import RetailStoreDecorationModalTable from './retailstoredecoration/RetailStoreDecoration.modaltable'; import RetailStoreDecorationSearch from './retailstoredecoration/RetailStoreDecoration.search'; import RetailStoreDecorationSearchForm from './retailstoredecoration/RetailStoreDecoration.searchform'; @@ -336,7 +314,6 @@ import RetailStoreOpeningBase from './retailstoreopening/RetailStoreOpening.base import RetailStoreOpeningBizApp from './retailstoreopening/RetailStoreOpening.app'; import RetailStoreOpeningModel from './retailstoreopening/RetailStoreOpening.model'; import RetailStoreOpeningDashboard from './retailstoreopening/RetailStoreOpening.dashboard'; -import RetailStoreOpeningPreference from './retailstoreopening/RetailStoreOpening.preference'; import RetailStoreOpeningModalTable from './retailstoreopening/RetailStoreOpening.modaltable'; import RetailStoreOpeningSearch from './retailstoreopening/RetailStoreOpening.search'; import RetailStoreOpeningSearchForm from './retailstoreopening/RetailStoreOpening.searchform'; @@ -351,7 +328,6 @@ import RetailStoreClosingBase from './retailstoreclosing/RetailStoreClosing.base import RetailStoreClosingBizApp from './retailstoreclosing/RetailStoreClosing.app'; import RetailStoreClosingModel from './retailstoreclosing/RetailStoreClosing.model'; import RetailStoreClosingDashboard from './retailstoreclosing/RetailStoreClosing.dashboard'; -import RetailStoreClosingPreference from './retailstoreclosing/RetailStoreClosing.preference'; import RetailStoreClosingModalTable from './retailstoreclosing/RetailStoreClosing.modaltable'; import RetailStoreClosingSearch from './retailstoreclosing/RetailStoreClosing.search'; import RetailStoreClosingSearchForm from './retailstoreclosing/RetailStoreClosing.searchform'; @@ -366,7 +342,6 @@ import RetailStoreMemberBase from './retailstoremember/RetailStoreMember.base'; import RetailStoreMemberBizApp from './retailstoremember/RetailStoreMember.app'; import RetailStoreMemberModel from './retailstoremember/RetailStoreMember.model'; import RetailStoreMemberDashboard from './retailstoremember/RetailStoreMember.dashboard'; -import RetailStoreMemberPreference from './retailstoremember/RetailStoreMember.preference'; import RetailStoreMemberModalTable from './retailstoremember/RetailStoreMember.modaltable'; import RetailStoreMemberSearch from './retailstoremember/RetailStoreMember.search'; import RetailStoreMemberSearchForm from './retailstoremember/RetailStoreMember.searchform'; @@ -381,7 +356,6 @@ import ConsumerOrderBase from './consumerorder/ConsumerOrder.base'; import ConsumerOrderBizApp from './consumerorder/ConsumerOrder.app'; import ConsumerOrderModel from './consumerorder/ConsumerOrder.model'; import ConsumerOrderDashboard from './consumerorder/ConsumerOrder.dashboard'; -import ConsumerOrderPreference from './consumerorder/ConsumerOrder.preference'; import ConsumerOrderModalTable from './consumerorder/ConsumerOrder.modaltable'; import ConsumerOrderSearch from './consumerorder/ConsumerOrder.search'; import ConsumerOrderSearchForm from './consumerorder/ConsumerOrder.searchform'; @@ -396,7 +370,6 @@ import ConsumerOrderConfirmationBase from './consumerorderconfirmation/ConsumerO import ConsumerOrderConfirmationBizApp from './consumerorderconfirmation/ConsumerOrderConfirmation.app'; import ConsumerOrderConfirmationModel from './consumerorderconfirmation/ConsumerOrderConfirmation.model'; import ConsumerOrderConfirmationDashboard from './consumerorderconfirmation/ConsumerOrderConfirmation.dashboard'; -import ConsumerOrderConfirmationPreference from './consumerorderconfirmation/ConsumerOrderConfirmation.preference'; import ConsumerOrderConfirmationModalTable from './consumerorderconfirmation/ConsumerOrderConfirmation.modaltable'; import ConsumerOrderConfirmationSearch from './consumerorderconfirmation/ConsumerOrderConfirmation.search'; import ConsumerOrderConfirmationSearchForm from './consumerorderconfirmation/ConsumerOrderConfirmation.searchform'; @@ -411,7 +384,6 @@ import ConsumerOrderApprovalBase from './consumerorderapproval/ConsumerOrderAppr import ConsumerOrderApprovalBizApp from './consumerorderapproval/ConsumerOrderApproval.app'; import ConsumerOrderApprovalModel from './consumerorderapproval/ConsumerOrderApproval.model'; import ConsumerOrderApprovalDashboard from './consumerorderapproval/ConsumerOrderApproval.dashboard'; -import ConsumerOrderApprovalPreference from './consumerorderapproval/ConsumerOrderApproval.preference'; import ConsumerOrderApprovalModalTable from './consumerorderapproval/ConsumerOrderApproval.modaltable'; import ConsumerOrderApprovalSearch from './consumerorderapproval/ConsumerOrderApproval.search'; import ConsumerOrderApprovalSearchForm from './consumerorderapproval/ConsumerOrderApproval.searchform'; @@ -426,7 +398,6 @@ import ConsumerOrderProcessingBase from './consumerorderprocessing/ConsumerOrder import ConsumerOrderProcessingBizApp from './consumerorderprocessing/ConsumerOrderProcessing.app'; import ConsumerOrderProcessingModel from './consumerorderprocessing/ConsumerOrderProcessing.model'; import ConsumerOrderProcessingDashboard from './consumerorderprocessing/ConsumerOrderProcessing.dashboard'; -import ConsumerOrderProcessingPreference from './consumerorderprocessing/ConsumerOrderProcessing.preference'; import ConsumerOrderProcessingModalTable from './consumerorderprocessing/ConsumerOrderProcessing.modaltable'; import ConsumerOrderProcessingSearch from './consumerorderprocessing/ConsumerOrderProcessing.search'; import ConsumerOrderProcessingSearchForm from './consumerorderprocessing/ConsumerOrderProcessing.searchform'; @@ -441,7 +412,6 @@ import ConsumerOrderShipmentBase from './consumerordershipment/ConsumerOrderShip import ConsumerOrderShipmentBizApp from './consumerordershipment/ConsumerOrderShipment.app'; import ConsumerOrderShipmentModel from './consumerordershipment/ConsumerOrderShipment.model'; import ConsumerOrderShipmentDashboard from './consumerordershipment/ConsumerOrderShipment.dashboard'; -import ConsumerOrderShipmentPreference from './consumerordershipment/ConsumerOrderShipment.preference'; import ConsumerOrderShipmentModalTable from './consumerordershipment/ConsumerOrderShipment.modaltable'; import ConsumerOrderShipmentSearch from './consumerordershipment/ConsumerOrderShipment.search'; import ConsumerOrderShipmentSearchForm from './consumerordershipment/ConsumerOrderShipment.searchform'; @@ -456,7 +426,6 @@ import ConsumerOrderDeliveryBase from './consumerorderdelivery/ConsumerOrderDeli import ConsumerOrderDeliveryBizApp from './consumerorderdelivery/ConsumerOrderDelivery.app'; import ConsumerOrderDeliveryModel from './consumerorderdelivery/ConsumerOrderDelivery.model'; import ConsumerOrderDeliveryDashboard from './consumerorderdelivery/ConsumerOrderDelivery.dashboard'; -import ConsumerOrderDeliveryPreference from './consumerorderdelivery/ConsumerOrderDelivery.preference'; import ConsumerOrderDeliveryModalTable from './consumerorderdelivery/ConsumerOrderDelivery.modaltable'; import ConsumerOrderDeliverySearch from './consumerorderdelivery/ConsumerOrderDelivery.search'; import ConsumerOrderDeliverySearchForm from './consumerorderdelivery/ConsumerOrderDelivery.searchform'; @@ -471,7 +440,6 @@ import ConsumerOrderLineItemBase from './consumerorderlineitem/ConsumerOrderLine import ConsumerOrderLineItemBizApp from './consumerorderlineitem/ConsumerOrderLineItem.app'; import ConsumerOrderLineItemModel from './consumerorderlineitem/ConsumerOrderLineItem.model'; import ConsumerOrderLineItemDashboard from './consumerorderlineitem/ConsumerOrderLineItem.dashboard'; -import ConsumerOrderLineItemPreference from './consumerorderlineitem/ConsumerOrderLineItem.preference'; import ConsumerOrderLineItemModalTable from './consumerorderlineitem/ConsumerOrderLineItem.modaltable'; import ConsumerOrderLineItemSearch from './consumerorderlineitem/ConsumerOrderLineItem.search'; import ConsumerOrderLineItemSearchForm from './consumerorderlineitem/ConsumerOrderLineItem.searchform'; @@ -486,7 +454,6 @@ import ConsumerOrderShippingGroupBase from './consumerordershippinggroup/Consume import ConsumerOrderShippingGroupBizApp from './consumerordershippinggroup/ConsumerOrderShippingGroup.app'; import ConsumerOrderShippingGroupModel from './consumerordershippinggroup/ConsumerOrderShippingGroup.model'; import ConsumerOrderShippingGroupDashboard from './consumerordershippinggroup/ConsumerOrderShippingGroup.dashboard'; -import ConsumerOrderShippingGroupPreference from './consumerordershippinggroup/ConsumerOrderShippingGroup.preference'; import ConsumerOrderShippingGroupModalTable from './consumerordershippinggroup/ConsumerOrderShippingGroup.modaltable'; import ConsumerOrderShippingGroupSearch from './consumerordershippinggroup/ConsumerOrderShippingGroup.search'; import ConsumerOrderShippingGroupSearchForm from './consumerordershippinggroup/ConsumerOrderShippingGroup.searchform'; @@ -501,7 +468,6 @@ import ConsumerOrderPaymentGroupBase from './consumerorderpaymentgroup/ConsumerO import ConsumerOrderPaymentGroupBizApp from './consumerorderpaymentgroup/ConsumerOrderPaymentGroup.app'; import ConsumerOrderPaymentGroupModel from './consumerorderpaymentgroup/ConsumerOrderPaymentGroup.model'; import ConsumerOrderPaymentGroupDashboard from './consumerorderpaymentgroup/ConsumerOrderPaymentGroup.dashboard'; -import ConsumerOrderPaymentGroupPreference from './consumerorderpaymentgroup/ConsumerOrderPaymentGroup.preference'; import ConsumerOrderPaymentGroupModalTable from './consumerorderpaymentgroup/ConsumerOrderPaymentGroup.modaltable'; import ConsumerOrderPaymentGroupSearch from './consumerorderpaymentgroup/ConsumerOrderPaymentGroup.search'; import ConsumerOrderPaymentGroupSearchForm from './consumerorderpaymentgroup/ConsumerOrderPaymentGroup.searchform'; @@ -516,7 +482,6 @@ import ConsumerOrderPriceAdjustmentBase from './consumerorderpriceadjustment/Con import ConsumerOrderPriceAdjustmentBizApp from './consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.app'; import ConsumerOrderPriceAdjustmentModel from './consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.model'; import ConsumerOrderPriceAdjustmentDashboard from './consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.dashboard'; -import ConsumerOrderPriceAdjustmentPreference from './consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.preference'; import ConsumerOrderPriceAdjustmentModalTable from './consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.modaltable'; import ConsumerOrderPriceAdjustmentSearch from './consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.search'; import ConsumerOrderPriceAdjustmentSearchForm from './consumerorderpriceadjustment/ConsumerOrderPriceAdjustment.searchform'; @@ -531,7 +496,6 @@ import RetailStoreMemberCouponBase from './retailstoremembercoupon/RetailStoreMe import RetailStoreMemberCouponBizApp from './retailstoremembercoupon/RetailStoreMemberCoupon.app'; import RetailStoreMemberCouponModel from './retailstoremembercoupon/RetailStoreMemberCoupon.model'; import RetailStoreMemberCouponDashboard from './retailstoremembercoupon/RetailStoreMemberCoupon.dashboard'; -import RetailStoreMemberCouponPreference from './retailstoremembercoupon/RetailStoreMemberCoupon.preference'; import RetailStoreMemberCouponModalTable from './retailstoremembercoupon/RetailStoreMemberCoupon.modaltable'; import RetailStoreMemberCouponSearch from './retailstoremembercoupon/RetailStoreMemberCoupon.search'; import RetailStoreMemberCouponSearchForm from './retailstoremembercoupon/RetailStoreMemberCoupon.searchform'; @@ -546,7 +510,6 @@ import MemberWishlistBase from './memberwishlist/MemberWishlist.base'; import MemberWishlistBizApp from './memberwishlist/MemberWishlist.app'; import MemberWishlistModel from './memberwishlist/MemberWishlist.model'; import MemberWishlistDashboard from './memberwishlist/MemberWishlist.dashboard'; -import MemberWishlistPreference from './memberwishlist/MemberWishlist.preference'; import MemberWishlistModalTable from './memberwishlist/MemberWishlist.modaltable'; import MemberWishlistSearch from './memberwishlist/MemberWishlist.search'; import MemberWishlistSearchForm from './memberwishlist/MemberWishlist.searchform'; @@ -561,7 +524,6 @@ import MemberRewardPointBase from './memberrewardpoint/MemberRewardPoint.base'; import MemberRewardPointBizApp from './memberrewardpoint/MemberRewardPoint.app'; import MemberRewardPointModel from './memberrewardpoint/MemberRewardPoint.model'; import MemberRewardPointDashboard from './memberrewardpoint/MemberRewardPoint.dashboard'; -import MemberRewardPointPreference from './memberrewardpoint/MemberRewardPoint.preference'; import MemberRewardPointModalTable from './memberrewardpoint/MemberRewardPoint.modaltable'; import MemberRewardPointSearch from './memberrewardpoint/MemberRewardPoint.search'; import MemberRewardPointSearchForm from './memberrewardpoint/MemberRewardPoint.searchform'; @@ -576,7 +538,6 @@ import MemberRewardPointRedemptionBase from './memberrewardpointredemption/Membe import MemberRewardPointRedemptionBizApp from './memberrewardpointredemption/MemberRewardPointRedemption.app'; import MemberRewardPointRedemptionModel from './memberrewardpointredemption/MemberRewardPointRedemption.model'; import MemberRewardPointRedemptionDashboard from './memberrewardpointredemption/MemberRewardPointRedemption.dashboard'; -import MemberRewardPointRedemptionPreference from './memberrewardpointredemption/MemberRewardPointRedemption.preference'; import MemberRewardPointRedemptionModalTable from './memberrewardpointredemption/MemberRewardPointRedemption.modaltable'; import MemberRewardPointRedemptionSearch from './memberrewardpointredemption/MemberRewardPointRedemption.search'; import MemberRewardPointRedemptionSearchForm from './memberrewardpointredemption/MemberRewardPointRedemption.searchform'; @@ -591,7 +552,6 @@ import MemberWishlistProductBase from './memberwishlistproduct/MemberWishlistPro import MemberWishlistProductBizApp from './memberwishlistproduct/MemberWishlistProduct.app'; import MemberWishlistProductModel from './memberwishlistproduct/MemberWishlistProduct.model'; import MemberWishlistProductDashboard from './memberwishlistproduct/MemberWishlistProduct.dashboard'; -import MemberWishlistProductPreference from './memberwishlistproduct/MemberWishlistProduct.preference'; import MemberWishlistProductModalTable from './memberwishlistproduct/MemberWishlistProduct.modaltable'; import MemberWishlistProductSearch from './memberwishlistproduct/MemberWishlistProduct.search'; import MemberWishlistProductSearchForm from './memberwishlistproduct/MemberWishlistProduct.searchform'; @@ -606,7 +566,6 @@ import RetailStoreMemberAddressBase from './retailstorememberaddress/RetailStore import RetailStoreMemberAddressBizApp from './retailstorememberaddress/RetailStoreMemberAddress.app'; import RetailStoreMemberAddressModel from './retailstorememberaddress/RetailStoreMemberAddress.model'; import RetailStoreMemberAddressDashboard from './retailstorememberaddress/RetailStoreMemberAddress.dashboard'; -import RetailStoreMemberAddressPreference from './retailstorememberaddress/RetailStoreMemberAddress.preference'; import RetailStoreMemberAddressModalTable from './retailstorememberaddress/RetailStoreMemberAddress.modaltable'; import RetailStoreMemberAddressSearch from './retailstorememberaddress/RetailStoreMemberAddress.search'; import RetailStoreMemberAddressSearchForm from './retailstorememberaddress/RetailStoreMemberAddress.searchform'; @@ -621,7 +580,6 @@ import RetailStoreMemberGiftCardBase from './retailstoremembergiftcard/RetailSto import RetailStoreMemberGiftCardBizApp from './retailstoremembergiftcard/RetailStoreMemberGiftCard.app'; import RetailStoreMemberGiftCardModel from './retailstoremembergiftcard/RetailStoreMemberGiftCard.model'; import RetailStoreMemberGiftCardDashboard from './retailstoremembergiftcard/RetailStoreMemberGiftCard.dashboard'; -import RetailStoreMemberGiftCardPreference from './retailstoremembergiftcard/RetailStoreMemberGiftCard.preference'; import RetailStoreMemberGiftCardModalTable from './retailstoremembergiftcard/RetailStoreMemberGiftCard.modaltable'; import RetailStoreMemberGiftCardSearch from './retailstoremembergiftcard/RetailStoreMemberGiftCard.search'; import RetailStoreMemberGiftCardSearchForm from './retailstoremembergiftcard/RetailStoreMemberGiftCard.searchform'; @@ -636,7 +594,6 @@ import RetailStoreMemberGiftCardConsumeRecordBase from './retailstoremembergiftc import RetailStoreMemberGiftCardConsumeRecordBizApp from './retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.app'; import RetailStoreMemberGiftCardConsumeRecordModel from './retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.model'; import RetailStoreMemberGiftCardConsumeRecordDashboard from './retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.dashboard'; -import RetailStoreMemberGiftCardConsumeRecordPreference from './retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.preference'; import RetailStoreMemberGiftCardConsumeRecordModalTable from './retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.modaltable'; import RetailStoreMemberGiftCardConsumeRecordSearch from './retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.search'; import RetailStoreMemberGiftCardConsumeRecordSearchForm from './retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.searchform'; @@ -651,7 +608,6 @@ import GoodsSupplierBase from './goodssupplier/GoodsSupplier.base'; import GoodsSupplierBizApp from './goodssupplier/GoodsSupplier.app'; import GoodsSupplierModel from './goodssupplier/GoodsSupplier.model'; import GoodsSupplierDashboard from './goodssupplier/GoodsSupplier.dashboard'; -import GoodsSupplierPreference from './goodssupplier/GoodsSupplier.preference'; import GoodsSupplierModalTable from './goodssupplier/GoodsSupplier.modaltable'; import GoodsSupplierSearch from './goodssupplier/GoodsSupplier.search'; import GoodsSupplierSearchForm from './goodssupplier/GoodsSupplier.searchform'; @@ -666,7 +622,6 @@ import SupplierProductBase from './supplierproduct/SupplierProduct.base'; import SupplierProductBizApp from './supplierproduct/SupplierProduct.app'; import SupplierProductModel from './supplierproduct/SupplierProduct.model'; import SupplierProductDashboard from './supplierproduct/SupplierProduct.dashboard'; -import SupplierProductPreference from './supplierproduct/SupplierProduct.preference'; import SupplierProductModalTable from './supplierproduct/SupplierProduct.modaltable'; import SupplierProductSearch from './supplierproduct/SupplierProduct.search'; import SupplierProductSearchForm from './supplierproduct/SupplierProduct.searchform'; @@ -681,7 +636,6 @@ import ProductSupplyDurationBase from './productsupplyduration/ProductSupplyDura import ProductSupplyDurationBizApp from './productsupplyduration/ProductSupplyDuration.app'; import ProductSupplyDurationModel from './productsupplyduration/ProductSupplyDuration.model'; import ProductSupplyDurationDashboard from './productsupplyduration/ProductSupplyDuration.dashboard'; -import ProductSupplyDurationPreference from './productsupplyduration/ProductSupplyDuration.preference'; import ProductSupplyDurationModalTable from './productsupplyduration/ProductSupplyDuration.modaltable'; import ProductSupplyDurationSearch from './productsupplyduration/ProductSupplyDuration.search'; import ProductSupplyDurationSearchForm from './productsupplyduration/ProductSupplyDuration.searchform'; @@ -696,7 +650,6 @@ import SupplyOrderBase from './supplyorder/SupplyOrder.base'; import SupplyOrderBizApp from './supplyorder/SupplyOrder.app'; import SupplyOrderModel from './supplyorder/SupplyOrder.model'; import SupplyOrderDashboard from './supplyorder/SupplyOrder.dashboard'; -import SupplyOrderPreference from './supplyorder/SupplyOrder.preference'; import SupplyOrderModalTable from './supplyorder/SupplyOrder.modaltable'; import SupplyOrderSearch from './supplyorder/SupplyOrder.search'; import SupplyOrderSearchForm from './supplyorder/SupplyOrder.searchform'; @@ -711,7 +664,6 @@ import SupplyOrderConfirmationBase from './supplyorderconfirmation/SupplyOrderCo import SupplyOrderConfirmationBizApp from './supplyorderconfirmation/SupplyOrderConfirmation.app'; import SupplyOrderConfirmationModel from './supplyorderconfirmation/SupplyOrderConfirmation.model'; import SupplyOrderConfirmationDashboard from './supplyorderconfirmation/SupplyOrderConfirmation.dashboard'; -import SupplyOrderConfirmationPreference from './supplyorderconfirmation/SupplyOrderConfirmation.preference'; import SupplyOrderConfirmationModalTable from './supplyorderconfirmation/SupplyOrderConfirmation.modaltable'; import SupplyOrderConfirmationSearch from './supplyorderconfirmation/SupplyOrderConfirmation.search'; import SupplyOrderConfirmationSearchForm from './supplyorderconfirmation/SupplyOrderConfirmation.searchform'; @@ -726,7 +678,6 @@ import SupplyOrderApprovalBase from './supplyorderapproval/SupplyOrderApproval.b import SupplyOrderApprovalBizApp from './supplyorderapproval/SupplyOrderApproval.app'; import SupplyOrderApprovalModel from './supplyorderapproval/SupplyOrderApproval.model'; import SupplyOrderApprovalDashboard from './supplyorderapproval/SupplyOrderApproval.dashboard'; -import SupplyOrderApprovalPreference from './supplyorderapproval/SupplyOrderApproval.preference'; import SupplyOrderApprovalModalTable from './supplyorderapproval/SupplyOrderApproval.modaltable'; import SupplyOrderApprovalSearch from './supplyorderapproval/SupplyOrderApproval.search'; import SupplyOrderApprovalSearchForm from './supplyorderapproval/SupplyOrderApproval.searchform'; @@ -741,7 +692,6 @@ import SupplyOrderProcessingBase from './supplyorderprocessing/SupplyOrderProces import SupplyOrderProcessingBizApp from './supplyorderprocessing/SupplyOrderProcessing.app'; import SupplyOrderProcessingModel from './supplyorderprocessing/SupplyOrderProcessing.model'; import SupplyOrderProcessingDashboard from './supplyorderprocessing/SupplyOrderProcessing.dashboard'; -import SupplyOrderProcessingPreference from './supplyorderprocessing/SupplyOrderProcessing.preference'; import SupplyOrderProcessingModalTable from './supplyorderprocessing/SupplyOrderProcessing.modaltable'; import SupplyOrderProcessingSearch from './supplyorderprocessing/SupplyOrderProcessing.search'; import SupplyOrderProcessingSearchForm from './supplyorderprocessing/SupplyOrderProcessing.searchform'; @@ -756,7 +706,6 @@ import SupplyOrderPickingBase from './supplyorderpicking/SupplyOrderPicking.base import SupplyOrderPickingBizApp from './supplyorderpicking/SupplyOrderPicking.app'; import SupplyOrderPickingModel from './supplyorderpicking/SupplyOrderPicking.model'; import SupplyOrderPickingDashboard from './supplyorderpicking/SupplyOrderPicking.dashboard'; -import SupplyOrderPickingPreference from './supplyorderpicking/SupplyOrderPicking.preference'; import SupplyOrderPickingModalTable from './supplyorderpicking/SupplyOrderPicking.modaltable'; import SupplyOrderPickingSearch from './supplyorderpicking/SupplyOrderPicking.search'; import SupplyOrderPickingSearchForm from './supplyorderpicking/SupplyOrderPicking.searchform'; @@ -771,7 +720,6 @@ import SupplyOrderShipmentBase from './supplyordershipment/SupplyOrderShipment.b import SupplyOrderShipmentBizApp from './supplyordershipment/SupplyOrderShipment.app'; import SupplyOrderShipmentModel from './supplyordershipment/SupplyOrderShipment.model'; import SupplyOrderShipmentDashboard from './supplyordershipment/SupplyOrderShipment.dashboard'; -import SupplyOrderShipmentPreference from './supplyordershipment/SupplyOrderShipment.preference'; import SupplyOrderShipmentModalTable from './supplyordershipment/SupplyOrderShipment.modaltable'; import SupplyOrderShipmentSearch from './supplyordershipment/SupplyOrderShipment.search'; import SupplyOrderShipmentSearchForm from './supplyordershipment/SupplyOrderShipment.searchform'; @@ -786,7 +734,6 @@ import SupplyOrderDeliveryBase from './supplyorderdelivery/SupplyOrderDelivery.b import SupplyOrderDeliveryBizApp from './supplyorderdelivery/SupplyOrderDelivery.app'; import SupplyOrderDeliveryModel from './supplyorderdelivery/SupplyOrderDelivery.model'; import SupplyOrderDeliveryDashboard from './supplyorderdelivery/SupplyOrderDelivery.dashboard'; -import SupplyOrderDeliveryPreference from './supplyorderdelivery/SupplyOrderDelivery.preference'; import SupplyOrderDeliveryModalTable from './supplyorderdelivery/SupplyOrderDelivery.modaltable'; import SupplyOrderDeliverySearch from './supplyorderdelivery/SupplyOrderDelivery.search'; import SupplyOrderDeliverySearchForm from './supplyorderdelivery/SupplyOrderDelivery.searchform'; @@ -801,7 +748,6 @@ import SupplyOrderLineItemBase from './supplyorderlineitem/SupplyOrderLineItem.b import SupplyOrderLineItemBizApp from './supplyorderlineitem/SupplyOrderLineItem.app'; import SupplyOrderLineItemModel from './supplyorderlineitem/SupplyOrderLineItem.model'; import SupplyOrderLineItemDashboard from './supplyorderlineitem/SupplyOrderLineItem.dashboard'; -import SupplyOrderLineItemPreference from './supplyorderlineitem/SupplyOrderLineItem.preference'; import SupplyOrderLineItemModalTable from './supplyorderlineitem/SupplyOrderLineItem.modaltable'; import SupplyOrderLineItemSearch from './supplyorderlineitem/SupplyOrderLineItem.search'; import SupplyOrderLineItemSearchForm from './supplyorderlineitem/SupplyOrderLineItem.searchform'; @@ -816,7 +762,6 @@ import SupplyOrderShippingGroupBase from './supplyordershippinggroup/SupplyOrder import SupplyOrderShippingGroupBizApp from './supplyordershippinggroup/SupplyOrderShippingGroup.app'; import SupplyOrderShippingGroupModel from './supplyordershippinggroup/SupplyOrderShippingGroup.model'; import SupplyOrderShippingGroupDashboard from './supplyordershippinggroup/SupplyOrderShippingGroup.dashboard'; -import SupplyOrderShippingGroupPreference from './supplyordershippinggroup/SupplyOrderShippingGroup.preference'; import SupplyOrderShippingGroupModalTable from './supplyordershippinggroup/SupplyOrderShippingGroup.modaltable'; import SupplyOrderShippingGroupSearch from './supplyordershippinggroup/SupplyOrderShippingGroup.search'; import SupplyOrderShippingGroupSearchForm from './supplyordershippinggroup/SupplyOrderShippingGroup.searchform'; @@ -831,7 +776,6 @@ import SupplyOrderPaymentGroupBase from './supplyorderpaymentgroup/SupplyOrderPa import SupplyOrderPaymentGroupBizApp from './supplyorderpaymentgroup/SupplyOrderPaymentGroup.app'; import SupplyOrderPaymentGroupModel from './supplyorderpaymentgroup/SupplyOrderPaymentGroup.model'; import SupplyOrderPaymentGroupDashboard from './supplyorderpaymentgroup/SupplyOrderPaymentGroup.dashboard'; -import SupplyOrderPaymentGroupPreference from './supplyorderpaymentgroup/SupplyOrderPaymentGroup.preference'; import SupplyOrderPaymentGroupModalTable from './supplyorderpaymentgroup/SupplyOrderPaymentGroup.modaltable'; import SupplyOrderPaymentGroupSearch from './supplyorderpaymentgroup/SupplyOrderPaymentGroup.search'; import SupplyOrderPaymentGroupSearchForm from './supplyorderpaymentgroup/SupplyOrderPaymentGroup.searchform'; @@ -846,7 +790,6 @@ import RetailStoreOrderBase from './retailstoreorder/RetailStoreOrder.base'; import RetailStoreOrderBizApp from './retailstoreorder/RetailStoreOrder.app'; import RetailStoreOrderModel from './retailstoreorder/RetailStoreOrder.model'; import RetailStoreOrderDashboard from './retailstoreorder/RetailStoreOrder.dashboard'; -import RetailStoreOrderPreference from './retailstoreorder/RetailStoreOrder.preference'; import RetailStoreOrderModalTable from './retailstoreorder/RetailStoreOrder.modaltable'; import RetailStoreOrderSearch from './retailstoreorder/RetailStoreOrder.search'; import RetailStoreOrderSearchForm from './retailstoreorder/RetailStoreOrder.searchform'; @@ -861,7 +804,6 @@ import RetailStoreOrderConfirmationBase from './retailstoreorderconfirmation/Ret import RetailStoreOrderConfirmationBizApp from './retailstoreorderconfirmation/RetailStoreOrderConfirmation.app'; import RetailStoreOrderConfirmationModel from './retailstoreorderconfirmation/RetailStoreOrderConfirmation.model'; import RetailStoreOrderConfirmationDashboard from './retailstoreorderconfirmation/RetailStoreOrderConfirmation.dashboard'; -import RetailStoreOrderConfirmationPreference from './retailstoreorderconfirmation/RetailStoreOrderConfirmation.preference'; import RetailStoreOrderConfirmationModalTable from './retailstoreorderconfirmation/RetailStoreOrderConfirmation.modaltable'; import RetailStoreOrderConfirmationSearch from './retailstoreorderconfirmation/RetailStoreOrderConfirmation.search'; import RetailStoreOrderConfirmationSearchForm from './retailstoreorderconfirmation/RetailStoreOrderConfirmation.searchform'; @@ -876,7 +818,6 @@ import RetailStoreOrderApprovalBase from './retailstoreorderapproval/RetailStore import RetailStoreOrderApprovalBizApp from './retailstoreorderapproval/RetailStoreOrderApproval.app'; import RetailStoreOrderApprovalModel from './retailstoreorderapproval/RetailStoreOrderApproval.model'; import RetailStoreOrderApprovalDashboard from './retailstoreorderapproval/RetailStoreOrderApproval.dashboard'; -import RetailStoreOrderApprovalPreference from './retailstoreorderapproval/RetailStoreOrderApproval.preference'; import RetailStoreOrderApprovalModalTable from './retailstoreorderapproval/RetailStoreOrderApproval.modaltable'; import RetailStoreOrderApprovalSearch from './retailstoreorderapproval/RetailStoreOrderApproval.search'; import RetailStoreOrderApprovalSearchForm from './retailstoreorderapproval/RetailStoreOrderApproval.searchform'; @@ -891,7 +832,6 @@ import RetailStoreOrderProcessingBase from './retailstoreorderprocessing/RetailS import RetailStoreOrderProcessingBizApp from './retailstoreorderprocessing/RetailStoreOrderProcessing.app'; import RetailStoreOrderProcessingModel from './retailstoreorderprocessing/RetailStoreOrderProcessing.model'; import RetailStoreOrderProcessingDashboard from './retailstoreorderprocessing/RetailStoreOrderProcessing.dashboard'; -import RetailStoreOrderProcessingPreference from './retailstoreorderprocessing/RetailStoreOrderProcessing.preference'; import RetailStoreOrderProcessingModalTable from './retailstoreorderprocessing/RetailStoreOrderProcessing.modaltable'; import RetailStoreOrderProcessingSearch from './retailstoreorderprocessing/RetailStoreOrderProcessing.search'; import RetailStoreOrderProcessingSearchForm from './retailstoreorderprocessing/RetailStoreOrderProcessing.searchform'; @@ -906,7 +846,6 @@ import RetailStoreOrderPickingBase from './retailstoreorderpicking/RetailStoreOr import RetailStoreOrderPickingBizApp from './retailstoreorderpicking/RetailStoreOrderPicking.app'; import RetailStoreOrderPickingModel from './retailstoreorderpicking/RetailStoreOrderPicking.model'; import RetailStoreOrderPickingDashboard from './retailstoreorderpicking/RetailStoreOrderPicking.dashboard'; -import RetailStoreOrderPickingPreference from './retailstoreorderpicking/RetailStoreOrderPicking.preference'; import RetailStoreOrderPickingModalTable from './retailstoreorderpicking/RetailStoreOrderPicking.modaltable'; import RetailStoreOrderPickingSearch from './retailstoreorderpicking/RetailStoreOrderPicking.search'; import RetailStoreOrderPickingSearchForm from './retailstoreorderpicking/RetailStoreOrderPicking.searchform'; @@ -921,7 +860,6 @@ import RetailStoreOrderShipmentBase from './retailstoreordershipment/RetailStore import RetailStoreOrderShipmentBizApp from './retailstoreordershipment/RetailStoreOrderShipment.app'; import RetailStoreOrderShipmentModel from './retailstoreordershipment/RetailStoreOrderShipment.model'; import RetailStoreOrderShipmentDashboard from './retailstoreordershipment/RetailStoreOrderShipment.dashboard'; -import RetailStoreOrderShipmentPreference from './retailstoreordershipment/RetailStoreOrderShipment.preference'; import RetailStoreOrderShipmentModalTable from './retailstoreordershipment/RetailStoreOrderShipment.modaltable'; import RetailStoreOrderShipmentSearch from './retailstoreordershipment/RetailStoreOrderShipment.search'; import RetailStoreOrderShipmentSearchForm from './retailstoreordershipment/RetailStoreOrderShipment.searchform'; @@ -936,7 +874,6 @@ import RetailStoreOrderDeliveryBase from './retailstoreorderdelivery/RetailStore import RetailStoreOrderDeliveryBizApp from './retailstoreorderdelivery/RetailStoreOrderDelivery.app'; import RetailStoreOrderDeliveryModel from './retailstoreorderdelivery/RetailStoreOrderDelivery.model'; import RetailStoreOrderDeliveryDashboard from './retailstoreorderdelivery/RetailStoreOrderDelivery.dashboard'; -import RetailStoreOrderDeliveryPreference from './retailstoreorderdelivery/RetailStoreOrderDelivery.preference'; import RetailStoreOrderDeliveryModalTable from './retailstoreorderdelivery/RetailStoreOrderDelivery.modaltable'; import RetailStoreOrderDeliverySearch from './retailstoreorderdelivery/RetailStoreOrderDelivery.search'; import RetailStoreOrderDeliverySearchForm from './retailstoreorderdelivery/RetailStoreOrderDelivery.searchform'; @@ -951,7 +888,6 @@ import RetailStoreOrderLineItemBase from './retailstoreorderlineitem/RetailStore import RetailStoreOrderLineItemBizApp from './retailstoreorderlineitem/RetailStoreOrderLineItem.app'; import RetailStoreOrderLineItemModel from './retailstoreorderlineitem/RetailStoreOrderLineItem.model'; import RetailStoreOrderLineItemDashboard from './retailstoreorderlineitem/RetailStoreOrderLineItem.dashboard'; -import RetailStoreOrderLineItemPreference from './retailstoreorderlineitem/RetailStoreOrderLineItem.preference'; import RetailStoreOrderLineItemModalTable from './retailstoreorderlineitem/RetailStoreOrderLineItem.modaltable'; import RetailStoreOrderLineItemSearch from './retailstoreorderlineitem/RetailStoreOrderLineItem.search'; import RetailStoreOrderLineItemSearchForm from './retailstoreorderlineitem/RetailStoreOrderLineItem.searchform'; @@ -966,7 +902,6 @@ import RetailStoreOrderShippingGroupBase from './retailstoreordershippinggroup/R import RetailStoreOrderShippingGroupBizApp from './retailstoreordershippinggroup/RetailStoreOrderShippingGroup.app'; import RetailStoreOrderShippingGroupModel from './retailstoreordershippinggroup/RetailStoreOrderShippingGroup.model'; import RetailStoreOrderShippingGroupDashboard from './retailstoreordershippinggroup/RetailStoreOrderShippingGroup.dashboard'; -import RetailStoreOrderShippingGroupPreference from './retailstoreordershippinggroup/RetailStoreOrderShippingGroup.preference'; import RetailStoreOrderShippingGroupModalTable from './retailstoreordershippinggroup/RetailStoreOrderShippingGroup.modaltable'; import RetailStoreOrderShippingGroupSearch from './retailstoreordershippinggroup/RetailStoreOrderShippingGroup.search'; import RetailStoreOrderShippingGroupSearchForm from './retailstoreordershippinggroup/RetailStoreOrderShippingGroup.searchform'; @@ -981,7 +916,6 @@ import RetailStoreOrderPaymentGroupBase from './retailstoreorderpaymentgroup/Ret import RetailStoreOrderPaymentGroupBizApp from './retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.app'; import RetailStoreOrderPaymentGroupModel from './retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.model'; import RetailStoreOrderPaymentGroupDashboard from './retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.dashboard'; -import RetailStoreOrderPaymentGroupPreference from './retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.preference'; import RetailStoreOrderPaymentGroupModalTable from './retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.modaltable'; import RetailStoreOrderPaymentGroupSearch from './retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.search'; import RetailStoreOrderPaymentGroupSearchForm from './retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.searchform'; @@ -996,7 +930,6 @@ import WarehouseBase from './warehouse/Warehouse.base'; import WarehouseBizApp from './warehouse/Warehouse.app'; import WarehouseModel from './warehouse/Warehouse.model'; import WarehouseDashboard from './warehouse/Warehouse.dashboard'; -import WarehousePreference from './warehouse/Warehouse.preference'; import WarehouseModalTable from './warehouse/Warehouse.modaltable'; import WarehouseSearch from './warehouse/Warehouse.search'; import WarehouseSearchForm from './warehouse/Warehouse.searchform'; @@ -1011,7 +944,6 @@ import StorageSpaceBase from './storagespace/StorageSpace.base'; import StorageSpaceBizApp from './storagespace/StorageSpace.app'; import StorageSpaceModel from './storagespace/StorageSpace.model'; import StorageSpaceDashboard from './storagespace/StorageSpace.dashboard'; -import StorageSpacePreference from './storagespace/StorageSpace.preference'; import StorageSpaceModalTable from './storagespace/StorageSpace.modaltable'; import StorageSpaceSearch from './storagespace/StorageSpace.search'; import StorageSpaceSearchForm from './storagespace/StorageSpace.searchform'; @@ -1026,7 +958,6 @@ import SmartPalletBase from './smartpallet/SmartPallet.base'; import SmartPalletBizApp from './smartpallet/SmartPallet.app'; import SmartPalletModel from './smartpallet/SmartPallet.model'; import SmartPalletDashboard from './smartpallet/SmartPallet.dashboard'; -import SmartPalletPreference from './smartpallet/SmartPallet.preference'; import SmartPalletModalTable from './smartpallet/SmartPallet.modaltable'; import SmartPalletSearch from './smartpallet/SmartPallet.search'; import SmartPalletSearchForm from './smartpallet/SmartPallet.searchform'; @@ -1041,7 +972,6 @@ import GoodsShelfBase from './goodsshelf/GoodsShelf.base'; import GoodsShelfBizApp from './goodsshelf/GoodsShelf.app'; import GoodsShelfModel from './goodsshelf/GoodsShelf.model'; import GoodsShelfDashboard from './goodsshelf/GoodsShelf.dashboard'; -import GoodsShelfPreference from './goodsshelf/GoodsShelf.preference'; import GoodsShelfModalTable from './goodsshelf/GoodsShelf.modaltable'; import GoodsShelfSearch from './goodsshelf/GoodsShelf.search'; import GoodsShelfSearchForm from './goodsshelf/GoodsShelf.searchform'; @@ -1056,7 +986,6 @@ import GoodsShelfStockCountBase from './goodsshelfstockcount/GoodsShelfStockCoun import GoodsShelfStockCountBizApp from './goodsshelfstockcount/GoodsShelfStockCount.app'; import GoodsShelfStockCountModel from './goodsshelfstockcount/GoodsShelfStockCount.model'; import GoodsShelfStockCountDashboard from './goodsshelfstockcount/GoodsShelfStockCount.dashboard'; -import GoodsShelfStockCountPreference from './goodsshelfstockcount/GoodsShelfStockCount.preference'; import GoodsShelfStockCountModalTable from './goodsshelfstockcount/GoodsShelfStockCount.modaltable'; import GoodsShelfStockCountSearch from './goodsshelfstockcount/GoodsShelfStockCount.search'; import GoodsShelfStockCountSearchForm from './goodsshelfstockcount/GoodsShelfStockCount.searchform'; @@ -1071,7 +1000,6 @@ import StockCountIssueTrackBase from './stockcountissuetrack/StockCountIssueTrac import StockCountIssueTrackBizApp from './stockcountissuetrack/StockCountIssueTrack.app'; import StockCountIssueTrackModel from './stockcountissuetrack/StockCountIssueTrack.model'; import StockCountIssueTrackDashboard from './stockcountissuetrack/StockCountIssueTrack.dashboard'; -import StockCountIssueTrackPreference from './stockcountissuetrack/StockCountIssueTrack.preference'; import StockCountIssueTrackModalTable from './stockcountissuetrack/StockCountIssueTrack.modaltable'; import StockCountIssueTrackSearch from './stockcountissuetrack/StockCountIssueTrack.search'; import StockCountIssueTrackSearchForm from './stockcountissuetrack/StockCountIssueTrack.searchform'; @@ -1086,7 +1014,6 @@ import GoodsAllocationBase from './goodsallocation/GoodsAllocation.base'; import GoodsAllocationBizApp from './goodsallocation/GoodsAllocation.app'; import GoodsAllocationModel from './goodsallocation/GoodsAllocation.model'; import GoodsAllocationDashboard from './goodsallocation/GoodsAllocation.dashboard'; -import GoodsAllocationPreference from './goodsallocation/GoodsAllocation.preference'; import GoodsAllocationModalTable from './goodsallocation/GoodsAllocation.modaltable'; import GoodsAllocationSearch from './goodsallocation/GoodsAllocation.search'; import GoodsAllocationSearchForm from './goodsallocation/GoodsAllocation.searchform'; @@ -1101,7 +1028,6 @@ import GoodsBase from './goods/Goods.base'; import GoodsBizApp from './goods/Goods.app'; import GoodsModel from './goods/Goods.model'; import GoodsDashboard from './goods/Goods.dashboard'; -import GoodsPreference from './goods/Goods.preference'; import GoodsModalTable from './goods/Goods.modaltable'; import GoodsSearch from './goods/Goods.search'; import GoodsSearchForm from './goods/Goods.searchform'; @@ -1116,7 +1042,6 @@ import GoodsPackagingBase from './goodspackaging/GoodsPackaging.base'; import GoodsPackagingBizApp from './goodspackaging/GoodsPackaging.app'; import GoodsPackagingModel from './goodspackaging/GoodsPackaging.model'; import GoodsPackagingDashboard from './goodspackaging/GoodsPackaging.dashboard'; -import GoodsPackagingPreference from './goodspackaging/GoodsPackaging.preference'; import GoodsPackagingModalTable from './goodspackaging/GoodsPackaging.modaltable'; import GoodsPackagingSearch from './goodspackaging/GoodsPackaging.search'; import GoodsPackagingSearchForm from './goodspackaging/GoodsPackaging.searchform'; @@ -1131,7 +1056,6 @@ import GoodsMovementBase from './goodsmovement/GoodsMovement.base'; import GoodsMovementBizApp from './goodsmovement/GoodsMovement.app'; import GoodsMovementModel from './goodsmovement/GoodsMovement.model'; import GoodsMovementDashboard from './goodsmovement/GoodsMovement.dashboard'; -import GoodsMovementPreference from './goodsmovement/GoodsMovement.preference'; import GoodsMovementModalTable from './goodsmovement/GoodsMovement.modaltable'; import GoodsMovementSearch from './goodsmovement/GoodsMovement.search'; import GoodsMovementSearchForm from './goodsmovement/GoodsMovement.searchform'; @@ -1146,7 +1070,6 @@ import SupplierSpaceBase from './supplierspace/SupplierSpace.base'; import SupplierSpaceBizApp from './supplierspace/SupplierSpace.app'; import SupplierSpaceModel from './supplierspace/SupplierSpace.model'; import SupplierSpaceDashboard from './supplierspace/SupplierSpace.dashboard'; -import SupplierSpacePreference from './supplierspace/SupplierSpace.preference'; import SupplierSpaceModalTable from './supplierspace/SupplierSpace.modaltable'; import SupplierSpaceSearch from './supplierspace/SupplierSpace.search'; import SupplierSpaceSearchForm from './supplierspace/SupplierSpace.searchform'; @@ -1161,7 +1084,6 @@ import ReceivingSpaceBase from './receivingspace/ReceivingSpace.base'; import ReceivingSpaceBizApp from './receivingspace/ReceivingSpace.app'; import ReceivingSpaceModel from './receivingspace/ReceivingSpace.model'; import ReceivingSpaceDashboard from './receivingspace/ReceivingSpace.dashboard'; -import ReceivingSpacePreference from './receivingspace/ReceivingSpace.preference'; import ReceivingSpaceModalTable from './receivingspace/ReceivingSpace.modaltable'; import ReceivingSpaceSearch from './receivingspace/ReceivingSpace.search'; import ReceivingSpaceSearchForm from './receivingspace/ReceivingSpace.searchform'; @@ -1176,7 +1098,6 @@ import ShippingSpaceBase from './shippingspace/ShippingSpace.base'; import ShippingSpaceBizApp from './shippingspace/ShippingSpace.app'; import ShippingSpaceModel from './shippingspace/ShippingSpace.model'; import ShippingSpaceDashboard from './shippingspace/ShippingSpace.dashboard'; -import ShippingSpacePreference from './shippingspace/ShippingSpace.preference'; import ShippingSpaceModalTable from './shippingspace/ShippingSpace.modaltable'; import ShippingSpaceSearch from './shippingspace/ShippingSpace.search'; import ShippingSpaceSearchForm from './shippingspace/ShippingSpace.searchform'; @@ -1191,7 +1112,6 @@ import DamageSpaceBase from './damagespace/DamageSpace.base'; import DamageSpaceBizApp from './damagespace/DamageSpace.app'; import DamageSpaceModel from './damagespace/DamageSpace.model'; import DamageSpaceDashboard from './damagespace/DamageSpace.dashboard'; -import DamageSpacePreference from './damagespace/DamageSpace.preference'; import DamageSpaceModalTable from './damagespace/DamageSpace.modaltable'; import DamageSpaceSearch from './damagespace/DamageSpace.search'; import DamageSpaceSearchForm from './damagespace/DamageSpace.searchform'; @@ -1206,7 +1126,6 @@ import WarehouseAssetBase from './warehouseasset/WarehouseAsset.base'; import WarehouseAssetBizApp from './warehouseasset/WarehouseAsset.app'; import WarehouseAssetModel from './warehouseasset/WarehouseAsset.model'; import WarehouseAssetDashboard from './warehouseasset/WarehouseAsset.dashboard'; -import WarehouseAssetPreference from './warehouseasset/WarehouseAsset.preference'; import WarehouseAssetModalTable from './warehouseasset/WarehouseAsset.modaltable'; import WarehouseAssetSearch from './warehouseasset/WarehouseAsset.search'; import WarehouseAssetSearchForm from './warehouseasset/WarehouseAsset.searchform'; @@ -1221,7 +1140,6 @@ import TransportFleetBase from './transportfleet/TransportFleet.base'; import TransportFleetBizApp from './transportfleet/TransportFleet.app'; import TransportFleetModel from './transportfleet/TransportFleet.model'; import TransportFleetDashboard from './transportfleet/TransportFleet.dashboard'; -import TransportFleetPreference from './transportfleet/TransportFleet.preference'; import TransportFleetModalTable from './transportfleet/TransportFleet.modaltable'; import TransportFleetSearch from './transportfleet/TransportFleet.search'; import TransportFleetSearchForm from './transportfleet/TransportFleet.searchform'; @@ -1236,7 +1154,6 @@ import TransportTruckBase from './transporttruck/TransportTruck.base'; import TransportTruckBizApp from './transporttruck/TransportTruck.app'; import TransportTruckModel from './transporttruck/TransportTruck.model'; import TransportTruckDashboard from './transporttruck/TransportTruck.dashboard'; -import TransportTruckPreference from './transporttruck/TransportTruck.preference'; import TransportTruckModalTable from './transporttruck/TransportTruck.modaltable'; import TransportTruckSearch from './transporttruck/TransportTruck.search'; import TransportTruckSearchForm from './transporttruck/TransportTruck.searchform'; @@ -1251,7 +1168,6 @@ import TruckDriverBase from './truckdriver/TruckDriver.base'; import TruckDriverBizApp from './truckdriver/TruckDriver.app'; import TruckDriverModel from './truckdriver/TruckDriver.model'; import TruckDriverDashboard from './truckdriver/TruckDriver.dashboard'; -import TruckDriverPreference from './truckdriver/TruckDriver.preference'; import TruckDriverModalTable from './truckdriver/TruckDriver.modaltable'; import TruckDriverSearch from './truckdriver/TruckDriver.search'; import TruckDriverSearchForm from './truckdriver/TruckDriver.searchform'; @@ -1266,7 +1182,6 @@ import TransportTaskBase from './transporttask/TransportTask.base'; import TransportTaskBizApp from './transporttask/TransportTask.app'; import TransportTaskModel from './transporttask/TransportTask.model'; import TransportTaskDashboard from './transporttask/TransportTask.dashboard'; -import TransportTaskPreference from './transporttask/TransportTask.preference'; import TransportTaskModalTable from './transporttask/TransportTask.modaltable'; import TransportTaskSearch from './transporttask/TransportTask.search'; import TransportTaskSearchForm from './transporttask/TransportTask.searchform'; @@ -1281,7 +1196,6 @@ import TransportTaskTrackBase from './transporttasktrack/TransportTaskTrack.base import TransportTaskTrackBizApp from './transporttasktrack/TransportTaskTrack.app'; import TransportTaskTrackModel from './transporttasktrack/TransportTaskTrack.model'; import TransportTaskTrackDashboard from './transporttasktrack/TransportTaskTrack.dashboard'; -import TransportTaskTrackPreference from './transporttasktrack/TransportTaskTrack.preference'; import TransportTaskTrackModalTable from './transporttasktrack/TransportTaskTrack.modaltable'; import TransportTaskTrackSearch from './transporttasktrack/TransportTaskTrack.search'; import TransportTaskTrackSearchForm from './transporttasktrack/TransportTaskTrack.searchform'; @@ -1296,7 +1210,6 @@ import AccountSetBase from './accountset/AccountSet.base'; import AccountSetBizApp from './accountset/AccountSet.app'; import AccountSetModel from './accountset/AccountSet.model'; import AccountSetDashboard from './accountset/AccountSet.dashboard'; -import AccountSetPreference from './accountset/AccountSet.preference'; import AccountSetModalTable from './accountset/AccountSet.modaltable'; import AccountSetSearch from './accountset/AccountSet.search'; import AccountSetSearchForm from './accountset/AccountSet.searchform'; @@ -1311,7 +1224,6 @@ import AccountingSubjectBase from './accountingsubject/AccountingSubject.base'; import AccountingSubjectBizApp from './accountingsubject/AccountingSubject.app'; import AccountingSubjectModel from './accountingsubject/AccountingSubject.model'; import AccountingSubjectDashboard from './accountingsubject/AccountingSubject.dashboard'; -import AccountingSubjectPreference from './accountingsubject/AccountingSubject.preference'; import AccountingSubjectModalTable from './accountingsubject/AccountingSubject.modaltable'; import AccountingSubjectSearch from './accountingsubject/AccountingSubject.search'; import AccountingSubjectSearchForm from './accountingsubject/AccountingSubject.searchform'; @@ -1326,7 +1238,6 @@ import AccountingPeriodBase from './accountingperiod/AccountingPeriod.base'; import AccountingPeriodBizApp from './accountingperiod/AccountingPeriod.app'; import AccountingPeriodModel from './accountingperiod/AccountingPeriod.model'; import AccountingPeriodDashboard from './accountingperiod/AccountingPeriod.dashboard'; -import AccountingPeriodPreference from './accountingperiod/AccountingPeriod.preference'; import AccountingPeriodModalTable from './accountingperiod/AccountingPeriod.modaltable'; import AccountingPeriodSearch from './accountingperiod/AccountingPeriod.search'; import AccountingPeriodSearchForm from './accountingperiod/AccountingPeriod.searchform'; @@ -1341,7 +1252,6 @@ import AccountingDocumentTypeBase from './accountingdocumenttype/AccountingDocum import AccountingDocumentTypeBizApp from './accountingdocumenttype/AccountingDocumentType.app'; import AccountingDocumentTypeModel from './accountingdocumenttype/AccountingDocumentType.model'; import AccountingDocumentTypeDashboard from './accountingdocumenttype/AccountingDocumentType.dashboard'; -import AccountingDocumentTypePreference from './accountingdocumenttype/AccountingDocumentType.preference'; import AccountingDocumentTypeModalTable from './accountingdocumenttype/AccountingDocumentType.modaltable'; import AccountingDocumentTypeSearch from './accountingdocumenttype/AccountingDocumentType.search'; import AccountingDocumentTypeSearchForm from './accountingdocumenttype/AccountingDocumentType.searchform'; @@ -1356,7 +1266,6 @@ import AccountingDocumentBase from './accountingdocument/AccountingDocument.base import AccountingDocumentBizApp from './accountingdocument/AccountingDocument.app'; import AccountingDocumentModel from './accountingdocument/AccountingDocument.model'; import AccountingDocumentDashboard from './accountingdocument/AccountingDocument.dashboard'; -import AccountingDocumentPreference from './accountingdocument/AccountingDocument.preference'; import AccountingDocumentModalTable from './accountingdocument/AccountingDocument.modaltable'; import AccountingDocumentSearch from './accountingdocument/AccountingDocument.search'; import AccountingDocumentSearchForm from './accountingdocument/AccountingDocument.searchform'; @@ -1371,7 +1280,6 @@ import AccountingDocumentCreationBase from './accountingdocumentcreation/Account import AccountingDocumentCreationBizApp from './accountingdocumentcreation/AccountingDocumentCreation.app'; import AccountingDocumentCreationModel from './accountingdocumentcreation/AccountingDocumentCreation.model'; import AccountingDocumentCreationDashboard from './accountingdocumentcreation/AccountingDocumentCreation.dashboard'; -import AccountingDocumentCreationPreference from './accountingdocumentcreation/AccountingDocumentCreation.preference'; import AccountingDocumentCreationModalTable from './accountingdocumentcreation/AccountingDocumentCreation.modaltable'; import AccountingDocumentCreationSearch from './accountingdocumentcreation/AccountingDocumentCreation.search'; import AccountingDocumentCreationSearchForm from './accountingdocumentcreation/AccountingDocumentCreation.searchform'; @@ -1386,7 +1294,6 @@ import AccountingDocumentConfirmationBase from './accountingdocumentconfirmation import AccountingDocumentConfirmationBizApp from './accountingdocumentconfirmation/AccountingDocumentConfirmation.app'; import AccountingDocumentConfirmationModel from './accountingdocumentconfirmation/AccountingDocumentConfirmation.model'; import AccountingDocumentConfirmationDashboard from './accountingdocumentconfirmation/AccountingDocumentConfirmation.dashboard'; -import AccountingDocumentConfirmationPreference from './accountingdocumentconfirmation/AccountingDocumentConfirmation.preference'; import AccountingDocumentConfirmationModalTable from './accountingdocumentconfirmation/AccountingDocumentConfirmation.modaltable'; import AccountingDocumentConfirmationSearch from './accountingdocumentconfirmation/AccountingDocumentConfirmation.search'; import AccountingDocumentConfirmationSearchForm from './accountingdocumentconfirmation/AccountingDocumentConfirmation.searchform'; @@ -1401,7 +1308,6 @@ import AccountingDocumentAuditingBase from './accountingdocumentauditing/Account import AccountingDocumentAuditingBizApp from './accountingdocumentauditing/AccountingDocumentAuditing.app'; import AccountingDocumentAuditingModel from './accountingdocumentauditing/AccountingDocumentAuditing.model'; import AccountingDocumentAuditingDashboard from './accountingdocumentauditing/AccountingDocumentAuditing.dashboard'; -import AccountingDocumentAuditingPreference from './accountingdocumentauditing/AccountingDocumentAuditing.preference'; import AccountingDocumentAuditingModalTable from './accountingdocumentauditing/AccountingDocumentAuditing.modaltable'; import AccountingDocumentAuditingSearch from './accountingdocumentauditing/AccountingDocumentAuditing.search'; import AccountingDocumentAuditingSearchForm from './accountingdocumentauditing/AccountingDocumentAuditing.searchform'; @@ -1416,7 +1322,6 @@ import AccountingDocumentPostingBase from './accountingdocumentposting/Accountin import AccountingDocumentPostingBizApp from './accountingdocumentposting/AccountingDocumentPosting.app'; import AccountingDocumentPostingModel from './accountingdocumentposting/AccountingDocumentPosting.model'; import AccountingDocumentPostingDashboard from './accountingdocumentposting/AccountingDocumentPosting.dashboard'; -import AccountingDocumentPostingPreference from './accountingdocumentposting/AccountingDocumentPosting.preference'; import AccountingDocumentPostingModalTable from './accountingdocumentposting/AccountingDocumentPosting.modaltable'; import AccountingDocumentPostingSearch from './accountingdocumentposting/AccountingDocumentPosting.search'; import AccountingDocumentPostingSearchForm from './accountingdocumentposting/AccountingDocumentPosting.searchform'; @@ -1431,7 +1336,6 @@ import OriginalVoucherBase from './originalvoucher/OriginalVoucher.base'; import OriginalVoucherBizApp from './originalvoucher/OriginalVoucher.app'; import OriginalVoucherModel from './originalvoucher/OriginalVoucher.model'; import OriginalVoucherDashboard from './originalvoucher/OriginalVoucher.dashboard'; -import OriginalVoucherPreference from './originalvoucher/OriginalVoucher.preference'; import OriginalVoucherModalTable from './originalvoucher/OriginalVoucher.modaltable'; import OriginalVoucherSearch from './originalvoucher/OriginalVoucher.search'; import OriginalVoucherSearchForm from './originalvoucher/OriginalVoucher.searchform'; @@ -1446,7 +1350,6 @@ import OriginalVoucherCreationBase from './originalvouchercreation/OriginalVouch import OriginalVoucherCreationBizApp from './originalvouchercreation/OriginalVoucherCreation.app'; import OriginalVoucherCreationModel from './originalvouchercreation/OriginalVoucherCreation.model'; import OriginalVoucherCreationDashboard from './originalvouchercreation/OriginalVoucherCreation.dashboard'; -import OriginalVoucherCreationPreference from './originalvouchercreation/OriginalVoucherCreation.preference'; import OriginalVoucherCreationModalTable from './originalvouchercreation/OriginalVoucherCreation.modaltable'; import OriginalVoucherCreationSearch from './originalvouchercreation/OriginalVoucherCreation.search'; import OriginalVoucherCreationSearchForm from './originalvouchercreation/OriginalVoucherCreation.searchform'; @@ -1461,7 +1364,6 @@ import OriginalVoucherConfirmationBase from './originalvoucherconfirmation/Origi import OriginalVoucherConfirmationBizApp from './originalvoucherconfirmation/OriginalVoucherConfirmation.app'; import OriginalVoucherConfirmationModel from './originalvoucherconfirmation/OriginalVoucherConfirmation.model'; import OriginalVoucherConfirmationDashboard from './originalvoucherconfirmation/OriginalVoucherConfirmation.dashboard'; -import OriginalVoucherConfirmationPreference from './originalvoucherconfirmation/OriginalVoucherConfirmation.preference'; import OriginalVoucherConfirmationModalTable from './originalvoucherconfirmation/OriginalVoucherConfirmation.modaltable'; import OriginalVoucherConfirmationSearch from './originalvoucherconfirmation/OriginalVoucherConfirmation.search'; import OriginalVoucherConfirmationSearchForm from './originalvoucherconfirmation/OriginalVoucherConfirmation.searchform'; @@ -1476,7 +1378,6 @@ import OriginalVoucherAuditingBase from './originalvoucherauditing/OriginalVouch import OriginalVoucherAuditingBizApp from './originalvoucherauditing/OriginalVoucherAuditing.app'; import OriginalVoucherAuditingModel from './originalvoucherauditing/OriginalVoucherAuditing.model'; import OriginalVoucherAuditingDashboard from './originalvoucherauditing/OriginalVoucherAuditing.dashboard'; -import OriginalVoucherAuditingPreference from './originalvoucherauditing/OriginalVoucherAuditing.preference'; import OriginalVoucherAuditingModalTable from './originalvoucherauditing/OriginalVoucherAuditing.modaltable'; import OriginalVoucherAuditingSearch from './originalvoucherauditing/OriginalVoucherAuditing.search'; import OriginalVoucherAuditingSearchForm from './originalvoucherauditing/OriginalVoucherAuditing.searchform'; @@ -1491,7 +1392,6 @@ import AccountingDocumentLineBase from './accountingdocumentline/AccountingDocum import AccountingDocumentLineBizApp from './accountingdocumentline/AccountingDocumentLine.app'; import AccountingDocumentLineModel from './accountingdocumentline/AccountingDocumentLine.model'; import AccountingDocumentLineDashboard from './accountingdocumentline/AccountingDocumentLine.dashboard'; -import AccountingDocumentLinePreference from './accountingdocumentline/AccountingDocumentLine.preference'; import AccountingDocumentLineModalTable from './accountingdocumentline/AccountingDocumentLine.modaltable'; import AccountingDocumentLineSearch from './accountingdocumentline/AccountingDocumentLine.search'; import AccountingDocumentLineSearchForm from './accountingdocumentline/AccountingDocumentLine.searchform'; @@ -1506,7 +1406,6 @@ import LevelOneDepartmentBase from './levelonedepartment/LevelOneDepartment.base import LevelOneDepartmentBizApp from './levelonedepartment/LevelOneDepartment.app'; import LevelOneDepartmentModel from './levelonedepartment/LevelOneDepartment.model'; import LevelOneDepartmentDashboard from './levelonedepartment/LevelOneDepartment.dashboard'; -import LevelOneDepartmentPreference from './levelonedepartment/LevelOneDepartment.preference'; import LevelOneDepartmentModalTable from './levelonedepartment/LevelOneDepartment.modaltable'; import LevelOneDepartmentSearch from './levelonedepartment/LevelOneDepartment.search'; import LevelOneDepartmentSearchForm from './levelonedepartment/LevelOneDepartment.searchform'; @@ -1521,7 +1420,6 @@ import LevelTwoDepartmentBase from './leveltwodepartment/LevelTwoDepartment.base import LevelTwoDepartmentBizApp from './leveltwodepartment/LevelTwoDepartment.app'; import LevelTwoDepartmentModel from './leveltwodepartment/LevelTwoDepartment.model'; import LevelTwoDepartmentDashboard from './leveltwodepartment/LevelTwoDepartment.dashboard'; -import LevelTwoDepartmentPreference from './leveltwodepartment/LevelTwoDepartment.preference'; import LevelTwoDepartmentModalTable from './leveltwodepartment/LevelTwoDepartment.modaltable'; import LevelTwoDepartmentSearch from './leveltwodepartment/LevelTwoDepartment.search'; import LevelTwoDepartmentSearchForm from './leveltwodepartment/LevelTwoDepartment.searchform'; @@ -1536,7 +1434,6 @@ import LevelThreeDepartmentBase from './levelthreedepartment/LevelThreeDepartmen import LevelThreeDepartmentBizApp from './levelthreedepartment/LevelThreeDepartment.app'; import LevelThreeDepartmentModel from './levelthreedepartment/LevelThreeDepartment.model'; import LevelThreeDepartmentDashboard from './levelthreedepartment/LevelThreeDepartment.dashboard'; -import LevelThreeDepartmentPreference from './levelthreedepartment/LevelThreeDepartment.preference'; import LevelThreeDepartmentModalTable from './levelthreedepartment/LevelThreeDepartment.modaltable'; import LevelThreeDepartmentSearch from './levelthreedepartment/LevelThreeDepartment.search'; import LevelThreeDepartmentSearchForm from './levelthreedepartment/LevelThreeDepartment.searchform'; @@ -1551,7 +1448,6 @@ import SkillTypeBase from './skilltype/SkillType.base'; import SkillTypeBizApp from './skilltype/SkillType.app'; import SkillTypeModel from './skilltype/SkillType.model'; import SkillTypeDashboard from './skilltype/SkillType.dashboard'; -import SkillTypePreference from './skilltype/SkillType.preference'; import SkillTypeModalTable from './skilltype/SkillType.modaltable'; import SkillTypeSearch from './skilltype/SkillType.search'; import SkillTypeSearchForm from './skilltype/SkillType.searchform'; @@ -1566,7 +1462,6 @@ import ResponsibilityTypeBase from './responsibilitytype/ResponsibilityType.base import ResponsibilityTypeBizApp from './responsibilitytype/ResponsibilityType.app'; import ResponsibilityTypeModel from './responsibilitytype/ResponsibilityType.model'; import ResponsibilityTypeDashboard from './responsibilitytype/ResponsibilityType.dashboard'; -import ResponsibilityTypePreference from './responsibilitytype/ResponsibilityType.preference'; import ResponsibilityTypeModalTable from './responsibilitytype/ResponsibilityType.modaltable'; import ResponsibilityTypeSearch from './responsibilitytype/ResponsibilityType.search'; import ResponsibilityTypeSearchForm from './responsibilitytype/ResponsibilityType.searchform'; @@ -1581,7 +1476,6 @@ import TerminationReasonBase from './terminationreason/TerminationReason.base'; import TerminationReasonBizApp from './terminationreason/TerminationReason.app'; import TerminationReasonModel from './terminationreason/TerminationReason.model'; import TerminationReasonDashboard from './terminationreason/TerminationReason.dashboard'; -import TerminationReasonPreference from './terminationreason/TerminationReason.preference'; import TerminationReasonModalTable from './terminationreason/TerminationReason.modaltable'; import TerminationReasonSearch from './terminationreason/TerminationReason.search'; import TerminationReasonSearchForm from './terminationreason/TerminationReason.searchform'; @@ -1596,7 +1490,6 @@ import TerminationTypeBase from './terminationtype/TerminationType.base'; import TerminationTypeBizApp from './terminationtype/TerminationType.app'; import TerminationTypeModel from './terminationtype/TerminationType.model'; import TerminationTypeDashboard from './terminationtype/TerminationType.dashboard'; -import TerminationTypePreference from './terminationtype/TerminationType.preference'; import TerminationTypeModalTable from './terminationtype/TerminationType.modaltable'; import TerminationTypeSearch from './terminationtype/TerminationType.search'; import TerminationTypeSearchForm from './terminationtype/TerminationType.searchform'; @@ -1611,7 +1504,6 @@ import OccupationTypeBase from './occupationtype/OccupationType.base'; import OccupationTypeBizApp from './occupationtype/OccupationType.app'; import OccupationTypeModel from './occupationtype/OccupationType.model'; import OccupationTypeDashboard from './occupationtype/OccupationType.dashboard'; -import OccupationTypePreference from './occupationtype/OccupationType.preference'; import OccupationTypeModalTable from './occupationtype/OccupationType.modaltable'; import OccupationTypeSearch from './occupationtype/OccupationType.search'; import OccupationTypeSearchForm from './occupationtype/OccupationType.searchform'; @@ -1626,7 +1518,6 @@ import LeaveTypeBase from './leavetype/LeaveType.base'; import LeaveTypeBizApp from './leavetype/LeaveType.app'; import LeaveTypeModel from './leavetype/LeaveType.model'; import LeaveTypeDashboard from './leavetype/LeaveType.dashboard'; -import LeaveTypePreference from './leavetype/LeaveType.preference'; import LeaveTypeModalTable from './leavetype/LeaveType.modaltable'; import LeaveTypeSearch from './leavetype/LeaveType.search'; import LeaveTypeSearchForm from './leavetype/LeaveType.searchform'; @@ -1641,7 +1532,6 @@ import SalaryGradeBase from './salarygrade/SalaryGrade.base'; import SalaryGradeBizApp from './salarygrade/SalaryGrade.app'; import SalaryGradeModel from './salarygrade/SalaryGrade.model'; import SalaryGradeDashboard from './salarygrade/SalaryGrade.dashboard'; -import SalaryGradePreference from './salarygrade/SalaryGrade.preference'; import SalaryGradeModalTable from './salarygrade/SalaryGrade.modaltable'; import SalaryGradeSearch from './salarygrade/SalaryGrade.search'; import SalaryGradeSearchForm from './salarygrade/SalaryGrade.searchform'; @@ -1656,7 +1546,6 @@ import InterviewTypeBase from './interviewtype/InterviewType.base'; import InterviewTypeBizApp from './interviewtype/InterviewType.app'; import InterviewTypeModel from './interviewtype/InterviewType.model'; import InterviewTypeDashboard from './interviewtype/InterviewType.dashboard'; -import InterviewTypePreference from './interviewtype/InterviewType.preference'; import InterviewTypeModalTable from './interviewtype/InterviewType.modaltable'; import InterviewTypeSearch from './interviewtype/InterviewType.search'; import InterviewTypeSearchForm from './interviewtype/InterviewType.searchform'; @@ -1671,7 +1560,6 @@ import TrainingCourseTypeBase from './trainingcoursetype/TrainingCourseType.base import TrainingCourseTypeBizApp from './trainingcoursetype/TrainingCourseType.app'; import TrainingCourseTypeModel from './trainingcoursetype/TrainingCourseType.model'; import TrainingCourseTypeDashboard from './trainingcoursetype/TrainingCourseType.dashboard'; -import TrainingCourseTypePreference from './trainingcoursetype/TrainingCourseType.preference'; import TrainingCourseTypeModalTable from './trainingcoursetype/TrainingCourseType.modaltable'; import TrainingCourseTypeSearch from './trainingcoursetype/TrainingCourseType.search'; import TrainingCourseTypeSearchForm from './trainingcoursetype/TrainingCourseType.searchform'; @@ -1686,7 +1574,6 @@ import PublicHolidayBase from './publicholiday/PublicHoliday.base'; import PublicHolidayBizApp from './publicholiday/PublicHoliday.app'; import PublicHolidayModel from './publicholiday/PublicHoliday.model'; import PublicHolidayDashboard from './publicholiday/PublicHoliday.dashboard'; -import PublicHolidayPreference from './publicholiday/PublicHoliday.preference'; import PublicHolidayModalTable from './publicholiday/PublicHoliday.modaltable'; import PublicHolidaySearch from './publicholiday/PublicHoliday.search'; import PublicHolidaySearchForm from './publicholiday/PublicHoliday.searchform'; @@ -1701,7 +1588,6 @@ import TerminationBase from './termination/Termination.base'; import TerminationBizApp from './termination/Termination.app'; import TerminationModel from './termination/Termination.model'; import TerminationDashboard from './termination/Termination.dashboard'; -import TerminationPreference from './termination/Termination.preference'; import TerminationModalTable from './termination/Termination.modaltable'; import TerminationSearch from './termination/Termination.search'; import TerminationSearchForm from './termination/Termination.searchform'; @@ -1716,7 +1602,6 @@ import ViewBase from './view/View.base'; import ViewBizApp from './view/View.app'; import ViewModel from './view/View.model'; import ViewDashboard from './view/View.dashboard'; -import ViewPreference from './view/View.preference'; import ViewModalTable from './view/View.modaltable'; import ViewSearch from './view/View.search'; import ViewSearchForm from './view/View.searchform'; @@ -1731,7 +1616,6 @@ import EmployeeBase from './employee/Employee.base'; import EmployeeBizApp from './employee/Employee.app'; import EmployeeModel from './employee/Employee.model'; import EmployeeDashboard from './employee/Employee.dashboard'; -import EmployeePreference from './employee/Employee.preference'; import EmployeeModalTable from './employee/Employee.modaltable'; import EmployeeSearch from './employee/Employee.search'; import EmployeeSearchForm from './employee/Employee.searchform'; @@ -1746,7 +1630,6 @@ import JobApplicationBase from './jobapplication/JobApplication.base'; import JobApplicationBizApp from './jobapplication/JobApplication.app'; import JobApplicationModel from './jobapplication/JobApplication.model'; import JobApplicationDashboard from './jobapplication/JobApplication.dashboard'; -import JobApplicationPreference from './jobapplication/JobApplication.preference'; import JobApplicationModalTable from './jobapplication/JobApplication.modaltable'; import JobApplicationSearch from './jobapplication/JobApplication.search'; import JobApplicationSearchForm from './jobapplication/JobApplication.searchform'; @@ -1761,7 +1644,6 @@ import ProfessionInterviewBase from './professioninterview/ProfessionInterview.b import ProfessionInterviewBizApp from './professioninterview/ProfessionInterview.app'; import ProfessionInterviewModel from './professioninterview/ProfessionInterview.model'; import ProfessionInterviewDashboard from './professioninterview/ProfessionInterview.dashboard'; -import ProfessionInterviewPreference from './professioninterview/ProfessionInterview.preference'; import ProfessionInterviewModalTable from './professioninterview/ProfessionInterview.modaltable'; import ProfessionInterviewSearch from './professioninterview/ProfessionInterview.search'; import ProfessionInterviewSearchForm from './professioninterview/ProfessionInterview.searchform'; @@ -1776,7 +1658,6 @@ import HrInterviewBase from './hrinterview/HrInterview.base'; import HrInterviewBizApp from './hrinterview/HrInterview.app'; import HrInterviewModel from './hrinterview/HrInterview.model'; import HrInterviewDashboard from './hrinterview/HrInterview.dashboard'; -import HrInterviewPreference from './hrinterview/HrInterview.preference'; import HrInterviewModalTable from './hrinterview/HrInterview.modaltable'; import HrInterviewSearch from './hrinterview/HrInterview.search'; import HrInterviewSearchForm from './hrinterview/HrInterview.searchform'; @@ -1791,7 +1672,6 @@ import OfferApprovalBase from './offerapproval/OfferApproval.base'; import OfferApprovalBizApp from './offerapproval/OfferApproval.app'; import OfferApprovalModel from './offerapproval/OfferApproval.model'; import OfferApprovalDashboard from './offerapproval/OfferApproval.dashboard'; -import OfferApprovalPreference from './offerapproval/OfferApproval.preference'; import OfferApprovalModalTable from './offerapproval/OfferApproval.modaltable'; import OfferApprovalSearch from './offerapproval/OfferApproval.search'; import OfferApprovalSearchForm from './offerapproval/OfferApproval.searchform'; @@ -1806,7 +1686,6 @@ import OfferAcceptanceBase from './offeracceptance/OfferAcceptance.base'; import OfferAcceptanceBizApp from './offeracceptance/OfferAcceptance.app'; import OfferAcceptanceModel from './offeracceptance/OfferAcceptance.model'; import OfferAcceptanceDashboard from './offeracceptance/OfferAcceptance.dashboard'; -import OfferAcceptancePreference from './offeracceptance/OfferAcceptance.preference'; import OfferAcceptanceModalTable from './offeracceptance/OfferAcceptance.modaltable'; import OfferAcceptanceSearch from './offeracceptance/OfferAcceptance.search'; import OfferAcceptanceSearchForm from './offeracceptance/OfferAcceptance.searchform'; @@ -1821,7 +1700,6 @@ import EmployeeBoardingBase from './employeeboarding/EmployeeBoarding.base'; import EmployeeBoardingBizApp from './employeeboarding/EmployeeBoarding.app'; import EmployeeBoardingModel from './employeeboarding/EmployeeBoarding.model'; import EmployeeBoardingDashboard from './employeeboarding/EmployeeBoarding.dashboard'; -import EmployeeBoardingPreference from './employeeboarding/EmployeeBoarding.preference'; import EmployeeBoardingModalTable from './employeeboarding/EmployeeBoarding.modaltable'; import EmployeeBoardingSearch from './employeeboarding/EmployeeBoarding.search'; import EmployeeBoardingSearchForm from './employeeboarding/EmployeeBoarding.searchform'; @@ -1836,7 +1714,6 @@ import InstructorBase from './instructor/Instructor.base'; import InstructorBizApp from './instructor/Instructor.app'; import InstructorModel from './instructor/Instructor.model'; import InstructorDashboard from './instructor/Instructor.dashboard'; -import InstructorPreference from './instructor/Instructor.preference'; import InstructorModalTable from './instructor/Instructor.modaltable'; import InstructorSearch from './instructor/Instructor.search'; import InstructorSearchForm from './instructor/Instructor.searchform'; @@ -1851,7 +1728,6 @@ import CompanyTrainingBase from './companytraining/CompanyTraining.base'; import CompanyTrainingBizApp from './companytraining/CompanyTraining.app'; import CompanyTrainingModel from './companytraining/CompanyTraining.model'; import CompanyTrainingDashboard from './companytraining/CompanyTraining.dashboard'; -import CompanyTrainingPreference from './companytraining/CompanyTraining.preference'; import CompanyTrainingModalTable from './companytraining/CompanyTraining.modaltable'; import CompanyTrainingSearch from './companytraining/CompanyTraining.search'; import CompanyTrainingSearchForm from './companytraining/CompanyTraining.searchform'; @@ -1866,7 +1742,6 @@ import ScoringBase from './scoring/Scoring.base'; import ScoringBizApp from './scoring/Scoring.app'; import ScoringModel from './scoring/Scoring.model'; import ScoringDashboard from './scoring/Scoring.dashboard'; -import ScoringPreference from './scoring/Scoring.preference'; import ScoringModalTable from './scoring/Scoring.modaltable'; import ScoringSearch from './scoring/Scoring.search'; import ScoringSearchForm from './scoring/Scoring.searchform'; @@ -1881,7 +1756,6 @@ import EmployeeCompanyTrainingBase from './employeecompanytraining/EmployeeCompa import EmployeeCompanyTrainingBizApp from './employeecompanytraining/EmployeeCompanyTraining.app'; import EmployeeCompanyTrainingModel from './employeecompanytraining/EmployeeCompanyTraining.model'; import EmployeeCompanyTrainingDashboard from './employeecompanytraining/EmployeeCompanyTraining.dashboard'; -import EmployeeCompanyTrainingPreference from './employeecompanytraining/EmployeeCompanyTraining.preference'; import EmployeeCompanyTrainingModalTable from './employeecompanytraining/EmployeeCompanyTraining.modaltable'; import EmployeeCompanyTrainingSearch from './employeecompanytraining/EmployeeCompanyTraining.search'; import EmployeeCompanyTrainingSearchForm from './employeecompanytraining/EmployeeCompanyTraining.searchform'; @@ -1896,7 +1770,6 @@ import EmployeeSkillBase from './employeeskill/EmployeeSkill.base'; import EmployeeSkillBizApp from './employeeskill/EmployeeSkill.app'; import EmployeeSkillModel from './employeeskill/EmployeeSkill.model'; import EmployeeSkillDashboard from './employeeskill/EmployeeSkill.dashboard'; -import EmployeeSkillPreference from './employeeskill/EmployeeSkill.preference'; import EmployeeSkillModalTable from './employeeskill/EmployeeSkill.modaltable'; import EmployeeSkillSearch from './employeeskill/EmployeeSkill.search'; import EmployeeSkillSearchForm from './employeeskill/EmployeeSkill.searchform'; @@ -1911,7 +1784,6 @@ import EmployeePerformanceBase from './employeeperformance/EmployeePerformance.b import EmployeePerformanceBizApp from './employeeperformance/EmployeePerformance.app'; import EmployeePerformanceModel from './employeeperformance/EmployeePerformance.model'; import EmployeePerformanceDashboard from './employeeperformance/EmployeePerformance.dashboard'; -import EmployeePerformancePreference from './employeeperformance/EmployeePerformance.preference'; import EmployeePerformanceModalTable from './employeeperformance/EmployeePerformance.modaltable'; import EmployeePerformanceSearch from './employeeperformance/EmployeePerformance.search'; import EmployeePerformanceSearchForm from './employeeperformance/EmployeePerformance.searchform'; @@ -1926,7 +1798,6 @@ import EmployeeWorkExperienceBase from './employeeworkexperience/EmployeeWorkExp import EmployeeWorkExperienceBizApp from './employeeworkexperience/EmployeeWorkExperience.app'; import EmployeeWorkExperienceModel from './employeeworkexperience/EmployeeWorkExperience.model'; import EmployeeWorkExperienceDashboard from './employeeworkexperience/EmployeeWorkExperience.dashboard'; -import EmployeeWorkExperiencePreference from './employeeworkexperience/EmployeeWorkExperience.preference'; import EmployeeWorkExperienceModalTable from './employeeworkexperience/EmployeeWorkExperience.modaltable'; import EmployeeWorkExperienceSearch from './employeeworkexperience/EmployeeWorkExperience.search'; import EmployeeWorkExperienceSearchForm from './employeeworkexperience/EmployeeWorkExperience.searchform'; @@ -1941,7 +1812,6 @@ import EmployeeLeaveBase from './employeeleave/EmployeeLeave.base'; import EmployeeLeaveBizApp from './employeeleave/EmployeeLeave.app'; import EmployeeLeaveModel from './employeeleave/EmployeeLeave.model'; import EmployeeLeaveDashboard from './employeeleave/EmployeeLeave.dashboard'; -import EmployeeLeavePreference from './employeeleave/EmployeeLeave.preference'; import EmployeeLeaveModalTable from './employeeleave/EmployeeLeave.modaltable'; import EmployeeLeaveSearch from './employeeleave/EmployeeLeave.search'; import EmployeeLeaveSearchForm from './employeeleave/EmployeeLeave.searchform'; @@ -1956,7 +1826,6 @@ import EmployeeInterviewBase from './employeeinterview/EmployeeInterview.base'; import EmployeeInterviewBizApp from './employeeinterview/EmployeeInterview.app'; import EmployeeInterviewModel from './employeeinterview/EmployeeInterview.model'; import EmployeeInterviewDashboard from './employeeinterview/EmployeeInterview.dashboard'; -import EmployeeInterviewPreference from './employeeinterview/EmployeeInterview.preference'; import EmployeeInterviewModalTable from './employeeinterview/EmployeeInterview.modaltable'; import EmployeeInterviewSearch from './employeeinterview/EmployeeInterview.search'; import EmployeeInterviewSearchForm from './employeeinterview/EmployeeInterview.searchform'; @@ -1971,7 +1840,6 @@ import EmployeeAttendanceBase from './employeeattendance/EmployeeAttendance.base import EmployeeAttendanceBizApp from './employeeattendance/EmployeeAttendance.app'; import EmployeeAttendanceModel from './employeeattendance/EmployeeAttendance.model'; import EmployeeAttendanceDashboard from './employeeattendance/EmployeeAttendance.dashboard'; -import EmployeeAttendancePreference from './employeeattendance/EmployeeAttendance.preference'; import EmployeeAttendanceModalTable from './employeeattendance/EmployeeAttendance.modaltable'; import EmployeeAttendanceSearch from './employeeattendance/EmployeeAttendance.search'; import EmployeeAttendanceSearchForm from './employeeattendance/EmployeeAttendance.searchform'; @@ -1986,7 +1854,6 @@ import EmployeeQualifierBase from './employeequalifier/EmployeeQualifier.base'; import EmployeeQualifierBizApp from './employeequalifier/EmployeeQualifier.app'; import EmployeeQualifierModel from './employeequalifier/EmployeeQualifier.model'; import EmployeeQualifierDashboard from './employeequalifier/EmployeeQualifier.dashboard'; -import EmployeeQualifierPreference from './employeequalifier/EmployeeQualifier.preference'; import EmployeeQualifierModalTable from './employeequalifier/EmployeeQualifier.modaltable'; import EmployeeQualifierSearch from './employeequalifier/EmployeeQualifier.search'; import EmployeeQualifierSearchForm from './employeequalifier/EmployeeQualifier.searchform'; @@ -2001,7 +1868,6 @@ import EmployeeEducationBase from './employeeeducation/EmployeeEducation.base'; import EmployeeEducationBizApp from './employeeeducation/EmployeeEducation.app'; import EmployeeEducationModel from './employeeeducation/EmployeeEducation.model'; import EmployeeEducationDashboard from './employeeeducation/EmployeeEducation.dashboard'; -import EmployeeEducationPreference from './employeeeducation/EmployeeEducation.preference'; import EmployeeEducationModalTable from './employeeeducation/EmployeeEducation.modaltable'; import EmployeeEducationSearch from './employeeeducation/EmployeeEducation.search'; import EmployeeEducationSearchForm from './employeeeducation/EmployeeEducation.searchform'; @@ -2016,7 +1882,6 @@ import EmployeeAwardBase from './employeeaward/EmployeeAward.base'; import EmployeeAwardBizApp from './employeeaward/EmployeeAward.app'; import EmployeeAwardModel from './employeeaward/EmployeeAward.model'; import EmployeeAwardDashboard from './employeeaward/EmployeeAward.dashboard'; -import EmployeeAwardPreference from './employeeaward/EmployeeAward.preference'; import EmployeeAwardModalTable from './employeeaward/EmployeeAward.modaltable'; import EmployeeAwardSearch from './employeeaward/EmployeeAward.search'; import EmployeeAwardSearchForm from './employeeaward/EmployeeAward.searchform'; @@ -2031,7 +1896,6 @@ import EmployeeSalarySheetBase from './employeesalarysheet/EmployeeSalarySheet.b import EmployeeSalarySheetBizApp from './employeesalarysheet/EmployeeSalarySheet.app'; import EmployeeSalarySheetModel from './employeesalarysheet/EmployeeSalarySheet.model'; import EmployeeSalarySheetDashboard from './employeesalarysheet/EmployeeSalarySheet.dashboard'; -import EmployeeSalarySheetPreference from './employeesalarysheet/EmployeeSalarySheet.preference'; import EmployeeSalarySheetModalTable from './employeesalarysheet/EmployeeSalarySheet.modaltable'; import EmployeeSalarySheetSearch from './employeesalarysheet/EmployeeSalarySheet.search'; import EmployeeSalarySheetSearchForm from './employeesalarysheet/EmployeeSalarySheet.searchform'; @@ -2046,7 +1910,6 @@ import PayingOffBase from './payingoff/PayingOff.base'; import PayingOffBizApp from './payingoff/PayingOff.app'; import PayingOffModel from './payingoff/PayingOff.model'; import PayingOffDashboard from './payingoff/PayingOff.dashboard'; -import PayingOffPreference from './payingoff/PayingOff.preference'; import PayingOffModalTable from './payingoff/PayingOff.modaltable'; import PayingOffSearch from './payingoff/PayingOff.search'; import PayingOffSearchForm from './payingoff/PayingOff.searchform'; @@ -2061,7 +1924,6 @@ import UserDomainBase from './userdomain/UserDomain.base'; import UserDomainBizApp from './userdomain/UserDomain.app'; import UserDomainModel from './userdomain/UserDomain.model'; import UserDomainDashboard from './userdomain/UserDomain.dashboard'; -import UserDomainPreference from './userdomain/UserDomain.preference'; import UserDomainModalTable from './userdomain/UserDomain.modaltable'; import UserDomainSearch from './userdomain/UserDomain.search'; import UserDomainSearchForm from './userdomain/UserDomain.searchform'; @@ -2076,7 +1938,6 @@ import UserWhiteListBase from './userwhitelist/UserWhiteList.base'; import UserWhiteListBizApp from './userwhitelist/UserWhiteList.app'; import UserWhiteListModel from './userwhitelist/UserWhiteList.model'; import UserWhiteListDashboard from './userwhitelist/UserWhiteList.dashboard'; -import UserWhiteListPreference from './userwhitelist/UserWhiteList.preference'; import UserWhiteListModalTable from './userwhitelist/UserWhiteList.modaltable'; import UserWhiteListSearch from './userwhitelist/UserWhiteList.search'; import UserWhiteListSearchForm from './userwhitelist/UserWhiteList.searchform'; @@ -2091,7 +1952,6 @@ import SecUserBase from './secuser/SecUser.base'; import SecUserBizApp from './secuser/SecUser.app'; import SecUserModel from './secuser/SecUser.model'; import SecUserDashboard from './secuser/SecUser.dashboard'; -import SecUserPreference from './secuser/SecUser.preference'; import SecUserModalTable from './secuser/SecUser.modaltable'; import SecUserSearch from './secuser/SecUser.search'; import SecUserSearchForm from './secuser/SecUser.searchform'; @@ -2106,7 +1966,6 @@ import SecUserBlockingBase from './secuserblocking/SecUserBlocking.base'; import SecUserBlockingBizApp from './secuserblocking/SecUserBlocking.app'; import SecUserBlockingModel from './secuserblocking/SecUserBlocking.model'; import SecUserBlockingDashboard from './secuserblocking/SecUserBlocking.dashboard'; -import SecUserBlockingPreference from './secuserblocking/SecUserBlocking.preference'; import SecUserBlockingModalTable from './secuserblocking/SecUserBlocking.modaltable'; import SecUserBlockingSearch from './secuserblocking/SecUserBlocking.search'; import SecUserBlockingSearchForm from './secuserblocking/SecUserBlocking.searchform'; @@ -2121,7 +1980,6 @@ import UserAppBase from './userapp/UserApp.base'; import UserAppBizApp from './userapp/UserApp.app'; import UserAppModel from './userapp/UserApp.model'; import UserAppDashboard from './userapp/UserApp.dashboard'; -import UserAppPreference from './userapp/UserApp.preference'; import UserAppModalTable from './userapp/UserApp.modaltable'; import UserAppSearch from './userapp/UserApp.search'; import UserAppSearchForm from './userapp/UserApp.searchform'; @@ -2136,7 +1994,6 @@ import ListAccessBase from './listaccess/ListAccess.base'; import ListAccessBizApp from './listaccess/ListAccess.app'; import ListAccessModel from './listaccess/ListAccess.model'; import ListAccessDashboard from './listaccess/ListAccess.dashboard'; -import ListAccessPreference from './listaccess/ListAccess.preference'; import ListAccessModalTable from './listaccess/ListAccess.modaltable'; import ListAccessSearch from './listaccess/ListAccess.search'; import ListAccessSearchForm from './listaccess/ListAccess.searchform'; @@ -2151,7 +2008,6 @@ import ObjectAccessBase from './objectaccess/ObjectAccess.base'; import ObjectAccessBizApp from './objectaccess/ObjectAccess.app'; import ObjectAccessModel from './objectaccess/ObjectAccess.model'; import ObjectAccessDashboard from './objectaccess/ObjectAccess.dashboard'; -import ObjectAccessPreference from './objectaccess/ObjectAccess.preference'; import ObjectAccessModalTable from './objectaccess/ObjectAccess.modaltable'; import ObjectAccessSearch from './objectaccess/ObjectAccess.search'; import ObjectAccessSearchForm from './objectaccess/ObjectAccess.searchform'; @@ -2166,7 +2022,6 @@ import LoginHistoryBase from './loginhistory/LoginHistory.base'; import LoginHistoryBizApp from './loginhistory/LoginHistory.app'; import LoginHistoryModel from './loginhistory/LoginHistory.model'; import LoginHistoryDashboard from './loginhistory/LoginHistory.dashboard'; -import LoginHistoryPreference from './loginhistory/LoginHistory.preference'; import LoginHistoryModalTable from './loginhistory/LoginHistory.modaltable'; import LoginHistorySearch from './loginhistory/LoginHistory.search'; import LoginHistorySearchForm from './loginhistory/LoginHistory.searchform'; @@ -2701,7 +2556,6 @@ const OOTBComponents={ RetailStoreCountryCenterBizApp, RetailStoreCountryCenterModel, RetailStoreCountryCenterDashboard, - RetailStoreCountryCenterPreference, RetailStoreCountryCenterModalTable, RetailStoreCountryCenterSearch, RetailStoreCountryCenterSearchForm, @@ -2716,7 +2570,6 @@ const OOTBComponents={ CatalogBizApp, CatalogModel, CatalogDashboard, - CatalogPreference, CatalogModalTable, CatalogSearch, CatalogSearchForm, @@ -2731,7 +2584,6 @@ const OOTBComponents={ LevelOneCategoryBizApp, LevelOneCategoryModel, LevelOneCategoryDashboard, - LevelOneCategoryPreference, LevelOneCategoryModalTable, LevelOneCategorySearch, LevelOneCategorySearchForm, @@ -2746,7 +2598,6 @@ const OOTBComponents={ LevelTwoCategoryBizApp, LevelTwoCategoryModel, LevelTwoCategoryDashboard, - LevelTwoCategoryPreference, LevelTwoCategoryModalTable, LevelTwoCategorySearch, LevelTwoCategorySearchForm, @@ -2761,7 +2612,6 @@ const OOTBComponents={ LevelThreeCategoryBizApp, LevelThreeCategoryModel, LevelThreeCategoryDashboard, - LevelThreeCategoryPreference, LevelThreeCategoryModalTable, LevelThreeCategorySearch, LevelThreeCategorySearchForm, @@ -2776,7 +2626,6 @@ const OOTBComponents={ ProductBizApp, ProductModel, ProductDashboard, - ProductPreference, ProductModalTable, ProductSearch, ProductSearchForm, @@ -2791,7 +2640,6 @@ const OOTBComponents={ SkuBizApp, SkuModel, SkuDashboard, - SkuPreference, SkuModalTable, SkuSearch, SkuSearchForm, @@ -2806,7 +2654,6 @@ const OOTBComponents={ RetailStoreProvinceCenterBizApp, RetailStoreProvinceCenterModel, RetailStoreProvinceCenterDashboard, - RetailStoreProvinceCenterPreference, RetailStoreProvinceCenterModalTable, RetailStoreProvinceCenterSearch, RetailStoreProvinceCenterSearchForm, @@ -2821,7 +2668,6 @@ const OOTBComponents={ ProvinceCenterDepartmentBizApp, ProvinceCenterDepartmentModel, ProvinceCenterDepartmentDashboard, - ProvinceCenterDepartmentPreference, ProvinceCenterDepartmentModalTable, ProvinceCenterDepartmentSearch, ProvinceCenterDepartmentSearchForm, @@ -2836,7 +2682,6 @@ const OOTBComponents={ ProvinceCenterEmployeeBizApp, ProvinceCenterEmployeeModel, ProvinceCenterEmployeeDashboard, - ProvinceCenterEmployeePreference, ProvinceCenterEmployeeModalTable, ProvinceCenterEmployeeSearch, ProvinceCenterEmployeeSearchForm, @@ -2851,7 +2696,6 @@ const OOTBComponents={ RetailStoreCityServiceCenterBizApp, RetailStoreCityServiceCenterModel, RetailStoreCityServiceCenterDashboard, - RetailStoreCityServiceCenterPreference, RetailStoreCityServiceCenterModalTable, RetailStoreCityServiceCenterSearch, RetailStoreCityServiceCenterSearchForm, @@ -2866,7 +2710,6 @@ const OOTBComponents={ CityPartnerBizApp, CityPartnerModel, CityPartnerDashboard, - CityPartnerPreference, CityPartnerModalTable, CityPartnerSearch, CityPartnerSearchForm, @@ -2881,7 +2724,6 @@ const OOTBComponents={ PotentialCustomerBizApp, PotentialCustomerModel, PotentialCustomerDashboard, - PotentialCustomerPreference, PotentialCustomerModalTable, PotentialCustomerSearch, PotentialCustomerSearchForm, @@ -2896,7 +2738,6 @@ const OOTBComponents={ PotentialCustomerContactPersonBizApp, PotentialCustomerContactPersonModel, PotentialCustomerContactPersonDashboard, - PotentialCustomerContactPersonPreference, PotentialCustomerContactPersonModalTable, PotentialCustomerContactPersonSearch, PotentialCustomerContactPersonSearchForm, @@ -2911,7 +2752,6 @@ const OOTBComponents={ PotentialCustomerContactBizApp, PotentialCustomerContactModel, PotentialCustomerContactDashboard, - PotentialCustomerContactPreference, PotentialCustomerContactModalTable, PotentialCustomerContactSearch, PotentialCustomerContactSearchForm, @@ -2926,7 +2766,6 @@ const OOTBComponents={ CityEventBizApp, CityEventModel, CityEventDashboard, - CityEventPreference, CityEventModalTable, CityEventSearch, CityEventSearchForm, @@ -2941,7 +2780,6 @@ const OOTBComponents={ EventAttendanceBizApp, EventAttendanceModel, EventAttendanceDashboard, - EventAttendancePreference, EventAttendanceModalTable, EventAttendanceSearch, EventAttendanceSearchForm, @@ -2956,7 +2794,6 @@ const OOTBComponents={ RetailStoreBizApp, RetailStoreModel, RetailStoreDashboard, - RetailStorePreference, RetailStoreModalTable, RetailStoreSearch, RetailStoreSearchForm, @@ -2971,7 +2808,6 @@ const OOTBComponents={ RetailStoreCreationBizApp, RetailStoreCreationModel, RetailStoreCreationDashboard, - RetailStoreCreationPreference, RetailStoreCreationModalTable, RetailStoreCreationSearch, RetailStoreCreationSearchForm, @@ -2986,7 +2822,6 @@ const OOTBComponents={ RetailStoreInvestmentInvitationBizApp, RetailStoreInvestmentInvitationModel, RetailStoreInvestmentInvitationDashboard, - RetailStoreInvestmentInvitationPreference, RetailStoreInvestmentInvitationModalTable, RetailStoreInvestmentInvitationSearch, RetailStoreInvestmentInvitationSearchForm, @@ -3001,7 +2836,6 @@ const OOTBComponents={ RetailStoreFranchisingBizApp, RetailStoreFranchisingModel, RetailStoreFranchisingDashboard, - RetailStoreFranchisingPreference, RetailStoreFranchisingModalTable, RetailStoreFranchisingSearch, RetailStoreFranchisingSearchForm, @@ -3016,7 +2850,6 @@ const OOTBComponents={ RetailStoreDecorationBizApp, RetailStoreDecorationModel, RetailStoreDecorationDashboard, - RetailStoreDecorationPreference, RetailStoreDecorationModalTable, RetailStoreDecorationSearch, RetailStoreDecorationSearchForm, @@ -3031,7 +2864,6 @@ const OOTBComponents={ RetailStoreOpeningBizApp, RetailStoreOpeningModel, RetailStoreOpeningDashboard, - RetailStoreOpeningPreference, RetailStoreOpeningModalTable, RetailStoreOpeningSearch, RetailStoreOpeningSearchForm, @@ -3046,7 +2878,6 @@ const OOTBComponents={ RetailStoreClosingBizApp, RetailStoreClosingModel, RetailStoreClosingDashboard, - RetailStoreClosingPreference, RetailStoreClosingModalTable, RetailStoreClosingSearch, RetailStoreClosingSearchForm, @@ -3061,7 +2892,6 @@ const OOTBComponents={ RetailStoreMemberBizApp, RetailStoreMemberModel, RetailStoreMemberDashboard, - RetailStoreMemberPreference, RetailStoreMemberModalTable, RetailStoreMemberSearch, RetailStoreMemberSearchForm, @@ -3076,7 +2906,6 @@ const OOTBComponents={ ConsumerOrderBizApp, ConsumerOrderModel, ConsumerOrderDashboard, - ConsumerOrderPreference, ConsumerOrderModalTable, ConsumerOrderSearch, ConsumerOrderSearchForm, @@ -3091,7 +2920,6 @@ const OOTBComponents={ ConsumerOrderConfirmationBizApp, ConsumerOrderConfirmationModel, ConsumerOrderConfirmationDashboard, - ConsumerOrderConfirmationPreference, ConsumerOrderConfirmationModalTable, ConsumerOrderConfirmationSearch, ConsumerOrderConfirmationSearchForm, @@ -3106,7 +2934,6 @@ const OOTBComponents={ ConsumerOrderApprovalBizApp, ConsumerOrderApprovalModel, ConsumerOrderApprovalDashboard, - ConsumerOrderApprovalPreference, ConsumerOrderApprovalModalTable, ConsumerOrderApprovalSearch, ConsumerOrderApprovalSearchForm, @@ -3121,7 +2948,6 @@ const OOTBComponents={ ConsumerOrderProcessingBizApp, ConsumerOrderProcessingModel, ConsumerOrderProcessingDashboard, - ConsumerOrderProcessingPreference, ConsumerOrderProcessingModalTable, ConsumerOrderProcessingSearch, ConsumerOrderProcessingSearchForm, @@ -3136,7 +2962,6 @@ const OOTBComponents={ ConsumerOrderShipmentBizApp, ConsumerOrderShipmentModel, ConsumerOrderShipmentDashboard, - ConsumerOrderShipmentPreference, ConsumerOrderShipmentModalTable, ConsumerOrderShipmentSearch, ConsumerOrderShipmentSearchForm, @@ -3151,7 +2976,6 @@ const OOTBComponents={ ConsumerOrderDeliveryBizApp, ConsumerOrderDeliveryModel, ConsumerOrderDeliveryDashboard, - ConsumerOrderDeliveryPreference, ConsumerOrderDeliveryModalTable, ConsumerOrderDeliverySearch, ConsumerOrderDeliverySearchForm, @@ -3166,7 +2990,6 @@ const OOTBComponents={ ConsumerOrderLineItemBizApp, ConsumerOrderLineItemModel, ConsumerOrderLineItemDashboard, - ConsumerOrderLineItemPreference, ConsumerOrderLineItemModalTable, ConsumerOrderLineItemSearch, ConsumerOrderLineItemSearchForm, @@ -3181,7 +3004,6 @@ const OOTBComponents={ ConsumerOrderShippingGroupBizApp, ConsumerOrderShippingGroupModel, ConsumerOrderShippingGroupDashboard, - ConsumerOrderShippingGroupPreference, ConsumerOrderShippingGroupModalTable, ConsumerOrderShippingGroupSearch, ConsumerOrderShippingGroupSearchForm, @@ -3196,7 +3018,6 @@ const OOTBComponents={ ConsumerOrderPaymentGroupBizApp, ConsumerOrderPaymentGroupModel, ConsumerOrderPaymentGroupDashboard, - ConsumerOrderPaymentGroupPreference, ConsumerOrderPaymentGroupModalTable, ConsumerOrderPaymentGroupSearch, ConsumerOrderPaymentGroupSearchForm, @@ -3211,7 +3032,6 @@ const OOTBComponents={ ConsumerOrderPriceAdjustmentBizApp, ConsumerOrderPriceAdjustmentModel, ConsumerOrderPriceAdjustmentDashboard, - ConsumerOrderPriceAdjustmentPreference, ConsumerOrderPriceAdjustmentModalTable, ConsumerOrderPriceAdjustmentSearch, ConsumerOrderPriceAdjustmentSearchForm, @@ -3226,7 +3046,6 @@ const OOTBComponents={ RetailStoreMemberCouponBizApp, RetailStoreMemberCouponModel, RetailStoreMemberCouponDashboard, - RetailStoreMemberCouponPreference, RetailStoreMemberCouponModalTable, RetailStoreMemberCouponSearch, RetailStoreMemberCouponSearchForm, @@ -3241,7 +3060,6 @@ const OOTBComponents={ MemberWishlistBizApp, MemberWishlistModel, MemberWishlistDashboard, - MemberWishlistPreference, MemberWishlistModalTable, MemberWishlistSearch, MemberWishlistSearchForm, @@ -3256,7 +3074,6 @@ const OOTBComponents={ MemberRewardPointBizApp, MemberRewardPointModel, MemberRewardPointDashboard, - MemberRewardPointPreference, MemberRewardPointModalTable, MemberRewardPointSearch, MemberRewardPointSearchForm, @@ -3271,7 +3088,6 @@ const OOTBComponents={ MemberRewardPointRedemptionBizApp, MemberRewardPointRedemptionModel, MemberRewardPointRedemptionDashboard, - MemberRewardPointRedemptionPreference, MemberRewardPointRedemptionModalTable, MemberRewardPointRedemptionSearch, MemberRewardPointRedemptionSearchForm, @@ -3286,7 +3102,6 @@ const OOTBComponents={ MemberWishlistProductBizApp, MemberWishlistProductModel, MemberWishlistProductDashboard, - MemberWishlistProductPreference, MemberWishlistProductModalTable, MemberWishlistProductSearch, MemberWishlistProductSearchForm, @@ -3301,7 +3116,6 @@ const OOTBComponents={ RetailStoreMemberAddressBizApp, RetailStoreMemberAddressModel, RetailStoreMemberAddressDashboard, - RetailStoreMemberAddressPreference, RetailStoreMemberAddressModalTable, RetailStoreMemberAddressSearch, RetailStoreMemberAddressSearchForm, @@ -3316,7 +3130,6 @@ const OOTBComponents={ RetailStoreMemberGiftCardBizApp, RetailStoreMemberGiftCardModel, RetailStoreMemberGiftCardDashboard, - RetailStoreMemberGiftCardPreference, RetailStoreMemberGiftCardModalTable, RetailStoreMemberGiftCardSearch, RetailStoreMemberGiftCardSearchForm, @@ -3331,7 +3144,6 @@ const OOTBComponents={ RetailStoreMemberGiftCardConsumeRecordBizApp, RetailStoreMemberGiftCardConsumeRecordModel, RetailStoreMemberGiftCardConsumeRecordDashboard, - RetailStoreMemberGiftCardConsumeRecordPreference, RetailStoreMemberGiftCardConsumeRecordModalTable, RetailStoreMemberGiftCardConsumeRecordSearch, RetailStoreMemberGiftCardConsumeRecordSearchForm, @@ -3346,7 +3158,6 @@ const OOTBComponents={ GoodsSupplierBizApp, GoodsSupplierModel, GoodsSupplierDashboard, - GoodsSupplierPreference, GoodsSupplierModalTable, GoodsSupplierSearch, GoodsSupplierSearchForm, @@ -3361,7 +3172,6 @@ const OOTBComponents={ SupplierProductBizApp, SupplierProductModel, SupplierProductDashboard, - SupplierProductPreference, SupplierProductModalTable, SupplierProductSearch, SupplierProductSearchForm, @@ -3376,7 +3186,6 @@ const OOTBComponents={ ProductSupplyDurationBizApp, ProductSupplyDurationModel, ProductSupplyDurationDashboard, - ProductSupplyDurationPreference, ProductSupplyDurationModalTable, ProductSupplyDurationSearch, ProductSupplyDurationSearchForm, @@ -3391,7 +3200,6 @@ const OOTBComponents={ SupplyOrderBizApp, SupplyOrderModel, SupplyOrderDashboard, - SupplyOrderPreference, SupplyOrderModalTable, SupplyOrderSearch, SupplyOrderSearchForm, @@ -3406,7 +3214,6 @@ const OOTBComponents={ SupplyOrderConfirmationBizApp, SupplyOrderConfirmationModel, SupplyOrderConfirmationDashboard, - SupplyOrderConfirmationPreference, SupplyOrderConfirmationModalTable, SupplyOrderConfirmationSearch, SupplyOrderConfirmationSearchForm, @@ -3421,7 +3228,6 @@ const OOTBComponents={ SupplyOrderApprovalBizApp, SupplyOrderApprovalModel, SupplyOrderApprovalDashboard, - SupplyOrderApprovalPreference, SupplyOrderApprovalModalTable, SupplyOrderApprovalSearch, SupplyOrderApprovalSearchForm, @@ -3436,7 +3242,6 @@ const OOTBComponents={ SupplyOrderProcessingBizApp, SupplyOrderProcessingModel, SupplyOrderProcessingDashboard, - SupplyOrderProcessingPreference, SupplyOrderProcessingModalTable, SupplyOrderProcessingSearch, SupplyOrderProcessingSearchForm, @@ -3451,7 +3256,6 @@ const OOTBComponents={ SupplyOrderPickingBizApp, SupplyOrderPickingModel, SupplyOrderPickingDashboard, - SupplyOrderPickingPreference, SupplyOrderPickingModalTable, SupplyOrderPickingSearch, SupplyOrderPickingSearchForm, @@ -3466,7 +3270,6 @@ const OOTBComponents={ SupplyOrderShipmentBizApp, SupplyOrderShipmentModel, SupplyOrderShipmentDashboard, - SupplyOrderShipmentPreference, SupplyOrderShipmentModalTable, SupplyOrderShipmentSearch, SupplyOrderShipmentSearchForm, @@ -3481,7 +3284,6 @@ const OOTBComponents={ SupplyOrderDeliveryBizApp, SupplyOrderDeliveryModel, SupplyOrderDeliveryDashboard, - SupplyOrderDeliveryPreference, SupplyOrderDeliveryModalTable, SupplyOrderDeliverySearch, SupplyOrderDeliverySearchForm, @@ -3496,7 +3298,6 @@ const OOTBComponents={ SupplyOrderLineItemBizApp, SupplyOrderLineItemModel, SupplyOrderLineItemDashboard, - SupplyOrderLineItemPreference, SupplyOrderLineItemModalTable, SupplyOrderLineItemSearch, SupplyOrderLineItemSearchForm, @@ -3511,7 +3312,6 @@ const OOTBComponents={ SupplyOrderShippingGroupBizApp, SupplyOrderShippingGroupModel, SupplyOrderShippingGroupDashboard, - SupplyOrderShippingGroupPreference, SupplyOrderShippingGroupModalTable, SupplyOrderShippingGroupSearch, SupplyOrderShippingGroupSearchForm, @@ -3526,7 +3326,6 @@ const OOTBComponents={ SupplyOrderPaymentGroupBizApp, SupplyOrderPaymentGroupModel, SupplyOrderPaymentGroupDashboard, - SupplyOrderPaymentGroupPreference, SupplyOrderPaymentGroupModalTable, SupplyOrderPaymentGroupSearch, SupplyOrderPaymentGroupSearchForm, @@ -3541,7 +3340,6 @@ const OOTBComponents={ RetailStoreOrderBizApp, RetailStoreOrderModel, RetailStoreOrderDashboard, - RetailStoreOrderPreference, RetailStoreOrderModalTable, RetailStoreOrderSearch, RetailStoreOrderSearchForm, @@ -3556,7 +3354,6 @@ const OOTBComponents={ RetailStoreOrderConfirmationBizApp, RetailStoreOrderConfirmationModel, RetailStoreOrderConfirmationDashboard, - RetailStoreOrderConfirmationPreference, RetailStoreOrderConfirmationModalTable, RetailStoreOrderConfirmationSearch, RetailStoreOrderConfirmationSearchForm, @@ -3571,7 +3368,6 @@ const OOTBComponents={ RetailStoreOrderApprovalBizApp, RetailStoreOrderApprovalModel, RetailStoreOrderApprovalDashboard, - RetailStoreOrderApprovalPreference, RetailStoreOrderApprovalModalTable, RetailStoreOrderApprovalSearch, RetailStoreOrderApprovalSearchForm, @@ -3586,7 +3382,6 @@ const OOTBComponents={ RetailStoreOrderProcessingBizApp, RetailStoreOrderProcessingModel, RetailStoreOrderProcessingDashboard, - RetailStoreOrderProcessingPreference, RetailStoreOrderProcessingModalTable, RetailStoreOrderProcessingSearch, RetailStoreOrderProcessingSearchForm, @@ -3601,7 +3396,6 @@ const OOTBComponents={ RetailStoreOrderPickingBizApp, RetailStoreOrderPickingModel, RetailStoreOrderPickingDashboard, - RetailStoreOrderPickingPreference, RetailStoreOrderPickingModalTable, RetailStoreOrderPickingSearch, RetailStoreOrderPickingSearchForm, @@ -3616,7 +3410,6 @@ const OOTBComponents={ RetailStoreOrderShipmentBizApp, RetailStoreOrderShipmentModel, RetailStoreOrderShipmentDashboard, - RetailStoreOrderShipmentPreference, RetailStoreOrderShipmentModalTable, RetailStoreOrderShipmentSearch, RetailStoreOrderShipmentSearchForm, @@ -3631,7 +3424,6 @@ const OOTBComponents={ RetailStoreOrderDeliveryBizApp, RetailStoreOrderDeliveryModel, RetailStoreOrderDeliveryDashboard, - RetailStoreOrderDeliveryPreference, RetailStoreOrderDeliveryModalTable, RetailStoreOrderDeliverySearch, RetailStoreOrderDeliverySearchForm, @@ -3646,7 +3438,6 @@ const OOTBComponents={ RetailStoreOrderLineItemBizApp, RetailStoreOrderLineItemModel, RetailStoreOrderLineItemDashboard, - RetailStoreOrderLineItemPreference, RetailStoreOrderLineItemModalTable, RetailStoreOrderLineItemSearch, RetailStoreOrderLineItemSearchForm, @@ -3661,7 +3452,6 @@ const OOTBComponents={ RetailStoreOrderShippingGroupBizApp, RetailStoreOrderShippingGroupModel, RetailStoreOrderShippingGroupDashboard, - RetailStoreOrderShippingGroupPreference, RetailStoreOrderShippingGroupModalTable, RetailStoreOrderShippingGroupSearch, RetailStoreOrderShippingGroupSearchForm, @@ -3676,7 +3466,6 @@ const OOTBComponents={ RetailStoreOrderPaymentGroupBizApp, RetailStoreOrderPaymentGroupModel, RetailStoreOrderPaymentGroupDashboard, - RetailStoreOrderPaymentGroupPreference, RetailStoreOrderPaymentGroupModalTable, RetailStoreOrderPaymentGroupSearch, RetailStoreOrderPaymentGroupSearchForm, @@ -3691,7 +3480,6 @@ const OOTBComponents={ WarehouseBizApp, WarehouseModel, WarehouseDashboard, - WarehousePreference, WarehouseModalTable, WarehouseSearch, WarehouseSearchForm, @@ -3706,7 +3494,6 @@ const OOTBComponents={ StorageSpaceBizApp, StorageSpaceModel, StorageSpaceDashboard, - StorageSpacePreference, StorageSpaceModalTable, StorageSpaceSearch, StorageSpaceSearchForm, @@ -3721,7 +3508,6 @@ const OOTBComponents={ SmartPalletBizApp, SmartPalletModel, SmartPalletDashboard, - SmartPalletPreference, SmartPalletModalTable, SmartPalletSearch, SmartPalletSearchForm, @@ -3736,7 +3522,6 @@ const OOTBComponents={ GoodsShelfBizApp, GoodsShelfModel, GoodsShelfDashboard, - GoodsShelfPreference, GoodsShelfModalTable, GoodsShelfSearch, GoodsShelfSearchForm, @@ -3751,7 +3536,6 @@ const OOTBComponents={ GoodsShelfStockCountBizApp, GoodsShelfStockCountModel, GoodsShelfStockCountDashboard, - GoodsShelfStockCountPreference, GoodsShelfStockCountModalTable, GoodsShelfStockCountSearch, GoodsShelfStockCountSearchForm, @@ -3766,7 +3550,6 @@ const OOTBComponents={ StockCountIssueTrackBizApp, StockCountIssueTrackModel, StockCountIssueTrackDashboard, - StockCountIssueTrackPreference, StockCountIssueTrackModalTable, StockCountIssueTrackSearch, StockCountIssueTrackSearchForm, @@ -3781,7 +3564,6 @@ const OOTBComponents={ GoodsAllocationBizApp, GoodsAllocationModel, GoodsAllocationDashboard, - GoodsAllocationPreference, GoodsAllocationModalTable, GoodsAllocationSearch, GoodsAllocationSearchForm, @@ -3796,7 +3578,6 @@ const OOTBComponents={ GoodsBizApp, GoodsModel, GoodsDashboard, - GoodsPreference, GoodsModalTable, GoodsSearch, GoodsSearchForm, @@ -3811,7 +3592,6 @@ const OOTBComponents={ GoodsPackagingBizApp, GoodsPackagingModel, GoodsPackagingDashboard, - GoodsPackagingPreference, GoodsPackagingModalTable, GoodsPackagingSearch, GoodsPackagingSearchForm, @@ -3826,7 +3606,6 @@ const OOTBComponents={ GoodsMovementBizApp, GoodsMovementModel, GoodsMovementDashboard, - GoodsMovementPreference, GoodsMovementModalTable, GoodsMovementSearch, GoodsMovementSearchForm, @@ -3841,7 +3620,6 @@ const OOTBComponents={ SupplierSpaceBizApp, SupplierSpaceModel, SupplierSpaceDashboard, - SupplierSpacePreference, SupplierSpaceModalTable, SupplierSpaceSearch, SupplierSpaceSearchForm, @@ -3856,7 +3634,6 @@ const OOTBComponents={ ReceivingSpaceBizApp, ReceivingSpaceModel, ReceivingSpaceDashboard, - ReceivingSpacePreference, ReceivingSpaceModalTable, ReceivingSpaceSearch, ReceivingSpaceSearchForm, @@ -3871,7 +3648,6 @@ const OOTBComponents={ ShippingSpaceBizApp, ShippingSpaceModel, ShippingSpaceDashboard, - ShippingSpacePreference, ShippingSpaceModalTable, ShippingSpaceSearch, ShippingSpaceSearchForm, @@ -3886,7 +3662,6 @@ const OOTBComponents={ DamageSpaceBizApp, DamageSpaceModel, DamageSpaceDashboard, - DamageSpacePreference, DamageSpaceModalTable, DamageSpaceSearch, DamageSpaceSearchForm, @@ -3901,7 +3676,6 @@ const OOTBComponents={ WarehouseAssetBizApp, WarehouseAssetModel, WarehouseAssetDashboard, - WarehouseAssetPreference, WarehouseAssetModalTable, WarehouseAssetSearch, WarehouseAssetSearchForm, @@ -3916,7 +3690,6 @@ const OOTBComponents={ TransportFleetBizApp, TransportFleetModel, TransportFleetDashboard, - TransportFleetPreference, TransportFleetModalTable, TransportFleetSearch, TransportFleetSearchForm, @@ -3931,7 +3704,6 @@ const OOTBComponents={ TransportTruckBizApp, TransportTruckModel, TransportTruckDashboard, - TransportTruckPreference, TransportTruckModalTable, TransportTruckSearch, TransportTruckSearchForm, @@ -3946,7 +3718,6 @@ const OOTBComponents={ TruckDriverBizApp, TruckDriverModel, TruckDriverDashboard, - TruckDriverPreference, TruckDriverModalTable, TruckDriverSearch, TruckDriverSearchForm, @@ -3961,7 +3732,6 @@ const OOTBComponents={ TransportTaskBizApp, TransportTaskModel, TransportTaskDashboard, - TransportTaskPreference, TransportTaskModalTable, TransportTaskSearch, TransportTaskSearchForm, @@ -3976,7 +3746,6 @@ const OOTBComponents={ TransportTaskTrackBizApp, TransportTaskTrackModel, TransportTaskTrackDashboard, - TransportTaskTrackPreference, TransportTaskTrackModalTable, TransportTaskTrackSearch, TransportTaskTrackSearchForm, @@ -3991,7 +3760,6 @@ const OOTBComponents={ AccountSetBizApp, AccountSetModel, AccountSetDashboard, - AccountSetPreference, AccountSetModalTable, AccountSetSearch, AccountSetSearchForm, @@ -4006,7 +3774,6 @@ const OOTBComponents={ AccountingSubjectBizApp, AccountingSubjectModel, AccountingSubjectDashboard, - AccountingSubjectPreference, AccountingSubjectModalTable, AccountingSubjectSearch, AccountingSubjectSearchForm, @@ -4021,7 +3788,6 @@ const OOTBComponents={ AccountingPeriodBizApp, AccountingPeriodModel, AccountingPeriodDashboard, - AccountingPeriodPreference, AccountingPeriodModalTable, AccountingPeriodSearch, AccountingPeriodSearchForm, @@ -4036,7 +3802,6 @@ const OOTBComponents={ AccountingDocumentTypeBizApp, AccountingDocumentTypeModel, AccountingDocumentTypeDashboard, - AccountingDocumentTypePreference, AccountingDocumentTypeModalTable, AccountingDocumentTypeSearch, AccountingDocumentTypeSearchForm, @@ -4051,7 +3816,6 @@ const OOTBComponents={ AccountingDocumentBizApp, AccountingDocumentModel, AccountingDocumentDashboard, - AccountingDocumentPreference, AccountingDocumentModalTable, AccountingDocumentSearch, AccountingDocumentSearchForm, @@ -4066,7 +3830,6 @@ const OOTBComponents={ AccountingDocumentCreationBizApp, AccountingDocumentCreationModel, AccountingDocumentCreationDashboard, - AccountingDocumentCreationPreference, AccountingDocumentCreationModalTable, AccountingDocumentCreationSearch, AccountingDocumentCreationSearchForm, @@ -4081,7 +3844,6 @@ const OOTBComponents={ AccountingDocumentConfirmationBizApp, AccountingDocumentConfirmationModel, AccountingDocumentConfirmationDashboard, - AccountingDocumentConfirmationPreference, AccountingDocumentConfirmationModalTable, AccountingDocumentConfirmationSearch, AccountingDocumentConfirmationSearchForm, @@ -4096,7 +3858,6 @@ const OOTBComponents={ AccountingDocumentAuditingBizApp, AccountingDocumentAuditingModel, AccountingDocumentAuditingDashboard, - AccountingDocumentAuditingPreference, AccountingDocumentAuditingModalTable, AccountingDocumentAuditingSearch, AccountingDocumentAuditingSearchForm, @@ -4111,7 +3872,6 @@ const OOTBComponents={ AccountingDocumentPostingBizApp, AccountingDocumentPostingModel, AccountingDocumentPostingDashboard, - AccountingDocumentPostingPreference, AccountingDocumentPostingModalTable, AccountingDocumentPostingSearch, AccountingDocumentPostingSearchForm, @@ -4126,7 +3886,6 @@ const OOTBComponents={ OriginalVoucherBizApp, OriginalVoucherModel, OriginalVoucherDashboard, - OriginalVoucherPreference, OriginalVoucherModalTable, OriginalVoucherSearch, OriginalVoucherSearchForm, @@ -4141,7 +3900,6 @@ const OOTBComponents={ OriginalVoucherCreationBizApp, OriginalVoucherCreationModel, OriginalVoucherCreationDashboard, - OriginalVoucherCreationPreference, OriginalVoucherCreationModalTable, OriginalVoucherCreationSearch, OriginalVoucherCreationSearchForm, @@ -4156,7 +3914,6 @@ const OOTBComponents={ OriginalVoucherConfirmationBizApp, OriginalVoucherConfirmationModel, OriginalVoucherConfirmationDashboard, - OriginalVoucherConfirmationPreference, OriginalVoucherConfirmationModalTable, OriginalVoucherConfirmationSearch, OriginalVoucherConfirmationSearchForm, @@ -4171,7 +3928,6 @@ const OOTBComponents={ OriginalVoucherAuditingBizApp, OriginalVoucherAuditingModel, OriginalVoucherAuditingDashboard, - OriginalVoucherAuditingPreference, OriginalVoucherAuditingModalTable, OriginalVoucherAuditingSearch, OriginalVoucherAuditingSearchForm, @@ -4186,7 +3942,6 @@ const OOTBComponents={ AccountingDocumentLineBizApp, AccountingDocumentLineModel, AccountingDocumentLineDashboard, - AccountingDocumentLinePreference, AccountingDocumentLineModalTable, AccountingDocumentLineSearch, AccountingDocumentLineSearchForm, @@ -4201,7 +3956,6 @@ const OOTBComponents={ LevelOneDepartmentBizApp, LevelOneDepartmentModel, LevelOneDepartmentDashboard, - LevelOneDepartmentPreference, LevelOneDepartmentModalTable, LevelOneDepartmentSearch, LevelOneDepartmentSearchForm, @@ -4216,7 +3970,6 @@ const OOTBComponents={ LevelTwoDepartmentBizApp, LevelTwoDepartmentModel, LevelTwoDepartmentDashboard, - LevelTwoDepartmentPreference, LevelTwoDepartmentModalTable, LevelTwoDepartmentSearch, LevelTwoDepartmentSearchForm, @@ -4231,7 +3984,6 @@ const OOTBComponents={ LevelThreeDepartmentBizApp, LevelThreeDepartmentModel, LevelThreeDepartmentDashboard, - LevelThreeDepartmentPreference, LevelThreeDepartmentModalTable, LevelThreeDepartmentSearch, LevelThreeDepartmentSearchForm, @@ -4246,7 +3998,6 @@ const OOTBComponents={ SkillTypeBizApp, SkillTypeModel, SkillTypeDashboard, - SkillTypePreference, SkillTypeModalTable, SkillTypeSearch, SkillTypeSearchForm, @@ -4261,7 +4012,6 @@ const OOTBComponents={ ResponsibilityTypeBizApp, ResponsibilityTypeModel, ResponsibilityTypeDashboard, - ResponsibilityTypePreference, ResponsibilityTypeModalTable, ResponsibilityTypeSearch, ResponsibilityTypeSearchForm, @@ -4276,7 +4026,6 @@ const OOTBComponents={ TerminationReasonBizApp, TerminationReasonModel, TerminationReasonDashboard, - TerminationReasonPreference, TerminationReasonModalTable, TerminationReasonSearch, TerminationReasonSearchForm, @@ -4291,7 +4040,6 @@ const OOTBComponents={ TerminationTypeBizApp, TerminationTypeModel, TerminationTypeDashboard, - TerminationTypePreference, TerminationTypeModalTable, TerminationTypeSearch, TerminationTypeSearchForm, @@ -4306,7 +4054,6 @@ const OOTBComponents={ OccupationTypeBizApp, OccupationTypeModel, OccupationTypeDashboard, - OccupationTypePreference, OccupationTypeModalTable, OccupationTypeSearch, OccupationTypeSearchForm, @@ -4321,7 +4068,6 @@ const OOTBComponents={ LeaveTypeBizApp, LeaveTypeModel, LeaveTypeDashboard, - LeaveTypePreference, LeaveTypeModalTable, LeaveTypeSearch, LeaveTypeSearchForm, @@ -4336,7 +4082,6 @@ const OOTBComponents={ SalaryGradeBizApp, SalaryGradeModel, SalaryGradeDashboard, - SalaryGradePreference, SalaryGradeModalTable, SalaryGradeSearch, SalaryGradeSearchForm, @@ -4351,7 +4096,6 @@ const OOTBComponents={ InterviewTypeBizApp, InterviewTypeModel, InterviewTypeDashboard, - InterviewTypePreference, InterviewTypeModalTable, InterviewTypeSearch, InterviewTypeSearchForm, @@ -4366,7 +4110,6 @@ const OOTBComponents={ TrainingCourseTypeBizApp, TrainingCourseTypeModel, TrainingCourseTypeDashboard, - TrainingCourseTypePreference, TrainingCourseTypeModalTable, TrainingCourseTypeSearch, TrainingCourseTypeSearchForm, @@ -4381,7 +4124,6 @@ const OOTBComponents={ PublicHolidayBizApp, PublicHolidayModel, PublicHolidayDashboard, - PublicHolidayPreference, PublicHolidayModalTable, PublicHolidaySearch, PublicHolidaySearchForm, @@ -4396,7 +4138,6 @@ const OOTBComponents={ TerminationBizApp, TerminationModel, TerminationDashboard, - TerminationPreference, TerminationModalTable, TerminationSearch, TerminationSearchForm, @@ -4411,7 +4152,6 @@ const OOTBComponents={ ViewBizApp, ViewModel, ViewDashboard, - ViewPreference, ViewModalTable, ViewSearch, ViewSearchForm, @@ -4426,7 +4166,6 @@ const OOTBComponents={ EmployeeBizApp, EmployeeModel, EmployeeDashboard, - EmployeePreference, EmployeeModalTable, EmployeeSearch, EmployeeSearchForm, @@ -4441,7 +4180,6 @@ const OOTBComponents={ JobApplicationBizApp, JobApplicationModel, JobApplicationDashboard, - JobApplicationPreference, JobApplicationModalTable, JobApplicationSearch, JobApplicationSearchForm, @@ -4456,7 +4194,6 @@ const OOTBComponents={ ProfessionInterviewBizApp, ProfessionInterviewModel, ProfessionInterviewDashboard, - ProfessionInterviewPreference, ProfessionInterviewModalTable, ProfessionInterviewSearch, ProfessionInterviewSearchForm, @@ -4471,7 +4208,6 @@ const OOTBComponents={ HrInterviewBizApp, HrInterviewModel, HrInterviewDashboard, - HrInterviewPreference, HrInterviewModalTable, HrInterviewSearch, HrInterviewSearchForm, @@ -4486,7 +4222,6 @@ const OOTBComponents={ OfferApprovalBizApp, OfferApprovalModel, OfferApprovalDashboard, - OfferApprovalPreference, OfferApprovalModalTable, OfferApprovalSearch, OfferApprovalSearchForm, @@ -4501,7 +4236,6 @@ const OOTBComponents={ OfferAcceptanceBizApp, OfferAcceptanceModel, OfferAcceptanceDashboard, - OfferAcceptancePreference, OfferAcceptanceModalTable, OfferAcceptanceSearch, OfferAcceptanceSearchForm, @@ -4516,7 +4250,6 @@ const OOTBComponents={ EmployeeBoardingBizApp, EmployeeBoardingModel, EmployeeBoardingDashboard, - EmployeeBoardingPreference, EmployeeBoardingModalTable, EmployeeBoardingSearch, EmployeeBoardingSearchForm, @@ -4531,7 +4264,6 @@ const OOTBComponents={ InstructorBizApp, InstructorModel, InstructorDashboard, - InstructorPreference, InstructorModalTable, InstructorSearch, InstructorSearchForm, @@ -4546,7 +4278,6 @@ const OOTBComponents={ CompanyTrainingBizApp, CompanyTrainingModel, CompanyTrainingDashboard, - CompanyTrainingPreference, CompanyTrainingModalTable, CompanyTrainingSearch, CompanyTrainingSearchForm, @@ -4561,7 +4292,6 @@ const OOTBComponents={ ScoringBizApp, ScoringModel, ScoringDashboard, - ScoringPreference, ScoringModalTable, ScoringSearch, ScoringSearchForm, @@ -4576,7 +4306,6 @@ const OOTBComponents={ EmployeeCompanyTrainingBizApp, EmployeeCompanyTrainingModel, EmployeeCompanyTrainingDashboard, - EmployeeCompanyTrainingPreference, EmployeeCompanyTrainingModalTable, EmployeeCompanyTrainingSearch, EmployeeCompanyTrainingSearchForm, @@ -4591,7 +4320,6 @@ const OOTBComponents={ EmployeeSkillBizApp, EmployeeSkillModel, EmployeeSkillDashboard, - EmployeeSkillPreference, EmployeeSkillModalTable, EmployeeSkillSearch, EmployeeSkillSearchForm, @@ -4606,7 +4334,6 @@ const OOTBComponents={ EmployeePerformanceBizApp, EmployeePerformanceModel, EmployeePerformanceDashboard, - EmployeePerformancePreference, EmployeePerformanceModalTable, EmployeePerformanceSearch, EmployeePerformanceSearchForm, @@ -4621,7 +4348,6 @@ const OOTBComponents={ EmployeeWorkExperienceBizApp, EmployeeWorkExperienceModel, EmployeeWorkExperienceDashboard, - EmployeeWorkExperiencePreference, EmployeeWorkExperienceModalTable, EmployeeWorkExperienceSearch, EmployeeWorkExperienceSearchForm, @@ -4636,7 +4362,6 @@ const OOTBComponents={ EmployeeLeaveBizApp, EmployeeLeaveModel, EmployeeLeaveDashboard, - EmployeeLeavePreference, EmployeeLeaveModalTable, EmployeeLeaveSearch, EmployeeLeaveSearchForm, @@ -4651,7 +4376,6 @@ const OOTBComponents={ EmployeeInterviewBizApp, EmployeeInterviewModel, EmployeeInterviewDashboard, - EmployeeInterviewPreference, EmployeeInterviewModalTable, EmployeeInterviewSearch, EmployeeInterviewSearchForm, @@ -4666,7 +4390,6 @@ const OOTBComponents={ EmployeeAttendanceBizApp, EmployeeAttendanceModel, EmployeeAttendanceDashboard, - EmployeeAttendancePreference, EmployeeAttendanceModalTable, EmployeeAttendanceSearch, EmployeeAttendanceSearchForm, @@ -4681,7 +4404,6 @@ const OOTBComponents={ EmployeeQualifierBizApp, EmployeeQualifierModel, EmployeeQualifierDashboard, - EmployeeQualifierPreference, EmployeeQualifierModalTable, EmployeeQualifierSearch, EmployeeQualifierSearchForm, @@ -4696,7 +4418,6 @@ const OOTBComponents={ EmployeeEducationBizApp, EmployeeEducationModel, EmployeeEducationDashboard, - EmployeeEducationPreference, EmployeeEducationModalTable, EmployeeEducationSearch, EmployeeEducationSearchForm, @@ -4711,7 +4432,6 @@ const OOTBComponents={ EmployeeAwardBizApp, EmployeeAwardModel, EmployeeAwardDashboard, - EmployeeAwardPreference, EmployeeAwardModalTable, EmployeeAwardSearch, EmployeeAwardSearchForm, @@ -4726,7 +4446,6 @@ const OOTBComponents={ EmployeeSalarySheetBizApp, EmployeeSalarySheetModel, EmployeeSalarySheetDashboard, - EmployeeSalarySheetPreference, EmployeeSalarySheetModalTable, EmployeeSalarySheetSearch, EmployeeSalarySheetSearchForm, @@ -4741,7 +4460,6 @@ const OOTBComponents={ PayingOffBizApp, PayingOffModel, PayingOffDashboard, - PayingOffPreference, PayingOffModalTable, PayingOffSearch, PayingOffSearchForm, @@ -4756,7 +4474,6 @@ const OOTBComponents={ UserDomainBizApp, UserDomainModel, UserDomainDashboard, - UserDomainPreference, UserDomainModalTable, UserDomainSearch, UserDomainSearchForm, @@ -4771,7 +4488,6 @@ const OOTBComponents={ UserWhiteListBizApp, UserWhiteListModel, UserWhiteListDashboard, - UserWhiteListPreference, UserWhiteListModalTable, UserWhiteListSearch, UserWhiteListSearchForm, @@ -4786,7 +4502,6 @@ const OOTBComponents={ SecUserBizApp, SecUserModel, SecUserDashboard, - SecUserPreference, SecUserModalTable, SecUserSearch, SecUserSearchForm, @@ -4801,7 +4516,6 @@ const OOTBComponents={ SecUserBlockingBizApp, SecUserBlockingModel, SecUserBlockingDashboard, - SecUserBlockingPreference, SecUserBlockingModalTable, SecUserBlockingSearch, SecUserBlockingSearchForm, @@ -4816,7 +4530,6 @@ const OOTBComponents={ UserAppBizApp, UserAppModel, UserAppDashboard, - UserAppPreference, UserAppModalTable, UserAppSearch, UserAppSearchForm, @@ -4831,7 +4544,6 @@ const OOTBComponents={ ListAccessBizApp, ListAccessModel, ListAccessDashboard, - ListAccessPreference, ListAccessModalTable, ListAccessSearch, ListAccessSearchForm, @@ -4846,7 +4558,6 @@ const OOTBComponents={ ObjectAccessBizApp, ObjectAccessModel, ObjectAccessDashboard, - ObjectAccessPreference, ObjectAccessModalTable, ObjectAccessSearch, ObjectAccessSearchForm, @@ -4861,7 +4572,6 @@ const OOTBComponents={ LoginHistoryBizApp, LoginHistoryModel, LoginHistoryDashboard, - LoginHistoryPreference, LoginHistoryModalTable, LoginHistorySearch, LoginHistorySearchForm, diff --git a/bizui/src/bizcomponents/instructor/Instructor.associateform.js b/bizui/src/bizcomponents/instructor/Instructor.associateform.js index 36dae1031..36808db19 100644 --- a/bizui/src/bizcomponents/instructor/Instructor.associateform.js +++ b/bizui/src/bizcomponents/instructor/Instructor.associateform.js @@ -24,7 +24,7 @@ const testValues = { cellPhone: '18699990000', email: 'instructor@gmail.com', introduction: '这是一个长长长长长长长长的介绍', - companyId: 'RSCC000001', + companyId: 'RSCC00000001', } */ diff --git a/bizui/src/bizcomponents/instructor/Instructor.base.js b/bizui/src/bizcomponents/instructor/Instructor.base.js index d8bc59c1a..e7e87a45f 100644 --- a/bizui/src/bizcomponents/instructor/Instructor.base.js +++ b/bizui/src/bizcomponents/instructor/Instructor.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -62,14 +63,16 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({instructor,targetComponent})=>{ +const renderItemOfList=(instructor,targetComponent)=>{ - const {InstructorService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {instructor.id} {instructor.title} {instructor.familyName} @@ -79,8 +82,10 @@ const renderItemOfList=({instructor,targetComponent})=>{ {instructor.introduction} { moment(instructor.lastUpdateTime).format('YYYY-MM-DD')} - {buildTransferModal(instructor,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/instructor/Instructor.createform.js b/bizui/src/bizcomponents/instructor/Instructor.createform.js index 9d566f288..1f6c95d99 100644 --- a/bizui/src/bizcomponents/instructor/Instructor.createform.js +++ b/bizui/src/bizcomponents/instructor/Instructor.createform.js @@ -23,7 +23,7 @@ const testValues = { cellPhone: '18699990000', email: 'instructor@gmail.com', introduction: '这是一个长长长长长长长长的介绍', - companyId: 'RSCC000001', + companyId: 'RSCC00000001', } */ diff --git a/bizui/src/bizcomponents/instructor/Instructor.dashboard.js b/bizui/src/bizcomponents/instructor/Instructor.dashboard.js index c4bc315cd..8ce1f46cc 100644 --- a/bizui/src/bizcomponents/instructor/Instructor.dashboard.js +++ b/bizui/src/bizcomponents/instructor/Instructor.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(instructor)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (instructor) =>defaultSettingListOf(instructor, optionList) const internalLargeTextOf = (instructor) =>{ @@ -129,7 +129,7 @@ class InstructorDashboard extends Component { const cardsData = {cardsName:"讲师",cardsFor: "instructor", cardsSource: this.props.instructor,returnURL,displayName, subItems: [ -{name: 'companyTrainingList', displayName:'公司培训',type:'companyTraining',count:companyTrainingCount,addFunction: true, role: 'companyTraining', metaInfo: companyTrainingListMetaInfo}, +{name: 'companyTrainingList', displayName:'公司培训',type:'companyTraining',count:companyTrainingCount,addFunction: true, role: 'companyTraining', metaInfo: companyTrainingListMetaInfo, renderItem: GlobalComponents.CompanyTrainingBase.renderItemOfList}, ], }; @@ -144,6 +144,8 @@ class InstructorDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/instructor/Instructor.permission.js b/bizui/src/bizcomponents/instructor/Instructor.permission.js index e78057d4b..cf27249a2 100644 --- a/bizui/src/bizcomponents/instructor/Instructor.permission.js +++ b/bizui/src/bizcomponents/instructor/Instructor.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './Instructor.preference.less' +import styles from './Instructor.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/instructor/Instructor.preference.js b/bizui/src/bizcomponents/instructor/Instructor.preference.js deleted file mode 100644 index 5331f8561..000000000 --- a/bizui/src/bizcomponents/instructor/Instructor.preference.js +++ /dev/null @@ -1,355 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './Instructor.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (instructor) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (instructor) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (instructor) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {InstructorService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = InstructorService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (instructor,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=instructor.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_instructor/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (instructor,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(instructor,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (instructor) =>{ - return null -} -const internalRenderExtraFooter = (instructor) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (instructor,targetComponent) =>{ - const userContext = null - return ( - -{instructor.id} -{instructor.title} -{instructor.familyName} -{instructor.givenName} -{instructor.cellPhone} -{instructor.email} -{instructor.introduction} -{ moment(instructor.lastUpdateTime).format('YYYY-MM-DD')} - - {buildTransferModal(instructor,targetComponent)} - - ) - -} - - -const renderPermissionSetting = instructor => { - const {InstructorBase} = GlobalComponents - return - - -} - - -class InstructorPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const instructor = this.props.instructor; - const { id,displayName, companyTrainingCount } = instructor - - - - const cardsData = {cardsName:"讲师",cardsFor: "instructor",cardsSource: instructor, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - instructor: state._instructor, -}))(Form.create()(InstructorPreference)) - diff --git a/bizui/src/bizcomponents/instructor/Instructor.preference.less b/bizui/src/bizcomponents/instructor/Instructor.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/instructor/Instructor.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/instructor/Instructor.profile.js b/bizui/src/bizcomponents/instructor/Instructor.profile.js index 0c76ab36a..d26d7e8be 100644 --- a/bizui/src/bizcomponents/instructor/Instructor.profile.js +++ b/bizui/src/bizcomponents/instructor/Instructor.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './Instructor.preference.less' +import styles from './Instructor.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,22 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (instructor,targetComponent) =>{ - const userContext = null - return ( - -{instructor.id} -{instructor.title} -{instructor.familyName} -{instructor.givenName} -{instructor.cellPhone} -{instructor.email} -{instructor.introduction} -{ moment(instructor.lastUpdateTime).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.InstructorBase.renderItemOfList(item, targetComponents) + } @@ -69,13 +58,14 @@ class InstructorProfile extends Component { const cardsData = {cardsName:"讲师",cardsFor: "instructor",cardsSource: instructor, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -85,7 +75,7 @@ class InstructorProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/interviewtype/InterviewType.associateform.js b/bizui/src/bizcomponents/interviewtype/InterviewType.associateform.js index f75e7bff9..6b6f46cd9 100644 --- a/bizui/src/bizcomponents/interviewtype/InterviewType.associateform.js +++ b/bizui/src/bizcomponents/interviewtype/InterviewType.associateform.js @@ -21,7 +21,7 @@ const testValues = { code: 'INTRVW00', description: '特别情况面试', detailDescription: '故事还得从遥远的古代开始.................................................', - companyId: 'RSCC000001', + companyId: 'RSCC00000001', } */ diff --git a/bizui/src/bizcomponents/interviewtype/InterviewType.base.js b/bizui/src/bizcomponents/interviewtype/InterviewType.base.js index 655856eda..77bf00f9e 100644 --- a/bizui/src/bizcomponents/interviewtype/InterviewType.base.js +++ b/bizui/src/bizcomponents/interviewtype/InterviewType.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -54,21 +55,25 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({interviewType,targetComponent})=>{ +const renderItemOfList=(interviewType,targetComponent)=>{ - const {InterviewTypeService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {interviewType.id} {interviewType.code} {interviewType.description} {interviewType.detailDescription} - {buildTransferModal(interviewType,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/interviewtype/InterviewType.createform.js b/bizui/src/bizcomponents/interviewtype/InterviewType.createform.js index 0fe858fc3..b528cc378 100644 --- a/bizui/src/bizcomponents/interviewtype/InterviewType.createform.js +++ b/bizui/src/bizcomponents/interviewtype/InterviewType.createform.js @@ -20,7 +20,7 @@ const testValues = { code: 'INTRVW00', description: '特别情况面试', detailDescription: '故事还得从遥远的古代开始.................................................', - companyId: 'RSCC000001', + companyId: 'RSCC00000001', } */ diff --git a/bizui/src/bizcomponents/interviewtype/InterviewType.dashboard.js b/bizui/src/bizcomponents/interviewtype/InterviewType.dashboard.js index ae2ffc015..a1260a27c 100644 --- a/bizui/src/bizcomponents/interviewtype/InterviewType.dashboard.js +++ b/bizui/src/bizcomponents/interviewtype/InterviewType.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(interviewType)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (interviewType) =>defaultSettingListOf(interviewType, optionList) const internalLargeTextOf = (interviewType) =>{ @@ -125,7 +125,7 @@ class InterviewTypeDashboard extends Component { const cardsData = {cardsName:"面试类型",cardsFor: "interviewType", cardsSource: this.props.interviewType,returnURL,displayName, subItems: [ -{name: 'employeeInterviewList', displayName:'员工面试',type:'employeeInterview',count:employeeInterviewCount,addFunction: true, role: 'employeeInterview', metaInfo: employeeInterviewListMetaInfo}, +{name: 'employeeInterviewList', displayName:'员工面试',type:'employeeInterview',count:employeeInterviewCount,addFunction: true, role: 'employeeInterview', metaInfo: employeeInterviewListMetaInfo, renderItem: GlobalComponents.EmployeeInterviewBase.renderItemOfList}, ], }; @@ -140,6 +140,8 @@ class InterviewTypeDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/interviewtype/InterviewType.permission.js b/bizui/src/bizcomponents/interviewtype/InterviewType.permission.js index cfd98236c..e09c5d270 100644 --- a/bizui/src/bizcomponents/interviewtype/InterviewType.permission.js +++ b/bizui/src/bizcomponents/interviewtype/InterviewType.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './InterviewType.preference.less' +import styles from './InterviewType.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/interviewtype/InterviewType.preference.js b/bizui/src/bizcomponents/interviewtype/InterviewType.preference.js deleted file mode 100644 index 536fbc76a..000000000 --- a/bizui/src/bizcomponents/interviewtype/InterviewType.preference.js +++ /dev/null @@ -1,351 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './InterviewType.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (interviewType) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (interviewType) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (interviewType) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {InterviewTypeService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = InterviewTypeService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (interviewType,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=interviewType.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_interviewType/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (interviewType,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(interviewType,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (interviewType) =>{ - return null -} -const internalRenderExtraFooter = (interviewType) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (interviewType,targetComponent) =>{ - const userContext = null - return ( - -{interviewType.id} -{interviewType.code} -{interviewType.description} -{interviewType.detailDescription} - - {buildTransferModal(interviewType,targetComponent)} - - ) - -} - - -const renderPermissionSetting = interviewType => { - const {InterviewTypeBase} = GlobalComponents - return - - -} - - -class InterviewTypePreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const interviewType = this.props.interviewType; - const { id,displayName, employeeInterviewCount } = interviewType - - - - const cardsData = {cardsName:"面试类型",cardsFor: "interviewType",cardsSource: interviewType, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - interviewType: state._interviewType, -}))(Form.create()(InterviewTypePreference)) - diff --git a/bizui/src/bizcomponents/interviewtype/InterviewType.preference.less b/bizui/src/bizcomponents/interviewtype/InterviewType.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/interviewtype/InterviewType.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/interviewtype/InterviewType.profile.js b/bizui/src/bizcomponents/interviewtype/InterviewType.profile.js index ee4676062..535d73497 100644 --- a/bizui/src/bizcomponents/interviewtype/InterviewType.profile.js +++ b/bizui/src/bizcomponents/interviewtype/InterviewType.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './InterviewType.preference.less' +import styles from './InterviewType.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,18 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (interviewType,targetComponent) =>{ - const userContext = null - return ( - -{interviewType.id} -{interviewType.code} -{interviewType.description} -{interviewType.detailDescription} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.InterviewTypeBase.renderItemOfList(item, targetComponents) + } @@ -65,13 +58,14 @@ class InterviewTypeProfile extends Component { const cardsData = {cardsName:"面试类型",cardsFor: "interviewType",cardsSource: interviewType, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -81,7 +75,7 @@ class InterviewTypeProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/jobapplication/JobApplication.associateform.js b/bizui/src/bizcomponents/jobapplication/JobApplication.associateform.js index 121eb163f..937e793c3 100644 --- a/bizui/src/bizcomponents/jobapplication/JobApplication.associateform.js +++ b/bizui/src/bizcomponents/jobapplication/JobApplication.associateform.js @@ -18,7 +18,7 @@ const { TextArea } = Input const testValues = {}; /* const testValues = { - applicationTime: '2016-12-27', + applicationTime: '2019-03-01', who: '申请者本人', comments: '我觉得我符合职位要求,请给我一个机会为公司发展做出贡献,谢谢!', } diff --git a/bizui/src/bizcomponents/jobapplication/JobApplication.base.js b/bizui/src/bizcomponents/jobapplication/JobApplication.base.js index 0010733a9..6312be8c8 100644 --- a/bizui/src/bizcomponents/jobapplication/JobApplication.base.js +++ b/bizui/src/bizcomponents/jobapplication/JobApplication.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -52,21 +53,25 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({jobApplication,targetComponent})=>{ +const renderItemOfList=(jobApplication,targetComponent)=>{ - const {JobApplicationService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {jobApplication.id} { moment(jobApplication.applicationTime).format('YYYY-MM-DD')} {jobApplication.who} {jobApplication.comments} - {buildTransferModal(jobApplication,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/jobapplication/JobApplication.createform.js b/bizui/src/bizcomponents/jobapplication/JobApplication.createform.js index 27d74abf5..1a8a12764 100644 --- a/bizui/src/bizcomponents/jobapplication/JobApplication.createform.js +++ b/bizui/src/bizcomponents/jobapplication/JobApplication.createform.js @@ -17,7 +17,7 @@ const { TextArea } = Input const testValues = {}; /* const testValues = { - applicationTime: '2019-02-24', + applicationTime: '2016-07-24', who: '申请者本人', comments: '我觉得我符合职位要求,请给我一个机会为公司发展做出贡献,谢谢!', } diff --git a/bizui/src/bizcomponents/jobapplication/JobApplication.dashboard.js b/bizui/src/bizcomponents/jobapplication/JobApplication.dashboard.js index b68a25c7f..5bb10ae27 100644 --- a/bizui/src/bizcomponents/jobapplication/JobApplication.dashboard.js +++ b/bizui/src/bizcomponents/jobapplication/JobApplication.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(jobApplication)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (jobApplication) =>defaultSettingListOf(jobApplication, optionList) const internalLargeTextOf = (jobApplication) =>{ @@ -125,7 +125,7 @@ class JobApplicationDashboard extends Component { const cardsData = {cardsName:"工作申请",cardsFor: "jobApplication", cardsSource: this.props.jobApplication,returnURL,displayName, subItems: [ -{name: 'employeeList', displayName:'员工',type:'employee',count:employeeCount,addFunction: true, role: 'employee', metaInfo: employeeListMetaInfo}, +{name: 'employeeList', displayName:'员工',type:'employee',count:employeeCount,addFunction: true, role: 'employee', metaInfo: employeeListMetaInfo, renderItem: GlobalComponents.EmployeeBase.renderItemOfList}, ], }; @@ -140,6 +140,8 @@ class JobApplicationDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/jobapplication/JobApplication.permission.js b/bizui/src/bizcomponents/jobapplication/JobApplication.permission.js index 1a94be7eb..3d37c5ac9 100644 --- a/bizui/src/bizcomponents/jobapplication/JobApplication.permission.js +++ b/bizui/src/bizcomponents/jobapplication/JobApplication.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './JobApplication.preference.less' +import styles from './JobApplication.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/jobapplication/JobApplication.preference.js b/bizui/src/bizcomponents/jobapplication/JobApplication.preference.js deleted file mode 100644 index 5b5b886d5..000000000 --- a/bizui/src/bizcomponents/jobapplication/JobApplication.preference.js +++ /dev/null @@ -1,351 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './JobApplication.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (jobApplication) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (jobApplication) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (jobApplication) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {JobApplicationService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = JobApplicationService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (jobApplication,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=jobApplication.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_jobApplication/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (jobApplication,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(jobApplication,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (jobApplication) =>{ - return null -} -const internalRenderExtraFooter = (jobApplication) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (jobApplication,targetComponent) =>{ - const userContext = null - return ( - -{jobApplication.id} -{ moment(jobApplication.applicationTime).format('YYYY-MM-DD')} -{jobApplication.who} -{jobApplication.comments} - - {buildTransferModal(jobApplication,targetComponent)} - - ) - -} - - -const renderPermissionSetting = jobApplication => { - const {JobApplicationBase} = GlobalComponents - return - - -} - - -class JobApplicationPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const jobApplication = this.props.jobApplication; - const { id,displayName, employeeCount } = jobApplication - - - - const cardsData = {cardsName:"工作申请",cardsFor: "jobApplication",cardsSource: jobApplication, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - jobApplication: state._jobApplication, -}))(Form.create()(JobApplicationPreference)) - diff --git a/bizui/src/bizcomponents/jobapplication/JobApplication.preference.less b/bizui/src/bizcomponents/jobapplication/JobApplication.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/jobapplication/JobApplication.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/jobapplication/JobApplication.profile.js b/bizui/src/bizcomponents/jobapplication/JobApplication.profile.js index 5ab366bb5..2ab891663 100644 --- a/bizui/src/bizcomponents/jobapplication/JobApplication.profile.js +++ b/bizui/src/bizcomponents/jobapplication/JobApplication.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './JobApplication.preference.less' +import styles from './JobApplication.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,18 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (jobApplication,targetComponent) =>{ - const userContext = null - return ( - -{jobApplication.id} -{ moment(jobApplication.applicationTime).format('YYYY-MM-DD')} -{jobApplication.who} -{jobApplication.comments} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.JobApplicationBase.renderItemOfList(item, targetComponents) + } @@ -65,13 +58,14 @@ class JobApplicationProfile extends Component { const cardsData = {cardsName:"工作申请",cardsFor: "jobApplication",cardsSource: jobApplication, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -81,7 +75,7 @@ class JobApplicationProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/leavetype/LeaveType.associateform.js b/bizui/src/bizcomponents/leavetype/LeaveType.associateform.js index d5e3e423f..dac9fe074 100644 --- a/bizui/src/bizcomponents/leavetype/LeaveType.associateform.js +++ b/bizui/src/bizcomponents/leavetype/LeaveType.associateform.js @@ -21,7 +21,7 @@ const testValues = { code: 'LT0000', description: '带薪年假', detailDescription: '故事还得从遥远的古代开始.................................................', - companyId: 'RSCC000001', + companyId: 'RSCC00000001', } */ diff --git a/bizui/src/bizcomponents/leavetype/LeaveType.base.js b/bizui/src/bizcomponents/leavetype/LeaveType.base.js index 05afae61c..35013ed88 100644 --- a/bizui/src/bizcomponents/leavetype/LeaveType.base.js +++ b/bizui/src/bizcomponents/leavetype/LeaveType.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -54,21 +55,25 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({leaveType,targetComponent})=>{ +const renderItemOfList=(leaveType,targetComponent)=>{ - const {LeaveTypeService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {leaveType.id} {leaveType.code} {leaveType.description} {leaveType.detailDescription} - {buildTransferModal(leaveType,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/leavetype/LeaveType.createform.js b/bizui/src/bizcomponents/leavetype/LeaveType.createform.js index 517538766..87a2f0ec5 100644 --- a/bizui/src/bizcomponents/leavetype/LeaveType.createform.js +++ b/bizui/src/bizcomponents/leavetype/LeaveType.createform.js @@ -20,7 +20,7 @@ const testValues = { code: 'LT0000', description: '带薪年假', detailDescription: '故事还得从遥远的古代开始.................................................', - companyId: 'RSCC000001', + companyId: 'RSCC00000001', } */ diff --git a/bizui/src/bizcomponents/leavetype/LeaveType.dashboard.js b/bizui/src/bizcomponents/leavetype/LeaveType.dashboard.js index 2becc945e..572cfc3db 100644 --- a/bizui/src/bizcomponents/leavetype/LeaveType.dashboard.js +++ b/bizui/src/bizcomponents/leavetype/LeaveType.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(leaveType)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (leaveType) =>defaultSettingListOf(leaveType, optionList) const internalLargeTextOf = (leaveType) =>{ @@ -125,7 +125,7 @@ class LeaveTypeDashboard extends Component { const cardsData = {cardsName:"请假类型",cardsFor: "leaveType", cardsSource: this.props.leaveType,returnURL,displayName, subItems: [ -{name: 'employeeLeaveList', displayName:'请假记录',type:'employeeLeave',count:employeeLeaveCount,addFunction: true, role: 'employeeLeave', metaInfo: employeeLeaveListMetaInfo}, +{name: 'employeeLeaveList', displayName:'请假记录',type:'employeeLeave',count:employeeLeaveCount,addFunction: true, role: 'employeeLeave', metaInfo: employeeLeaveListMetaInfo, renderItem: GlobalComponents.EmployeeLeaveBase.renderItemOfList}, ], }; @@ -140,6 +140,8 @@ class LeaveTypeDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/leavetype/LeaveType.permission.js b/bizui/src/bizcomponents/leavetype/LeaveType.permission.js index e8cc3fac2..e5465ba3e 100644 --- a/bizui/src/bizcomponents/leavetype/LeaveType.permission.js +++ b/bizui/src/bizcomponents/leavetype/LeaveType.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './LeaveType.preference.less' +import styles from './LeaveType.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/leavetype/LeaveType.preference.js b/bizui/src/bizcomponents/leavetype/LeaveType.preference.js deleted file mode 100644 index 2ff3eb010..000000000 --- a/bizui/src/bizcomponents/leavetype/LeaveType.preference.js +++ /dev/null @@ -1,351 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './LeaveType.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (leaveType) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (leaveType) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (leaveType) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {LeaveTypeService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = LeaveTypeService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (leaveType,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=leaveType.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_leaveType/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (leaveType,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(leaveType,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (leaveType) =>{ - return null -} -const internalRenderExtraFooter = (leaveType) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (leaveType,targetComponent) =>{ - const userContext = null - return ( - -{leaveType.id} -{leaveType.code} -{leaveType.description} -{leaveType.detailDescription} - - {buildTransferModal(leaveType,targetComponent)} - - ) - -} - - -const renderPermissionSetting = leaveType => { - const {LeaveTypeBase} = GlobalComponents - return - - -} - - -class LeaveTypePreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const leaveType = this.props.leaveType; - const { id,displayName, employeeLeaveCount } = leaveType - - - - const cardsData = {cardsName:"请假类型",cardsFor: "leaveType",cardsSource: leaveType, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - leaveType: state._leaveType, -}))(Form.create()(LeaveTypePreference)) - diff --git a/bizui/src/bizcomponents/leavetype/LeaveType.preference.less b/bizui/src/bizcomponents/leavetype/LeaveType.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/leavetype/LeaveType.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/leavetype/LeaveType.profile.js b/bizui/src/bizcomponents/leavetype/LeaveType.profile.js index 2eede4a77..9206efcc3 100644 --- a/bizui/src/bizcomponents/leavetype/LeaveType.profile.js +++ b/bizui/src/bizcomponents/leavetype/LeaveType.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './LeaveType.preference.less' +import styles from './LeaveType.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,18 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (leaveType,targetComponent) =>{ - const userContext = null - return ( - -{leaveType.id} -{leaveType.code} -{leaveType.description} -{leaveType.detailDescription} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.LeaveTypeBase.renderItemOfList(item, targetComponents) + } @@ -65,13 +58,14 @@ class LeaveTypeProfile extends Component { const cardsData = {cardsName:"请假类型",cardsFor: "leaveType",cardsSource: leaveType, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -81,7 +75,7 @@ class LeaveTypeProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.associateform.js b/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.associateform.js index 7d866375b..1b8b2fd78 100644 --- a/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.associateform.js +++ b/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { name: '水果蔬菜', - catalogId: 'C000001', + catalogId: 'C00000001', } */ diff --git a/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.base.js b/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.base.js index 0b069b4c3..a5246db90 100644 --- a/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.base.js +++ b/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -50,25 +51,25 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({levelOneCategory,targetComponent})=>{ +const renderItemOfList=(levelOneCategory,targetComponent)=>{ - const {LevelOneCategoryService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {levelOneCategory.id} {levelOneCategory.catalog==null?appLocaleName(userContext,"NotAssigned"):`${levelOneCategory.catalog.displayName}(${levelOneCategory.catalog.id})`} - - showTransferModel(targetComponent,"目录","catalog",LevelOneCategoryService.requestCandidateCatalog, - LevelOneCategoryService.transferToAnotherCatalog,"anotherCatalogId",levelOneCategory.catalog?levelOneCategory.catalog.id:"")} - style={{fontSize: 20,color:"red"}} /> {levelOneCategory.name} - {buildTransferModal(levelOneCategory,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.createform.js b/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.createform.js index ebdf4da8b..64d086665 100644 --- a/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.createform.js +++ b/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { name: '水果蔬菜', - catalogId: 'C000001', + catalogId: 'C00000001', } */ diff --git a/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.dashboard.js b/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.dashboard.js index 8b676e905..e42a76b28 100644 --- a/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.dashboard.js +++ b/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(levelOneCategory)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (levelOneCategory) =>defaultSettingListOf(levelOneCategory, optionList) const internalLargeTextOf = (levelOneCategory) =>{ @@ -129,7 +129,7 @@ class LevelOneCategoryDashboard extends Component { const cardsData = {cardsName:"一级分类",cardsFor: "levelOneCategory", cardsSource: this.props.levelOneCategory,returnURL,displayName, subItems: [ -{name: 'levelTwoCategoryList', displayName:'二级分类',type:'levelTwoCategory',count:levelTwoCategoryCount,addFunction: true, role: 'levelTwoCategory', metaInfo: levelTwoCategoryListMetaInfo}, +{name: 'levelTwoCategoryList', displayName:'二级分类',type:'levelTwoCategory',count:levelTwoCategoryCount,addFunction: true, role: 'levelTwoCategory', metaInfo: levelTwoCategoryListMetaInfo, renderItem: GlobalComponents.LevelTwoCategoryBase.renderItemOfList}, ], }; @@ -144,6 +144,8 @@ class LevelOneCategoryDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.permission.js b/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.permission.js index e6073b985..b804ea4d4 100644 --- a/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.permission.js +++ b/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './LevelOneCategory.preference.less' +import styles from './LevelOneCategory.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.preference.js b/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.preference.js deleted file mode 100644 index 6fb89f103..000000000 --- a/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.preference.js +++ /dev/null @@ -1,355 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './LevelOneCategory.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (levelOneCategory) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (levelOneCategory) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (levelOneCategory) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {LevelOneCategoryService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = LevelOneCategoryService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (levelOneCategory,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=levelOneCategory.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_levelOneCategory/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (levelOneCategory,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(levelOneCategory,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (levelOneCategory) =>{ - return null -} -const internalRenderExtraFooter = (levelOneCategory) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (levelOneCategory,targetComponent) =>{ - const userContext = null - return ( - -{levelOneCategory.id} -{levelOneCategory.catalog==null?appLocaleName(userContext,"NotAssigned"):levelOneCategory.catalog.displayName} - - showTransferModel(targetComponent,"目录","catalog","requestCandidateCatalog", - "transferToAnotherCatalog","anotherCatalogId",levelOneCategory.catalog?levelOneCategory.catalog.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{levelOneCategory.name} - - {buildTransferModal(levelOneCategory,targetComponent)} - - ) - -} - - -const renderPermissionSetting = levelOneCategory => { - const {LevelOneCategoryBase} = GlobalComponents - return - - -} - - -class LevelOneCategoryPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const levelOneCategory = this.props.levelOneCategory; - const { id,displayName, levelTwoCategoryCount } = levelOneCategory - - - - const cardsData = {cardsName:"一级分类",cardsFor: "levelOneCategory",cardsSource: levelOneCategory, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - levelOneCategory: state._levelOneCategory, -}))(Form.create()(LevelOneCategoryPreference)) - diff --git a/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.preference.less b/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.profile.js b/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.profile.js index 81a2ce714..54fac8cd2 100644 --- a/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.profile.js +++ b/bizui/src/bizcomponents/levelonecategory/LevelOneCategory.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './LevelOneCategory.preference.less' +import styles from './LevelOneCategory.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,16 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (levelOneCategory,targetComponent) =>{ - const userContext = null - return ( - -{levelOneCategory.id} -{levelOneCategory.name} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.LevelOneCategoryBase.renderItemOfList(item, targetComponents) + } @@ -63,13 +58,14 @@ class LevelOneCategoryProfile extends Component { const cardsData = {cardsName:"一级分类",cardsFor: "levelOneCategory",cardsSource: levelOneCategory, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -79,7 +75,7 @@ class LevelOneCategoryProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.associateform.js b/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.associateform.js index 881390750..066e4761d 100644 --- a/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.associateform.js +++ b/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.associateform.js @@ -21,8 +21,8 @@ const testValues = { name: '供应链部', description: '主要执行集团信息系统建设,维护,规划', manager: '刘强', - founded: '2017-05-04', - belongsToId: 'RSCC000001', + founded: '2017-10-21', + belongsToId: 'RSCC00000001', } */ diff --git a/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.base.js b/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.base.js index ea03c7fbb..ce7c57423 100644 --- a/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.base.js +++ b/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -56,22 +57,26 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({levelOneDepartment,targetComponent})=>{ +const renderItemOfList=(levelOneDepartment,targetComponent)=>{ - const {LevelOneDepartmentService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {levelOneDepartment.id} {levelOneDepartment.name} {levelOneDepartment.description} {levelOneDepartment.manager} { moment(levelOneDepartment.founded).format('YYYY-MM-DD')} - {buildTransferModal(levelOneDepartment,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.createform.js b/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.createform.js index e86a47a10..bf62707eb 100644 --- a/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.createform.js +++ b/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.createform.js @@ -20,8 +20,8 @@ const testValues = { name: '供应链部', description: '主要执行集团信息系统建设,维护,规划', manager: '刘强', - founded: '2016-12-05', - belongsToId: 'RSCC000001', + founded: '2019-02-15', + belongsToId: 'RSCC00000001', } */ diff --git a/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.dashboard.js b/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.dashboard.js index 4cd51c13a..de65a4a71 100644 --- a/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.dashboard.js +++ b/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(levelOneDepartment)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (levelOneDepartment) =>defaultSettingListOf(levelOneDepartment, optionList) const internalLargeTextOf = (levelOneDepartment) =>{ @@ -126,7 +126,7 @@ class LevelOneDepartmentDashboard extends Component { const cardsData = {cardsName:"一级部门",cardsFor: "levelOneDepartment", cardsSource: this.props.levelOneDepartment,returnURL,displayName, subItems: [ -{name: 'levelTwoDepartmentList', displayName:'二级部门',type:'levelTwoDepartment',count:levelTwoDepartmentCount,addFunction: true, role: 'levelTwoDepartment', metaInfo: levelTwoDepartmentListMetaInfo}, +{name: 'levelTwoDepartmentList', displayName:'二级部门',type:'levelTwoDepartment',count:levelTwoDepartmentCount,addFunction: true, role: 'levelTwoDepartment', metaInfo: levelTwoDepartmentListMetaInfo, renderItem: GlobalComponents.LevelTwoDepartmentBase.renderItemOfList}, ], }; @@ -141,6 +141,8 @@ class LevelOneDepartmentDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.permission.js b/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.permission.js index dc8524d19..ccff579aa 100644 --- a/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.permission.js +++ b/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './LevelOneDepartment.preference.less' +import styles from './LevelOneDepartment.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.preference.js b/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.preference.js deleted file mode 100644 index 61205cd10..000000000 --- a/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.preference.js +++ /dev/null @@ -1,352 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './LevelOneDepartment.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (levelOneDepartment) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (levelOneDepartment) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (levelOneDepartment) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {LevelOneDepartmentService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = LevelOneDepartmentService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (levelOneDepartment,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=levelOneDepartment.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_levelOneDepartment/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (levelOneDepartment,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(levelOneDepartment,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (levelOneDepartment) =>{ - return null -} -const internalRenderExtraFooter = (levelOneDepartment) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (levelOneDepartment,targetComponent) =>{ - const userContext = null - return ( - -{levelOneDepartment.id} -{levelOneDepartment.name} -{levelOneDepartment.description} -{levelOneDepartment.manager} -{ moment(levelOneDepartment.founded).format('YYYY-MM-DD')} - - {buildTransferModal(levelOneDepartment,targetComponent)} - - ) - -} - - -const renderPermissionSetting = levelOneDepartment => { - const {LevelOneDepartmentBase} = GlobalComponents - return - - -} - - -class LevelOneDepartmentPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const levelOneDepartment = this.props.levelOneDepartment; - const { id,displayName, levelTwoDepartmentCount } = levelOneDepartment - - - - const cardsData = {cardsName:"一级部门",cardsFor: "levelOneDepartment",cardsSource: levelOneDepartment, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - levelOneDepartment: state._levelOneDepartment, -}))(Form.create()(LevelOneDepartmentPreference)) - diff --git a/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.preference.less b/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.profile.js b/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.profile.js index 11c580748..3f6e9329e 100644 --- a/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.profile.js +++ b/bizui/src/bizcomponents/levelonedepartment/LevelOneDepartment.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './LevelOneDepartment.preference.less' +import styles from './LevelOneDepartment.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,19 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (levelOneDepartment,targetComponent) =>{ - const userContext = null - return ( - -{levelOneDepartment.id} -{levelOneDepartment.name} -{levelOneDepartment.description} -{levelOneDepartment.manager} -{ moment(levelOneDepartment.founded).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.LevelOneDepartmentBase.renderItemOfList(item, targetComponents) + } @@ -66,13 +58,14 @@ class LevelOneDepartmentProfile extends Component { const cardsData = {cardsName:"一级部门",cardsFor: "levelOneDepartment",cardsSource: levelOneDepartment, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -82,7 +75,7 @@ class LevelOneDepartmentProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.associateform.js b/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.associateform.js index 963f5795f..83efbf718 100644 --- a/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.associateform.js +++ b/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { name: '水果蔬菜', - parentCategoryId: 'LTC000001', + parentCategoryId: 'LTC00000001', } */ diff --git a/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.base.js b/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.base.js index 5cb7eb33a..e886d0e87 100644 --- a/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.base.js +++ b/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -50,25 +51,25 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({levelThreeCategory,targetComponent})=>{ +const renderItemOfList=(levelThreeCategory,targetComponent)=>{ - const {LevelThreeCategoryService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {levelThreeCategory.id} {levelThreeCategory.parentCategory==null?appLocaleName(userContext,"NotAssigned"):`${levelThreeCategory.parentCategory.displayName}(${levelThreeCategory.parentCategory.id})`} - - showTransferModel(targetComponent,"父类","levelTwoCategory",LevelThreeCategoryService.requestCandidateParentCategory, - LevelThreeCategoryService.transferToAnotherParentCategory,"anotherParentCategoryId",levelThreeCategory.parentCategory?levelThreeCategory.parentCategory.id:"")} - style={{fontSize: 20,color:"red"}} /> {levelThreeCategory.name} - {buildTransferModal(levelThreeCategory,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.createform.js b/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.createform.js index ee036e89e..927a78c6b 100644 --- a/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.createform.js +++ b/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { name: '水果蔬菜', - parentCategoryId: 'LTC000001', + parentCategoryId: 'LTC00000001', } */ diff --git a/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.dashboard.js b/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.dashboard.js index 521837b2d..2227131ca 100644 --- a/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.dashboard.js +++ b/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(levelThreeCategory)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (levelThreeCategory) =>defaultSettingListOf(levelThreeCategory, optionList) const internalLargeTextOf = (levelThreeCategory) =>{ @@ -129,7 +129,7 @@ class LevelThreeCategoryDashboard extends Component { const cardsData = {cardsName:"三级分类",cardsFor: "levelThreeCategory", cardsSource: this.props.levelThreeCategory,returnURL,displayName, subItems: [ -{name: 'productList', displayName:'产品',type:'product',count:productCount,addFunction: true, role: 'product', metaInfo: productListMetaInfo}, +{name: 'productList', displayName:'产品',type:'product',count:productCount,addFunction: true, role: 'product', metaInfo: productListMetaInfo, renderItem: GlobalComponents.ProductBase.renderItemOfList}, ], }; @@ -144,6 +144,8 @@ class LevelThreeCategoryDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.permission.js b/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.permission.js index 1d760946f..5f902edb1 100644 --- a/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.permission.js +++ b/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './LevelThreeCategory.preference.less' +import styles from './LevelThreeCategory.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.preference.js b/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.preference.js deleted file mode 100644 index f600154d6..000000000 --- a/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.preference.js +++ /dev/null @@ -1,355 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './LevelThreeCategory.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (levelThreeCategory) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (levelThreeCategory) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (levelThreeCategory) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {LevelThreeCategoryService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = LevelThreeCategoryService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (levelThreeCategory,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=levelThreeCategory.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_levelThreeCategory/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (levelThreeCategory,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(levelThreeCategory,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (levelThreeCategory) =>{ - return null -} -const internalRenderExtraFooter = (levelThreeCategory) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (levelThreeCategory,targetComponent) =>{ - const userContext = null - return ( - -{levelThreeCategory.id} -{levelThreeCategory.parentCategory==null?appLocaleName(userContext,"NotAssigned"):levelThreeCategory.parentCategory.displayName} - - showTransferModel(targetComponent,"父类","levelTwoCategory","requestCandidateParentCategory", - "transferToAnotherParentCategory","anotherParentCategoryId",levelThreeCategory.parentCategory?levelThreeCategory.parentCategory.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{levelThreeCategory.name} - - {buildTransferModal(levelThreeCategory,targetComponent)} - - ) - -} - - -const renderPermissionSetting = levelThreeCategory => { - const {LevelThreeCategoryBase} = GlobalComponents - return - - -} - - -class LevelThreeCategoryPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const levelThreeCategory = this.props.levelThreeCategory; - const { id,displayName, productCount } = levelThreeCategory - - - - const cardsData = {cardsName:"三级分类",cardsFor: "levelThreeCategory",cardsSource: levelThreeCategory, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - levelThreeCategory: state._levelThreeCategory, -}))(Form.create()(LevelThreeCategoryPreference)) - diff --git a/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.preference.less b/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.profile.js b/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.profile.js index 4f407cb37..5bfec06ec 100644 --- a/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.profile.js +++ b/bizui/src/bizcomponents/levelthreecategory/LevelThreeCategory.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './LevelThreeCategory.preference.less' +import styles from './LevelThreeCategory.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,16 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (levelThreeCategory,targetComponent) =>{ - const userContext = null - return ( - -{levelThreeCategory.id} -{levelThreeCategory.name} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.LevelThreeCategoryBase.renderItemOfList(item, targetComponents) + } @@ -63,13 +58,14 @@ class LevelThreeCategoryProfile extends Component { const cardsData = {cardsName:"三级分类",cardsFor: "levelThreeCategory",cardsSource: levelThreeCategory, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -79,7 +75,7 @@ class LevelThreeCategoryProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.associateform.js b/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.associateform.js index 1e4d0fe55..403379b6b 100644 --- a/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.associateform.js +++ b/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.associateform.js @@ -20,8 +20,8 @@ const testValues = {}; const testValues = { name: '信息系统部大数据清洗组', description: '主要执行集团信息系统建设,维护,规划', - founded: '2018-06-27', - belongsToId: 'LTD000001', + founded: '2017-02-21', + belongsToId: 'LTD00000001', } */ diff --git a/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.base.js b/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.base.js index 644fae10c..edf601840 100644 --- a/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.base.js +++ b/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -54,27 +55,27 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({levelThreeDepartment,targetComponent})=>{ +const renderItemOfList=(levelThreeDepartment,targetComponent)=>{ - const {LevelThreeDepartmentService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {levelThreeDepartment.id} {levelThreeDepartment.belongsTo==null?appLocaleName(userContext,"NotAssigned"):`${levelThreeDepartment.belongsTo.displayName}(${levelThreeDepartment.belongsTo.id})`} - - showTransferModel(targetComponent,"属于","levelTwoDepartment",LevelThreeDepartmentService.requestCandidateBelongsTo, - LevelThreeDepartmentService.transferToAnotherBelongsTo,"anotherBelongsToId",levelThreeDepartment.belongsTo?levelThreeDepartment.belongsTo.id:"")} - style={{fontSize: 20,color:"red"}} /> {levelThreeDepartment.name} {levelThreeDepartment.description} { moment(levelThreeDepartment.founded).format('YYYY-MM-DD')} - {buildTransferModal(levelThreeDepartment,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.createform.js b/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.createform.js index 14c83bb3e..21f5a43e1 100644 --- a/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.createform.js +++ b/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.createform.js @@ -19,8 +19,8 @@ const testValues = {}; const testValues = { name: '信息系统部大数据清洗组', description: '主要执行集团信息系统建设,维护,规划', - founded: '2018-07-30', - belongsToId: 'LTD000001', + founded: '2018-09-08', + belongsToId: 'LTD00000001', } */ diff --git a/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.dashboard.js b/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.dashboard.js index 7b8edf024..594d18dee 100644 --- a/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.dashboard.js +++ b/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(levelThreeDepartment)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (levelThreeDepartment) =>defaultSettingListOf(levelThreeDepartment, optionList) const internalLargeTextOf = (levelThreeDepartment) =>{ @@ -131,7 +131,7 @@ class LevelThreeDepartmentDashboard extends Component { const cardsData = {cardsName:"三级部门",cardsFor: "levelThreeDepartment", cardsSource: this.props.levelThreeDepartment,returnURL,displayName, subItems: [ -{name: 'employeeList', displayName:'员工',type:'employee',count:employeeCount,addFunction: true, role: 'employee', metaInfo: employeeListMetaInfo}, +{name: 'employeeList', displayName:'员工',type:'employee',count:employeeCount,addFunction: true, role: 'employee', metaInfo: employeeListMetaInfo, renderItem: GlobalComponents.EmployeeBase.renderItemOfList}, ], }; @@ -146,6 +146,8 @@ class LevelThreeDepartmentDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.permission.js b/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.permission.js index d8b9a6497..dbf3a35d6 100644 --- a/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.permission.js +++ b/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './LevelThreeDepartment.preference.less' +import styles from './LevelThreeDepartment.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.preference.js b/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.preference.js deleted file mode 100644 index 8ea487937..000000000 --- a/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.preference.js +++ /dev/null @@ -1,357 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './LevelThreeDepartment.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (levelThreeDepartment) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (levelThreeDepartment) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (levelThreeDepartment) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {LevelThreeDepartmentService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = LevelThreeDepartmentService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (levelThreeDepartment,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=levelThreeDepartment.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_levelThreeDepartment/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (levelThreeDepartment,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(levelThreeDepartment,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (levelThreeDepartment) =>{ - return null -} -const internalRenderExtraFooter = (levelThreeDepartment) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (levelThreeDepartment,targetComponent) =>{ - const userContext = null - return ( - -{levelThreeDepartment.id} -{levelThreeDepartment.belongsTo==null?appLocaleName(userContext,"NotAssigned"):levelThreeDepartment.belongsTo.displayName} - - showTransferModel(targetComponent,"属于","levelTwoDepartment","requestCandidateBelongsTo", - "transferToAnotherBelongsTo","anotherBelongsToId",levelThreeDepartment.belongsTo?levelThreeDepartment.belongsTo.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{levelThreeDepartment.name} -{levelThreeDepartment.description} -{ moment(levelThreeDepartment.founded).format('YYYY-MM-DD')} - - {buildTransferModal(levelThreeDepartment,targetComponent)} - - ) - -} - - -const renderPermissionSetting = levelThreeDepartment => { - const {LevelThreeDepartmentBase} = GlobalComponents - return - - -} - - -class LevelThreeDepartmentPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const levelThreeDepartment = this.props.levelThreeDepartment; - const { id,displayName, employeeCount } = levelThreeDepartment - - - - const cardsData = {cardsName:"三级部门",cardsFor: "levelThreeDepartment",cardsSource: levelThreeDepartment, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - levelThreeDepartment: state._levelThreeDepartment, -}))(Form.create()(LevelThreeDepartmentPreference)) - diff --git a/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.preference.less b/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.profile.js b/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.profile.js index 874e4dba2..9d1c80544 100644 --- a/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.profile.js +++ b/bizui/src/bizcomponents/levelthreedepartment/LevelThreeDepartment.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './LevelThreeDepartment.preference.less' +import styles from './LevelThreeDepartment.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,18 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (levelThreeDepartment,targetComponent) =>{ - const userContext = null - return ( - -{levelThreeDepartment.id} -{levelThreeDepartment.name} -{levelThreeDepartment.description} -{ moment(levelThreeDepartment.founded).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.LevelThreeDepartmentBase.renderItemOfList(item, targetComponents) + } @@ -65,13 +58,14 @@ class LevelThreeDepartmentProfile extends Component { const cardsData = {cardsName:"三级部门",cardsFor: "levelThreeDepartment",cardsSource: levelThreeDepartment, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -81,7 +75,7 @@ class LevelThreeDepartmentProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.associateform.js b/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.associateform.js index 524a2b011..e58062c2d 100644 --- a/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.associateform.js +++ b/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { name: '水果蔬菜', - parentCategoryId: 'LOC000001', + parentCategoryId: 'LOC00000001', } */ diff --git a/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.base.js b/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.base.js index 676f0572e..fb2b597e5 100644 --- a/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.base.js +++ b/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -50,25 +51,25 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({levelTwoCategory,targetComponent})=>{ +const renderItemOfList=(levelTwoCategory,targetComponent)=>{ - const {LevelTwoCategoryService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {levelTwoCategory.id} {levelTwoCategory.parentCategory==null?appLocaleName(userContext,"NotAssigned"):`${levelTwoCategory.parentCategory.displayName}(${levelTwoCategory.parentCategory.id})`} - - showTransferModel(targetComponent,"父类","levelOneCategory",LevelTwoCategoryService.requestCandidateParentCategory, - LevelTwoCategoryService.transferToAnotherParentCategory,"anotherParentCategoryId",levelTwoCategory.parentCategory?levelTwoCategory.parentCategory.id:"")} - style={{fontSize: 20,color:"red"}} /> {levelTwoCategory.name} - {buildTransferModal(levelTwoCategory,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.createform.js b/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.createform.js index 2327f1bc4..6d4b3da88 100644 --- a/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.createform.js +++ b/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { name: '水果蔬菜', - parentCategoryId: 'LOC000001', + parentCategoryId: 'LOC00000001', } */ diff --git a/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.dashboard.js b/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.dashboard.js index 60e1bb14a..ccef0b505 100644 --- a/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.dashboard.js +++ b/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(levelTwoCategory)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (levelTwoCategory) =>defaultSettingListOf(levelTwoCategory, optionList) const internalLargeTextOf = (levelTwoCategory) =>{ @@ -129,7 +129,7 @@ class LevelTwoCategoryDashboard extends Component { const cardsData = {cardsName:"二级分类",cardsFor: "levelTwoCategory", cardsSource: this.props.levelTwoCategory,returnURL,displayName, subItems: [ -{name: 'levelThreeCategoryList', displayName:'三级分类',type:'levelThreeCategory',count:levelThreeCategoryCount,addFunction: true, role: 'levelThreeCategory', metaInfo: levelThreeCategoryListMetaInfo}, +{name: 'levelThreeCategoryList', displayName:'三级分类',type:'levelThreeCategory',count:levelThreeCategoryCount,addFunction: true, role: 'levelThreeCategory', metaInfo: levelThreeCategoryListMetaInfo, renderItem: GlobalComponents.LevelThreeCategoryBase.renderItemOfList}, ], }; @@ -144,6 +144,8 @@ class LevelTwoCategoryDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.permission.js b/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.permission.js index f254f1790..62c2c1db7 100644 --- a/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.permission.js +++ b/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './LevelTwoCategory.preference.less' +import styles from './LevelTwoCategory.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.preference.js b/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.preference.js deleted file mode 100644 index c0f08cab9..000000000 --- a/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.preference.js +++ /dev/null @@ -1,355 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './LevelTwoCategory.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (levelTwoCategory) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (levelTwoCategory) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (levelTwoCategory) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {LevelTwoCategoryService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = LevelTwoCategoryService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (levelTwoCategory,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=levelTwoCategory.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_levelTwoCategory/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (levelTwoCategory,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(levelTwoCategory,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (levelTwoCategory) =>{ - return null -} -const internalRenderExtraFooter = (levelTwoCategory) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (levelTwoCategory,targetComponent) =>{ - const userContext = null - return ( - -{levelTwoCategory.id} -{levelTwoCategory.parentCategory==null?appLocaleName(userContext,"NotAssigned"):levelTwoCategory.parentCategory.displayName} - - showTransferModel(targetComponent,"父类","levelOneCategory","requestCandidateParentCategory", - "transferToAnotherParentCategory","anotherParentCategoryId",levelTwoCategory.parentCategory?levelTwoCategory.parentCategory.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{levelTwoCategory.name} - - {buildTransferModal(levelTwoCategory,targetComponent)} - - ) - -} - - -const renderPermissionSetting = levelTwoCategory => { - const {LevelTwoCategoryBase} = GlobalComponents - return - - -} - - -class LevelTwoCategoryPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const levelTwoCategory = this.props.levelTwoCategory; - const { id,displayName, levelThreeCategoryCount } = levelTwoCategory - - - - const cardsData = {cardsName:"二级分类",cardsFor: "levelTwoCategory",cardsSource: levelTwoCategory, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - levelTwoCategory: state._levelTwoCategory, -}))(Form.create()(LevelTwoCategoryPreference)) - diff --git a/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.preference.less b/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.profile.js b/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.profile.js index f152666fc..ea99d5fb9 100644 --- a/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.profile.js +++ b/bizui/src/bizcomponents/leveltwocategory/LevelTwoCategory.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './LevelTwoCategory.preference.less' +import styles from './LevelTwoCategory.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,16 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (levelTwoCategory,targetComponent) =>{ - const userContext = null - return ( - -{levelTwoCategory.id} -{levelTwoCategory.name} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.LevelTwoCategoryBase.renderItemOfList(item, targetComponents) + } @@ -63,13 +58,14 @@ class LevelTwoCategoryProfile extends Component { const cardsData = {cardsName:"二级分类",cardsFor: "levelTwoCategory",cardsSource: levelTwoCategory, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -79,7 +75,7 @@ class LevelTwoCategoryProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.associateform.js b/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.associateform.js index b5622d92b..665446646 100644 --- a/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.associateform.js +++ b/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.associateform.js @@ -20,8 +20,8 @@ const testValues = {}; const testValues = { name: '信息系统部大数据部门', description: '主要执行集团信息系统建设,维护,规划', - founded: '2017-08-23', - belongsToId: 'LOD000001', + founded: '2018-05-22', + belongsToId: 'LOD00000001', } */ diff --git a/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.base.js b/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.base.js index 44741a66c..9a845b58c 100644 --- a/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.base.js +++ b/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -54,27 +55,27 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({levelTwoDepartment,targetComponent})=>{ +const renderItemOfList=(levelTwoDepartment,targetComponent)=>{ - const {LevelTwoDepartmentService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {levelTwoDepartment.id} {levelTwoDepartment.belongsTo==null?appLocaleName(userContext,"NotAssigned"):`${levelTwoDepartment.belongsTo.displayName}(${levelTwoDepartment.belongsTo.id})`} - - showTransferModel(targetComponent,"属于","levelOneDepartment",LevelTwoDepartmentService.requestCandidateBelongsTo, - LevelTwoDepartmentService.transferToAnotherBelongsTo,"anotherBelongsToId",levelTwoDepartment.belongsTo?levelTwoDepartment.belongsTo.id:"")} - style={{fontSize: 20,color:"red"}} /> {levelTwoDepartment.name} {levelTwoDepartment.description} { moment(levelTwoDepartment.founded).format('YYYY-MM-DD')} - {buildTransferModal(levelTwoDepartment,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.createform.js b/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.createform.js index 46363a323..d347114aa 100644 --- a/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.createform.js +++ b/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.createform.js @@ -19,8 +19,8 @@ const testValues = {}; const testValues = { name: '信息系统部大数据部门', description: '主要执行集团信息系统建设,维护,规划', - founded: '2017-01-18', - belongsToId: 'LOD000001', + founded: '2019-04-07', + belongsToId: 'LOD00000001', } */ diff --git a/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.dashboard.js b/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.dashboard.js index 9c8d94e81..f6146b650 100644 --- a/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.dashboard.js +++ b/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(levelTwoDepartment)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (levelTwoDepartment) =>defaultSettingListOf(levelTwoDepartment, optionList) const internalLargeTextOf = (levelTwoDepartment) =>{ @@ -131,7 +131,7 @@ class LevelTwoDepartmentDashboard extends Component { const cardsData = {cardsName:"二级部门",cardsFor: "levelTwoDepartment", cardsSource: this.props.levelTwoDepartment,returnURL,displayName, subItems: [ -{name: 'levelThreeDepartmentList', displayName:'三级部门',type:'levelThreeDepartment',count:levelThreeDepartmentCount,addFunction: true, role: 'levelThreeDepartment', metaInfo: levelThreeDepartmentListMetaInfo}, +{name: 'levelThreeDepartmentList', displayName:'三级部门',type:'levelThreeDepartment',count:levelThreeDepartmentCount,addFunction: true, role: 'levelThreeDepartment', metaInfo: levelThreeDepartmentListMetaInfo, renderItem: GlobalComponents.LevelThreeDepartmentBase.renderItemOfList}, ], }; @@ -146,6 +146,8 @@ class LevelTwoDepartmentDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.permission.js b/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.permission.js index 113c71e15..778d9cfa6 100644 --- a/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.permission.js +++ b/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './LevelTwoDepartment.preference.less' +import styles from './LevelTwoDepartment.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.preference.js b/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.preference.js deleted file mode 100644 index be553c662..000000000 --- a/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.preference.js +++ /dev/null @@ -1,357 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './LevelTwoDepartment.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (levelTwoDepartment) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (levelTwoDepartment) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (levelTwoDepartment) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {LevelTwoDepartmentService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = LevelTwoDepartmentService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (levelTwoDepartment,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=levelTwoDepartment.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_levelTwoDepartment/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (levelTwoDepartment,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(levelTwoDepartment,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (levelTwoDepartment) =>{ - return null -} -const internalRenderExtraFooter = (levelTwoDepartment) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (levelTwoDepartment,targetComponent) =>{ - const userContext = null - return ( - -{levelTwoDepartment.id} -{levelTwoDepartment.belongsTo==null?appLocaleName(userContext,"NotAssigned"):levelTwoDepartment.belongsTo.displayName} - - showTransferModel(targetComponent,"属于","levelOneDepartment","requestCandidateBelongsTo", - "transferToAnotherBelongsTo","anotherBelongsToId",levelTwoDepartment.belongsTo?levelTwoDepartment.belongsTo.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{levelTwoDepartment.name} -{levelTwoDepartment.description} -{ moment(levelTwoDepartment.founded).format('YYYY-MM-DD')} - - {buildTransferModal(levelTwoDepartment,targetComponent)} - - ) - -} - - -const renderPermissionSetting = levelTwoDepartment => { - const {LevelTwoDepartmentBase} = GlobalComponents - return - - -} - - -class LevelTwoDepartmentPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const levelTwoDepartment = this.props.levelTwoDepartment; - const { id,displayName, levelThreeDepartmentCount } = levelTwoDepartment - - - - const cardsData = {cardsName:"二级部门",cardsFor: "levelTwoDepartment",cardsSource: levelTwoDepartment, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - levelTwoDepartment: state._levelTwoDepartment, -}))(Form.create()(LevelTwoDepartmentPreference)) - diff --git a/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.preference.less b/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.profile.js b/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.profile.js index 65050b19e..f1cde84fd 100644 --- a/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.profile.js +++ b/bizui/src/bizcomponents/leveltwodepartment/LevelTwoDepartment.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './LevelTwoDepartment.preference.less' +import styles from './LevelTwoDepartment.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,18 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (levelTwoDepartment,targetComponent) =>{ - const userContext = null - return ( - -{levelTwoDepartment.id} -{levelTwoDepartment.name} -{levelTwoDepartment.description} -{ moment(levelTwoDepartment.founded).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.LevelTwoDepartmentBase.renderItemOfList(item, targetComponents) + } @@ -65,13 +58,14 @@ class LevelTwoDepartmentProfile extends Component { const cardsData = {cardsName:"二级部门",cardsFor: "levelTwoDepartment",cardsSource: levelTwoDepartment, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -81,7 +75,7 @@ class LevelTwoDepartmentProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/listaccess/ListAccess.associateform.js b/bizui/src/bizcomponents/listaccess/ListAccess.associateform.js index 4a4a7421d..df393dee6 100644 --- a/bizui/src/bizcomponents/listaccess/ListAccess.associateform.js +++ b/bizui/src/bizcomponents/listaccess/ListAccess.associateform.js @@ -20,7 +20,7 @@ const testValues = {}; const testValues = { name: '列表', internalName: 'levelOneCategoryList', - appId: 'UA000001', + appId: 'UA00000001', } */ diff --git a/bizui/src/bizcomponents/listaccess/ListAccess.base.js b/bizui/src/bizcomponents/listaccess/ListAccess.base.js index 970c50f94..10c64cff0 100644 --- a/bizui/src/bizcomponents/listaccess/ListAccess.base.js +++ b/bizui/src/bizcomponents/listaccess/ListAccess.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -61,26 +62,26 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({listAccess,targetComponent})=>{ +const renderItemOfList=(listAccess,targetComponent)=>{ - const {ListAccessService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {listAccess.id} {listAccess.name} {listAccess.internalName} {listAccess.app==null?appLocaleName(userContext,"NotAssigned"):`${listAccess.app.displayName}(${listAccess.app.id})`} - - showTransferModel(targetComponent,"应用程序","userApp",ListAccessService.requestCandidateApp, - ListAccessService.transferToAnotherApp,"anotherAppId",listAccess.app?listAccess.app.id:"")} - style={{fontSize: 20,color:"red"}} /> - {buildTransferModal(listAccess,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/listaccess/ListAccess.createform.js b/bizui/src/bizcomponents/listaccess/ListAccess.createform.js index b95a0296e..eec7476eb 100644 --- a/bizui/src/bizcomponents/listaccess/ListAccess.createform.js +++ b/bizui/src/bizcomponents/listaccess/ListAccess.createform.js @@ -19,7 +19,7 @@ const testValues = {}; const testValues = { name: '列表', internalName: 'levelOneCategoryList', - appId: 'UA000001', + appId: 'UA00000001', } */ diff --git a/bizui/src/bizcomponents/listaccess/ListAccess.dashboard.js b/bizui/src/bizcomponents/listaccess/ListAccess.dashboard.js index 58abbbf4d..f23db8798 100644 --- a/bizui/src/bizcomponents/listaccess/ListAccess.dashboard.js +++ b/bizui/src/bizcomponents/listaccess/ListAccess.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -55,6 +54,7 @@ const optionList =(listAccess)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (listAccess) =>defaultSettingListOf(listAccess, optionList) const internalLargeTextOf = (listAccess) =>{ @@ -149,6 +149,8 @@ class ListAccessDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/listaccess/ListAccess.permission.js b/bizui/src/bizcomponents/listaccess/ListAccess.permission.js index 82eaf99d5..cf40dbbc1 100644 --- a/bizui/src/bizcomponents/listaccess/ListAccess.permission.js +++ b/bizui/src/bizcomponents/listaccess/ListAccess.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ListAccess.preference.less' +import styles from './ListAccess.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/listaccess/ListAccess.preference.js b/bizui/src/bizcomponents/listaccess/ListAccess.preference.js deleted file mode 100644 index 78bb37134..000000000 --- a/bizui/src/bizcomponents/listaccess/ListAccess.preference.js +++ /dev/null @@ -1,361 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ListAccess.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (listAccess) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (listAccess) =>{ - const userContext = null - const optionList = [ - {"title":'读权限',"value":listAccess.readPermission,"parameterName":"readPermission"}, - {"title":'创建权限',"value":listAccess.createPermission,"parameterName":"createPermission"}, - {"title":'删除权限',"value":listAccess.deletePermission,"parameterName":"deletePermission"}, - {"title":'更新许可',"value":listAccess.updatePermission,"parameterName":"updatePermission"}, - {"title":'执行权限',"value":listAccess.executionPermission,"parameterName":"executionPermission"}, -] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (listAccess) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {ListAccessService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = ListAccessService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (listAccess,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=listAccess.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_listAccess/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (listAccess,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(listAccess,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (listAccess) =>{ - return null -} -const internalRenderExtraFooter = (listAccess) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (listAccess,targetComponent) =>{ - const userContext = null - return ( - -{listAccess.id} -{listAccess.name} -{listAccess.internalName} -{listAccess.app==null?appLocaleName(userContext,"NotAssigned"):listAccess.app.displayName} - - showTransferModel(targetComponent,"应用程序","userApp","requestCandidateApp", - "transferToAnotherApp","anotherAppId",listAccess.app?listAccess.app.id:"")} - style={{fontSize: 20,color:"red"}} /> - - - {buildTransferModal(listAccess,targetComponent)} - - ) - -} - - -const renderPermissionSetting = listAccess => { - const {ListAccessBase} = GlobalComponents - return - - -} - - -class ListAccessPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const listAccess = this.props.listAccess; - const { id,displayName, } = listAccess - - - - const cardsData = {cardsName:"访问列表",cardsFor: "listAccess",cardsSource: listAccess, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - listAccess: state._listAccess, -}))(Form.create()(ListAccessPreference)) - diff --git a/bizui/src/bizcomponents/listaccess/ListAccess.preference.less b/bizui/src/bizcomponents/listaccess/ListAccess.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/listaccess/ListAccess.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/listaccess/ListAccess.profile.js b/bizui/src/bizcomponents/listaccess/ListAccess.profile.js index cd97c715b..9dd8b5e36 100644 --- a/bizui/src/bizcomponents/listaccess/ListAccess.profile.js +++ b/bizui/src/bizcomponents/listaccess/ListAccess.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ListAccess.preference.less' +import styles from './ListAccess.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,17 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (listAccess,targetComponent) =>{ - const userContext = null - return ( - -{listAccess.id} -{listAccess.name} -{listAccess.internalName} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.ListAccessBase.renderItemOfList(item, targetComponents) + } @@ -64,13 +58,14 @@ class ListAccessProfile extends Component { const cardsData = {cardsName:"访问列表",cardsFor: "listAccess",cardsSource: listAccess, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -80,7 +75,7 @@ class ListAccessProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/loginhistory/LoginHistory.associateform.js b/bizui/src/bizcomponents/loginhistory/LoginHistory.associateform.js index ecd1bc946..5720f9de3 100644 --- a/bizui/src/bizcomponents/loginhistory/LoginHistory.associateform.js +++ b/bizui/src/bizcomponents/loginhistory/LoginHistory.associateform.js @@ -20,7 +20,7 @@ const testValues = {}; const testValues = { fromIp: '192.168.1.1', description: '登陆成功', - secUserId: 'SU000001', + secUserId: 'SU00000001', } */ diff --git a/bizui/src/bizcomponents/loginhistory/LoginHistory.base.js b/bizui/src/bizcomponents/loginhistory/LoginHistory.base.js index b7cf681a9..8b28b34c3 100644 --- a/bizui/src/bizcomponents/loginhistory/LoginHistory.base.js +++ b/bizui/src/bizcomponents/loginhistory/LoginHistory.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -53,27 +54,27 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({loginHistory,targetComponent})=>{ +const renderItemOfList=(loginHistory,targetComponent)=>{ - const {LoginHistoryService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {loginHistory.id} { moment(loginHistory.loginTime).format('YYYY-MM-DD')} {loginHistory.fromIp} {loginHistory.description} {loginHistory.secUser==null?appLocaleName(userContext,"NotAssigned"):`${loginHistory.secUser.displayName}(${loginHistory.secUser.id})`} - - showTransferModel(targetComponent,"SEC的用户","secUser",LoginHistoryService.requestCandidateSecUser, - LoginHistoryService.transferToAnotherSecUser,"anotherSecUserId",loginHistory.secUser?loginHistory.secUser.id:"")} - style={{fontSize: 20,color:"red"}} /> - {buildTransferModal(loginHistory,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/loginhistory/LoginHistory.createform.js b/bizui/src/bizcomponents/loginhistory/LoginHistory.createform.js index 4bc48b23e..634174524 100644 --- a/bizui/src/bizcomponents/loginhistory/LoginHistory.createform.js +++ b/bizui/src/bizcomponents/loginhistory/LoginHistory.createform.js @@ -19,7 +19,7 @@ const testValues = {}; const testValues = { fromIp: '192.168.1.1', description: '登陆成功', - secUserId: 'SU000001', + secUserId: 'SU00000001', } */ diff --git a/bizui/src/bizcomponents/loginhistory/LoginHistory.dashboard.js b/bizui/src/bizcomponents/loginhistory/LoginHistory.dashboard.js index 6647c135c..e0041b8e9 100644 --- a/bizui/src/bizcomponents/loginhistory/LoginHistory.dashboard.js +++ b/bizui/src/bizcomponents/loginhistory/LoginHistory.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(loginHistory)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (loginHistory) =>defaultSettingListOf(loginHistory, optionList) const internalLargeTextOf = (loginHistory) =>{ @@ -145,6 +145,8 @@ class LoginHistoryDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/loginhistory/LoginHistory.permission.js b/bizui/src/bizcomponents/loginhistory/LoginHistory.permission.js index ea4c48fc7..db637c37a 100644 --- a/bizui/src/bizcomponents/loginhistory/LoginHistory.permission.js +++ b/bizui/src/bizcomponents/loginhistory/LoginHistory.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './LoginHistory.preference.less' +import styles from './LoginHistory.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/loginhistory/LoginHistory.preference.js b/bizui/src/bizcomponents/loginhistory/LoginHistory.preference.js deleted file mode 100644 index da5e5a43e..000000000 --- a/bizui/src/bizcomponents/loginhistory/LoginHistory.preference.js +++ /dev/null @@ -1,357 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './LoginHistory.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (loginHistory) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (loginHistory) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (loginHistory) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {LoginHistoryService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = LoginHistoryService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (loginHistory,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=loginHistory.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_loginHistory/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (loginHistory,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(loginHistory,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (loginHistory) =>{ - return null -} -const internalRenderExtraFooter = (loginHistory) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (loginHistory,targetComponent) =>{ - const userContext = null - return ( - -{loginHistory.id} -{ moment(loginHistory.loginTime).format('YYYY-MM-DD')} -{loginHistory.fromIp} -{loginHistory.description} -{loginHistory.secUser==null?appLocaleName(userContext,"NotAssigned"):loginHistory.secUser.displayName} - - showTransferModel(targetComponent,"SEC的用户","secUser","requestCandidateSecUser", - "transferToAnotherSecUser","anotherSecUserId",loginHistory.secUser?loginHistory.secUser.id:"")} - style={{fontSize: 20,color:"red"}} /> - - - {buildTransferModal(loginHistory,targetComponent)} - - ) - -} - - -const renderPermissionSetting = loginHistory => { - const {LoginHistoryBase} = GlobalComponents - return - - -} - - -class LoginHistoryPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const loginHistory = this.props.loginHistory; - const { id,displayName, } = loginHistory - - - - const cardsData = {cardsName:"登录历史",cardsFor: "loginHistory",cardsSource: loginHistory, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - loginHistory: state._loginHistory, -}))(Form.create()(LoginHistoryPreference)) - diff --git a/bizui/src/bizcomponents/loginhistory/LoginHistory.preference.less b/bizui/src/bizcomponents/loginhistory/LoginHistory.preference.less deleted file mode 100644 index 5a407d161..000000000 --- a/bizui/src/bizcomponents/loginhistory/LoginHistory.preference.less +++ /dev/null @@ -1,10 +0,0 @@ -@import "../../common/Preference.tool.less"; - - - - - - - - - diff --git a/bizui/src/bizcomponents/loginhistory/LoginHistory.profile.js b/bizui/src/bizcomponents/loginhistory/LoginHistory.profile.js index c187469dc..b28c1af11 100644 --- a/bizui/src/bizcomponents/loginhistory/LoginHistory.profile.js +++ b/bizui/src/bizcomponents/loginhistory/LoginHistory.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './LoginHistory.preference.less' +import styles from './LoginHistory.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,18 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (loginHistory,targetComponent) =>{ - const userContext = null - return ( - -{loginHistory.id} -{ moment(loginHistory.loginTime).format('YYYY-MM-DD')} -{loginHistory.fromIp} -{loginHistory.description} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.LoginHistoryBase.renderItemOfList(item, targetComponents) + } @@ -65,13 +58,14 @@ class LoginHistoryProfile extends Component { const cardsData = {cardsName:"登录历史",cardsFor: "loginHistory",cardsSource: loginHistory, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -81,7 +75,7 @@ class LoginHistoryProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/loginhistory/LoginHistory.search.js b/bizui/src/bizcomponents/loginhistory/LoginHistory.search.js index 42239031f..f88e103f4 100644 --- a/bizui/src/bizcomponents/loginhistory/LoginHistory.search.js +++ b/bizui/src/bizcomponents/loginhistory/LoginHistory.search.js @@ -39,13 +39,7 @@ const showListActionBar = (targetComponent)=>{ return (
- {hasCreatePermission(metaInfo)&&} - - - {hasUpdatePermission(metaInfo)&&} - - {hasDeletePermission(metaInfo)&&} diff --git a/bizui/src/bizcomponents/loginhistory/LoginHistory.table.js b/bizui/src/bizcomponents/loginhistory/LoginHistory.table.js index 378f45b75..6a8fd9dac 100644 --- a/bizui/src/bizcomponents/loginhistory/LoginHistory.table.js +++ b/bizui/src/bizcomponents/loginhistory/LoginHistory.table.js @@ -88,8 +88,6 @@ class LoginHistoryTable extends PureComponent { { hasReadPermission(metaInfo)&&{appLocaleName(userContext,"View")}} - { hasUpdatePermission(metaInfo)&& } {hasUpdatePermission(metaInfo)&&this.gotoEdit(text, record)}>{appLocaleName(userContext,"Edit")}} - { record.actionList&&record.actionList.map((item)=>(this.executeAction(item,text, record)}>{item.actionName})) @@ -176,7 +174,7 @@ class LoginHistoryTable extends PureComponent { - {appLocaleName(userContext,"Totally")} {count} {appLocaleName(userContext,"Items")}, {appLocaleName(userContext,"PleaseSelectItemtoProceed")} + {appLocaleName(userContext,"Totally")} {count} {appLocaleName(userContext,"Items")} ):( @@ -193,8 +191,6 @@ class LoginHistoryTable extends PureComponent { size="default" rowKey={record => record.id} - rowSelection={rowSelection} - dataSource={data} columns={calcDisplayColumns()} pagination={paginationProps} diff --git a/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.associateform.js b/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.associateform.js index a47cc6b27..ccd6ee7e0 100644 --- a/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.associateform.js +++ b/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.associateform.js @@ -19,8 +19,8 @@ const testValues = {}; /* const testValues = { name: '购买积分', - point: '16', - ownerId: 'RSM000001', + point: '20', + ownerId: 'RSM00000001', } */ diff --git a/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.base.js b/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.base.js index 965a76d44..50e4037c4 100644 --- a/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.base.js +++ b/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -51,26 +52,26 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({memberRewardPoint,targetComponent})=>{ +const renderItemOfList=(memberRewardPoint,targetComponent)=>{ - const {MemberRewardPointService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {memberRewardPoint.id} {memberRewardPoint.name} {memberRewardPoint.point} {memberRewardPoint.owner==null?appLocaleName(userContext,"NotAssigned"):`${memberRewardPoint.owner.displayName}(${memberRewardPoint.owner.id})`} - - showTransferModel(targetComponent,"业主","retailStoreMember",MemberRewardPointService.requestCandidateOwner, - MemberRewardPointService.transferToAnotherOwner,"anotherOwnerId",memberRewardPoint.owner?memberRewardPoint.owner.id:"")} - style={{fontSize: 20,color:"red"}} /> - {buildTransferModal(memberRewardPoint,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.createform.js b/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.createform.js index fa2a645da..8522b165d 100644 --- a/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.createform.js +++ b/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.createform.js @@ -18,8 +18,8 @@ const testValues = {}; /* const testValues = { name: '购买积分', - point: '18', - ownerId: 'RSM000001', + point: '20', + ownerId: 'RSM00000001', } */ diff --git a/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.dashboard.js b/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.dashboard.js index 8d020edec..62bed6f8d 100644 --- a/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.dashboard.js +++ b/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(memberRewardPoint)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (memberRewardPoint) =>defaultSettingListOf(memberRewardPoint, optionList) const internalLargeTextOf = (memberRewardPoint) =>{ @@ -144,6 +144,8 @@ class MemberRewardPointDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.permission.js b/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.permission.js index 4f6834ecd..dc9ddbe3c 100644 --- a/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.permission.js +++ b/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './MemberRewardPoint.preference.less' +import styles from './MemberRewardPoint.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.preference.js b/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.preference.js deleted file mode 100644 index 763466eaf..000000000 --- a/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.preference.js +++ /dev/null @@ -1,356 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './MemberRewardPoint.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (memberRewardPoint) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (memberRewardPoint) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (memberRewardPoint) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {MemberRewardPointService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = MemberRewardPointService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (memberRewardPoint,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=memberRewardPoint.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_memberRewardPoint/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (memberRewardPoint,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(memberRewardPoint,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (memberRewardPoint) =>{ - return null -} -const internalRenderExtraFooter = (memberRewardPoint) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (memberRewardPoint,targetComponent) =>{ - const userContext = null - return ( - -{memberRewardPoint.id} -{memberRewardPoint.name} -{memberRewardPoint.point} -{memberRewardPoint.owner==null?appLocaleName(userContext,"NotAssigned"):memberRewardPoint.owner.displayName} - - showTransferModel(targetComponent,"业主","retailStoreMember","requestCandidateOwner", - "transferToAnotherOwner","anotherOwnerId",memberRewardPoint.owner?memberRewardPoint.owner.id:"")} - style={{fontSize: 20,color:"red"}} /> - - - {buildTransferModal(memberRewardPoint,targetComponent)} - - ) - -} - - -const renderPermissionSetting = memberRewardPoint => { - const {MemberRewardPointBase} = GlobalComponents - return - - -} - - -class MemberRewardPointPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const memberRewardPoint = this.props.memberRewardPoint; - const { id,displayName, } = memberRewardPoint - - - - const cardsData = {cardsName:"会员奖励点",cardsFor: "memberRewardPoint",cardsSource: memberRewardPoint, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - memberRewardPoint: state._memberRewardPoint, -}))(Form.create()(MemberRewardPointPreference)) - diff --git a/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.preference.less b/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.profile.js b/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.profile.js index 8b8426b99..0e44a8fb4 100644 --- a/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.profile.js +++ b/bizui/src/bizcomponents/memberrewardpoint/MemberRewardPoint.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './MemberRewardPoint.preference.less' +import styles from './MemberRewardPoint.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,17 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (memberRewardPoint,targetComponent) =>{ - const userContext = null - return ( - -{memberRewardPoint.id} -{memberRewardPoint.name} -{memberRewardPoint.point} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.MemberRewardPointBase.renderItemOfList(item, targetComponents) + } @@ -64,13 +58,14 @@ class MemberRewardPointProfile extends Component { const cardsData = {cardsName:"会员奖励点",cardsFor: "memberRewardPoint",cardsSource: memberRewardPoint, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -80,7 +75,7 @@ class MemberRewardPointProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.associateform.js b/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.associateform.js index 154392132..96fced0ae 100644 --- a/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.associateform.js +++ b/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.associateform.js @@ -19,8 +19,8 @@ const testValues = {}; /* const testValues = { name: '积分换锅', - point: '17', - ownerId: 'RSM000001', + point: '20', + ownerId: 'RSM00000001', } */ diff --git a/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.base.js b/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.base.js index e15ddb74f..23a5ba77c 100644 --- a/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.base.js +++ b/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -51,26 +52,26 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({memberRewardPointRedemption,targetComponent})=>{ +const renderItemOfList=(memberRewardPointRedemption,targetComponent)=>{ - const {MemberRewardPointRedemptionService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {memberRewardPointRedemption.id} {memberRewardPointRedemption.name} {memberRewardPointRedemption.point} {memberRewardPointRedemption.owner==null?appLocaleName(userContext,"NotAssigned"):`${memberRewardPointRedemption.owner.displayName}(${memberRewardPointRedemption.owner.id})`} - - showTransferModel(targetComponent,"业主","retailStoreMember",MemberRewardPointRedemptionService.requestCandidateOwner, - MemberRewardPointRedemptionService.transferToAnotherOwner,"anotherOwnerId",memberRewardPointRedemption.owner?memberRewardPointRedemption.owner.id:"")} - style={{fontSize: 20,color:"red"}} /> - {buildTransferModal(memberRewardPointRedemption,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.createform.js b/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.createform.js index fcebec277..9f9b9d804 100644 --- a/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.createform.js +++ b/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.createform.js @@ -18,8 +18,8 @@ const testValues = {}; /* const testValues = { name: '积分换锅', - point: '16', - ownerId: 'RSM000001', + point: '18', + ownerId: 'RSM00000001', } */ diff --git a/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.dashboard.js b/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.dashboard.js index c613012e5..b5bc3808e 100644 --- a/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.dashboard.js +++ b/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(memberRewardPointRedemption)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (memberRewardPointRedemption) =>defaultSettingListOf(memberRewardPointRedemption, optionList) const internalLargeTextOf = (memberRewardPointRedemption) =>{ @@ -144,6 +144,8 @@ class MemberRewardPointRedemptionDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.permission.js b/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.permission.js index f8610a49f..dab86cbf1 100644 --- a/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.permission.js +++ b/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './MemberRewardPointRedemption.preference.less' +import styles from './MemberRewardPointRedemption.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.preference.js b/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.preference.js deleted file mode 100644 index f53712760..000000000 --- a/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.preference.js +++ /dev/null @@ -1,356 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './MemberRewardPointRedemption.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (memberRewardPointRedemption) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (memberRewardPointRedemption) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (memberRewardPointRedemption) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {MemberRewardPointRedemptionService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = MemberRewardPointRedemptionService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (memberRewardPointRedemption,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=memberRewardPointRedemption.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_memberRewardPointRedemption/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (memberRewardPointRedemption,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(memberRewardPointRedemption,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (memberRewardPointRedemption) =>{ - return null -} -const internalRenderExtraFooter = (memberRewardPointRedemption) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (memberRewardPointRedemption,targetComponent) =>{ - const userContext = null - return ( - -{memberRewardPointRedemption.id} -{memberRewardPointRedemption.name} -{memberRewardPointRedemption.point} -{memberRewardPointRedemption.owner==null?appLocaleName(userContext,"NotAssigned"):memberRewardPointRedemption.owner.displayName} - - showTransferModel(targetComponent,"业主","retailStoreMember","requestCandidateOwner", - "transferToAnotherOwner","anotherOwnerId",memberRewardPointRedemption.owner?memberRewardPointRedemption.owner.id:"")} - style={{fontSize: 20,color:"red"}} /> - - - {buildTransferModal(memberRewardPointRedemption,targetComponent)} - - ) - -} - - -const renderPermissionSetting = memberRewardPointRedemption => { - const {MemberRewardPointRedemptionBase} = GlobalComponents - return - - -} - - -class MemberRewardPointRedemptionPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const memberRewardPointRedemption = this.props.memberRewardPointRedemption; - const { id,displayName, } = memberRewardPointRedemption - - - - const cardsData = {cardsName:"会员奖励点赎回",cardsFor: "memberRewardPointRedemption",cardsSource: memberRewardPointRedemption, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - memberRewardPointRedemption: state._memberRewardPointRedemption, -}))(Form.create()(MemberRewardPointRedemptionPreference)) - diff --git a/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.preference.less b/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.profile.js b/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.profile.js index 9739c0ec2..b2d3acf78 100644 --- a/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.profile.js +++ b/bizui/src/bizcomponents/memberrewardpointredemption/MemberRewardPointRedemption.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './MemberRewardPointRedemption.preference.less' +import styles from './MemberRewardPointRedemption.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,17 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (memberRewardPointRedemption,targetComponent) =>{ - const userContext = null - return ( - -{memberRewardPointRedemption.id} -{memberRewardPointRedemption.name} -{memberRewardPointRedemption.point} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.MemberRewardPointRedemptionBase.renderItemOfList(item, targetComponents) + } @@ -64,13 +58,14 @@ class MemberRewardPointRedemptionProfile extends Component { const cardsData = {cardsName:"会员奖励点赎回",cardsFor: "memberRewardPointRedemption",cardsSource: memberRewardPointRedemption, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -80,7 +75,7 @@ class MemberRewardPointRedemptionProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/memberwishlist/MemberWishlist.associateform.js b/bizui/src/bizcomponents/memberwishlist/MemberWishlist.associateform.js index 9cb13769c..347b43924 100644 --- a/bizui/src/bizcomponents/memberwishlist/MemberWishlist.associateform.js +++ b/bizui/src/bizcomponents/memberwishlist/MemberWishlist.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { name: '每周购买清单', - ownerId: 'RSM000001', + ownerId: 'RSM00000001', } */ diff --git a/bizui/src/bizcomponents/memberwishlist/MemberWishlist.base.js b/bizui/src/bizcomponents/memberwishlist/MemberWishlist.base.js index 9a314176f..0818cb59a 100644 --- a/bizui/src/bizcomponents/memberwishlist/MemberWishlist.base.js +++ b/bizui/src/bizcomponents/memberwishlist/MemberWishlist.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -50,25 +51,25 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({memberWishlist,targetComponent})=>{ +const renderItemOfList=(memberWishlist,targetComponent)=>{ - const {MemberWishlistService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {memberWishlist.id} {memberWishlist.name} {memberWishlist.owner==null?appLocaleName(userContext,"NotAssigned"):`${memberWishlist.owner.displayName}(${memberWishlist.owner.id})`} - - showTransferModel(targetComponent,"业主","retailStoreMember",MemberWishlistService.requestCandidateOwner, - MemberWishlistService.transferToAnotherOwner,"anotherOwnerId",memberWishlist.owner?memberWishlist.owner.id:"")} - style={{fontSize: 20,color:"red"}} /> - {buildTransferModal(memberWishlist,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/memberwishlist/MemberWishlist.createform.js b/bizui/src/bizcomponents/memberwishlist/MemberWishlist.createform.js index 974750c1a..1c7fe681a 100644 --- a/bizui/src/bizcomponents/memberwishlist/MemberWishlist.createform.js +++ b/bizui/src/bizcomponents/memberwishlist/MemberWishlist.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { name: '每周购买清单', - ownerId: 'RSM000001', + ownerId: 'RSM00000001', } */ diff --git a/bizui/src/bizcomponents/memberwishlist/MemberWishlist.dashboard.js b/bizui/src/bizcomponents/memberwishlist/MemberWishlist.dashboard.js index 3322bf588..ddeb7d00c 100644 --- a/bizui/src/bizcomponents/memberwishlist/MemberWishlist.dashboard.js +++ b/bizui/src/bizcomponents/memberwishlist/MemberWishlist.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(memberWishlist)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (memberWishlist) =>defaultSettingListOf(memberWishlist, optionList) const internalLargeTextOf = (memberWishlist) =>{ @@ -129,7 +129,7 @@ class MemberWishlistDashboard extends Component { const cardsData = {cardsName:"会员收藏",cardsFor: "memberWishlist", cardsSource: this.props.memberWishlist,returnURL,displayName, subItems: [ -{name: 'memberWishlistProductList', displayName:'会员收藏产品',type:'memberWishlistProduct',count:memberWishlistProductCount,addFunction: true, role: 'memberWishlistProduct', metaInfo: memberWishlistProductListMetaInfo}, +{name: 'memberWishlistProductList', displayName:'会员收藏产品',type:'memberWishlistProduct',count:memberWishlistProductCount,addFunction: true, role: 'memberWishlistProduct', metaInfo: memberWishlistProductListMetaInfo, renderItem: GlobalComponents.MemberWishlistProductBase.renderItemOfList}, ], }; @@ -144,6 +144,8 @@ class MemberWishlistDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/memberwishlist/MemberWishlist.permission.js b/bizui/src/bizcomponents/memberwishlist/MemberWishlist.permission.js index bd1586dfe..d6ae0f6ab 100644 --- a/bizui/src/bizcomponents/memberwishlist/MemberWishlist.permission.js +++ b/bizui/src/bizcomponents/memberwishlist/MemberWishlist.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './MemberWishlist.preference.less' +import styles from './MemberWishlist.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/memberwishlist/MemberWishlist.preference.js b/bizui/src/bizcomponents/memberwishlist/MemberWishlist.preference.js deleted file mode 100644 index 361c60fb5..000000000 --- a/bizui/src/bizcomponents/memberwishlist/MemberWishlist.preference.js +++ /dev/null @@ -1,355 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './MemberWishlist.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (memberWishlist) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (memberWishlist) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (memberWishlist) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {MemberWishlistService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = MemberWishlistService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (memberWishlist,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=memberWishlist.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_memberWishlist/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (memberWishlist,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(memberWishlist,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (memberWishlist) =>{ - return null -} -const internalRenderExtraFooter = (memberWishlist) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (memberWishlist,targetComponent) =>{ - const userContext = null - return ( - -{memberWishlist.id} -{memberWishlist.name} -{memberWishlist.owner==null?appLocaleName(userContext,"NotAssigned"):memberWishlist.owner.displayName} - - showTransferModel(targetComponent,"业主","retailStoreMember","requestCandidateOwner", - "transferToAnotherOwner","anotherOwnerId",memberWishlist.owner?memberWishlist.owner.id:"")} - style={{fontSize: 20,color:"red"}} /> - - - {buildTransferModal(memberWishlist,targetComponent)} - - ) - -} - - -const renderPermissionSetting = memberWishlist => { - const {MemberWishlistBase} = GlobalComponents - return - - -} - - -class MemberWishlistPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const memberWishlist = this.props.memberWishlist; - const { id,displayName, memberWishlistProductCount } = memberWishlist - - - - const cardsData = {cardsName:"会员收藏",cardsFor: "memberWishlist",cardsSource: memberWishlist, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - memberWishlist: state._memberWishlist, -}))(Form.create()(MemberWishlistPreference)) - diff --git a/bizui/src/bizcomponents/memberwishlist/MemberWishlist.preference.less b/bizui/src/bizcomponents/memberwishlist/MemberWishlist.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/memberwishlist/MemberWishlist.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/memberwishlist/MemberWishlist.profile.js b/bizui/src/bizcomponents/memberwishlist/MemberWishlist.profile.js index c8a512709..0a80cdb9c 100644 --- a/bizui/src/bizcomponents/memberwishlist/MemberWishlist.profile.js +++ b/bizui/src/bizcomponents/memberwishlist/MemberWishlist.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './MemberWishlist.preference.less' +import styles from './MemberWishlist.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,16 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (memberWishlist,targetComponent) =>{ - const userContext = null - return ( - -{memberWishlist.id} -{memberWishlist.name} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.MemberWishlistBase.renderItemOfList(item, targetComponents) + } @@ -63,13 +58,14 @@ class MemberWishlistProfile extends Component { const cardsData = {cardsName:"会员收藏",cardsFor: "memberWishlist",cardsSource: memberWishlist, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -79,7 +75,7 @@ class MemberWishlistProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.associateform.js b/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.associateform.js index c34534336..a8909471c 100644 --- a/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.associateform.js +++ b/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { name: '农夫山泉', - ownerId: 'MW000001', + ownerId: 'MW00000001', } */ diff --git a/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.base.js b/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.base.js index 548adddfe..155404a3f 100644 --- a/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.base.js +++ b/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -49,25 +50,25 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({memberWishlistProduct,targetComponent})=>{ +const renderItemOfList=(memberWishlistProduct,targetComponent)=>{ - const {MemberWishlistProductService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {memberWishlistProduct.id} {memberWishlistProduct.name} {memberWishlistProduct.owner==null?appLocaleName(userContext,"NotAssigned"):`${memberWishlistProduct.owner.displayName}(${memberWishlistProduct.owner.id})`} - - showTransferModel(targetComponent,"业主","memberWishlist",MemberWishlistProductService.requestCandidateOwner, - MemberWishlistProductService.transferToAnotherOwner,"anotherOwnerId",memberWishlistProduct.owner?memberWishlistProduct.owner.id:"")} - style={{fontSize: 20,color:"red"}} /> - {buildTransferModal(memberWishlistProduct,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.createform.js b/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.createform.js index 1196e1595..241df6dcc 100644 --- a/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.createform.js +++ b/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { name: '农夫山泉', - ownerId: 'MW000001', + ownerId: 'MW00000001', } */ diff --git a/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.dashboard.js b/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.dashboard.js index 1c3f62bc0..6c83704da 100644 --- a/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.dashboard.js +++ b/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(memberWishlistProduct)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (memberWishlistProduct) =>defaultSettingListOf(memberWishlistProduct, optionList) const internalLargeTextOf = (memberWishlistProduct) =>{ @@ -143,6 +143,8 @@ class MemberWishlistProductDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.permission.js b/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.permission.js index f1a369c14..0f4f884f4 100644 --- a/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.permission.js +++ b/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './MemberWishlistProduct.preference.less' +import styles from './MemberWishlistProduct.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.preference.js b/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.preference.js deleted file mode 100644 index 4c9bcb05f..000000000 --- a/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.preference.js +++ /dev/null @@ -1,355 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './MemberWishlistProduct.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (memberWishlistProduct) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (memberWishlistProduct) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (memberWishlistProduct) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {MemberWishlistProductService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = MemberWishlistProductService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (memberWishlistProduct,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=memberWishlistProduct.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_memberWishlistProduct/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (memberWishlistProduct,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(memberWishlistProduct,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (memberWishlistProduct) =>{ - return null -} -const internalRenderExtraFooter = (memberWishlistProduct) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (memberWishlistProduct,targetComponent) =>{ - const userContext = null - return ( - -{memberWishlistProduct.id} -{memberWishlistProduct.name} -{memberWishlistProduct.owner==null?appLocaleName(userContext,"NotAssigned"):memberWishlistProduct.owner.displayName} - - showTransferModel(targetComponent,"业主","memberWishlist","requestCandidateOwner", - "transferToAnotherOwner","anotherOwnerId",memberWishlistProduct.owner?memberWishlistProduct.owner.id:"")} - style={{fontSize: 20,color:"red"}} /> - - - {buildTransferModal(memberWishlistProduct,targetComponent)} - - ) - -} - - -const renderPermissionSetting = memberWishlistProduct => { - const {MemberWishlistProductBase} = GlobalComponents - return - - -} - - -class MemberWishlistProductPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const memberWishlistProduct = this.props.memberWishlistProduct; - const { id,displayName, } = memberWishlistProduct - - - - const cardsData = {cardsName:"会员收藏产品",cardsFor: "memberWishlistProduct",cardsSource: memberWishlistProduct, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - memberWishlistProduct: state._memberWishlistProduct, -}))(Form.create()(MemberWishlistProductPreference)) - diff --git a/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.preference.less b/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.profile.js b/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.profile.js index 1c23b9bcf..a45aecd98 100644 --- a/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.profile.js +++ b/bizui/src/bizcomponents/memberwishlistproduct/MemberWishlistProduct.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './MemberWishlistProduct.preference.less' +import styles from './MemberWishlistProduct.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,16 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (memberWishlistProduct,targetComponent) =>{ - const userContext = null - return ( - -{memberWishlistProduct.id} -{memberWishlistProduct.name} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.MemberWishlistProductBase.renderItemOfList(item, targetComponents) + } @@ -63,13 +58,14 @@ class MemberWishlistProductProfile extends Component { const cardsData = {cardsName:"会员收藏产品",cardsFor: "memberWishlistProduct",cardsSource: memberWishlistProduct, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -79,7 +75,7 @@ class MemberWishlistProductProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/moyi/Moyi.preference.js b/bizui/src/bizcomponents/moyi/Moyi.preference.js deleted file mode 100644 index 3205510ff..000000000 --- a/bizui/src/bizcomponents/moyi/Moyi.preference.js +++ /dev/null @@ -1,344 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './Moyi.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (moyi) =>{ - - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (moyi) =>{ - - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (moyi) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {MoyiService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = MoyiService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:"重新分配<"+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,"城市","city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (moyi,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=moyi.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_moyi/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (moyi,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(moyi,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: '请搜索' }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (moyi) =>{ - return null -} -const internalRenderExtraFooter = (moyi) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 管理 - - {item.addFunction&&( 新增)} - -

-
- ))} -
) -} - -const internalSummaryOf = (moyi,targetComponent) =>{ - - return ( - -{moyi.id} -{moyi.name} -{moyi.description} - - {buildTransferModal(moyi,targetComponent)} - - ) - -} - - -const renderPermissionSetting = moyi => { - const {MoyiBase} = GlobalComponents - return - - -} - - -class MoyiPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"city", - targetLocalName:"城市", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const { id,displayName, } = this.props.moyi - const cardsData = {cardsName:"Moyi",cardsFor: "moyi",cardsSource: this.props.moyi, - subItems: [ - - ], - }; - //下面各个渲染方法都可以定制,只要在每个模型的里面的_features="custom"就可以得到定制的例子 - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - moyi: state._moyi, -}))(Form.create()(MoyiPreference)) - diff --git a/bizui/src/bizcomponents/moyi/Moyi.preference.less b/bizui/src/bizcomponents/moyi/Moyi.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/moyi/Moyi.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/objectaccess/ObjectAccess.associateform.js b/bizui/src/bizcomponents/objectaccess/ObjectAccess.associateform.js index df03b3414..289b9dd51 100644 --- a/bizui/src/bizcomponents/objectaccess/ObjectAccess.associateform.js +++ b/bizui/src/bizcomponents/objectaccess/ObjectAccess.associateform.js @@ -29,7 +29,7 @@ const testValues = { list7: 'catalogList', list8: 'catalogList', list9: 'catalogList', - appId: 'UA000001', + appId: 'UA00000001', } */ diff --git a/bizui/src/bizcomponents/objectaccess/ObjectAccess.base.js b/bizui/src/bizcomponents/objectaccess/ObjectAccess.base.js index 53f1b42c3..c76a0c1bf 100644 --- a/bizui/src/bizcomponents/objectaccess/ObjectAccess.base.js +++ b/bizui/src/bizcomponents/objectaccess/ObjectAccess.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -69,14 +70,16 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({objectAccess,targetComponent})=>{ +const renderItemOfList=(objectAccess,targetComponent)=>{ - const {ObjectAccessService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {objectAccess.id} {objectAccess.name} {objectAccess.objectType} @@ -90,14 +93,12 @@ const renderItemOfList=({objectAccess,targetComponent})=>{ {objectAccess.list8} {objectAccess.list9} {objectAccess.app==null?appLocaleName(userContext,"NotAssigned"):`${objectAccess.app.displayName}(${objectAccess.app.id})`} - - showTransferModel(targetComponent,"应用程序","userApp",ObjectAccessService.requestCandidateApp, - ObjectAccessService.transferToAnotherApp,"anotherAppId",objectAccess.app?objectAccess.app.id:"")} - style={{fontSize: 20,color:"red"}} /> - {buildTransferModal(objectAccess,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/objectaccess/ObjectAccess.createform.js b/bizui/src/bizcomponents/objectaccess/ObjectAccess.createform.js index da0396e29..2171879f8 100644 --- a/bizui/src/bizcomponents/objectaccess/ObjectAccess.createform.js +++ b/bizui/src/bizcomponents/objectaccess/ObjectAccess.createform.js @@ -28,7 +28,7 @@ const testValues = { list7: 'catalogList', list8: 'catalogList', list9: 'catalogList', - appId: 'UA000001', + appId: 'UA00000001', } */ diff --git a/bizui/src/bizcomponents/objectaccess/ObjectAccess.dashboard.js b/bizui/src/bizcomponents/objectaccess/ObjectAccess.dashboard.js index 68c0ad0f2..d740af853 100644 --- a/bizui/src/bizcomponents/objectaccess/ObjectAccess.dashboard.js +++ b/bizui/src/bizcomponents/objectaccess/ObjectAccess.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(objectAccess)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (objectAccess) =>defaultSettingListOf(objectAccess, optionList) const internalLargeTextOf = (objectAccess) =>{ @@ -153,6 +153,8 @@ class ObjectAccessDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/objectaccess/ObjectAccess.permission.js b/bizui/src/bizcomponents/objectaccess/ObjectAccess.permission.js index 0c220fa4b..851eee18f 100644 --- a/bizui/src/bizcomponents/objectaccess/ObjectAccess.permission.js +++ b/bizui/src/bizcomponents/objectaccess/ObjectAccess.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ObjectAccess.preference.less' +import styles from './ObjectAccess.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/objectaccess/ObjectAccess.preference.js b/bizui/src/bizcomponents/objectaccess/ObjectAccess.preference.js deleted file mode 100644 index b39bf9881..000000000 --- a/bizui/src/bizcomponents/objectaccess/ObjectAccess.preference.js +++ /dev/null @@ -1,365 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ObjectAccess.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (objectAccess) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (objectAccess) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (objectAccess) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {ObjectAccessService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = ObjectAccessService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (objectAccess,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=objectAccess.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_objectAccess/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (objectAccess,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(objectAccess,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (objectAccess) =>{ - return null -} -const internalRenderExtraFooter = (objectAccess) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (objectAccess,targetComponent) =>{ - const userContext = null - return ( - -{objectAccess.id} -{objectAccess.name} -{objectAccess.objectType} -{objectAccess.list1} -{objectAccess.list2} -{objectAccess.list3} -{objectAccess.list4} -{objectAccess.list5} -{objectAccess.list6} -{objectAccess.list7} -{objectAccess.list8} -{objectAccess.list9} -{objectAccess.app==null?appLocaleName(userContext,"NotAssigned"):objectAccess.app.displayName} - - showTransferModel(targetComponent,"应用程序","userApp","requestCandidateApp", - "transferToAnotherApp","anotherAppId",objectAccess.app?objectAccess.app.id:"")} - style={{fontSize: 20,color:"red"}} /> - - - {buildTransferModal(objectAccess,targetComponent)} - - ) - -} - - -const renderPermissionSetting = objectAccess => { - const {ObjectAccessBase} = GlobalComponents - return - - -} - - -class ObjectAccessPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const objectAccess = this.props.objectAccess; - const { id,displayName, } = objectAccess - - - - const cardsData = {cardsName:"对象访问",cardsFor: "objectAccess",cardsSource: objectAccess, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - objectAccess: state._objectAccess, -}))(Form.create()(ObjectAccessPreference)) - diff --git a/bizui/src/bizcomponents/objectaccess/ObjectAccess.preference.less b/bizui/src/bizcomponents/objectaccess/ObjectAccess.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/objectaccess/ObjectAccess.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/objectaccess/ObjectAccess.profile.js b/bizui/src/bizcomponents/objectaccess/ObjectAccess.profile.js index 8da2343e1..5e6b3b8db 100644 --- a/bizui/src/bizcomponents/objectaccess/ObjectAccess.profile.js +++ b/bizui/src/bizcomponents/objectaccess/ObjectAccess.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ObjectAccess.preference.less' +import styles from './ObjectAccess.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,26 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (objectAccess,targetComponent) =>{ - const userContext = null - return ( - -{objectAccess.id} -{objectAccess.name} -{objectAccess.objectType} -{objectAccess.list1} -{objectAccess.list2} -{objectAccess.list3} -{objectAccess.list4} -{objectAccess.list5} -{objectAccess.list6} -{objectAccess.list7} -{objectAccess.list8} -{objectAccess.list9} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.ObjectAccessBase.renderItemOfList(item, targetComponents) + } @@ -73,13 +58,14 @@ class ObjectAccessProfile extends Component { const cardsData = {cardsName:"对象访问",cardsFor: "objectAccess",cardsSource: objectAccess, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -89,7 +75,7 @@ class ObjectAccessProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/occupationtype/OccupationType.associateform.js b/bizui/src/bizcomponents/occupationtype/OccupationType.associateform.js index aa1e0c69e..806445179 100644 --- a/bizui/src/bizcomponents/occupationtype/OccupationType.associateform.js +++ b/bizui/src/bizcomponents/occupationtype/OccupationType.associateform.js @@ -21,7 +21,7 @@ const testValues = { code: 'OT0000', description: '需求分析员', detailDescription: '故事还得从遥远的古代开始.................................................', - companyId: 'RSCC000001', + companyId: 'RSCC00000001', } */ diff --git a/bizui/src/bizcomponents/occupationtype/OccupationType.base.js b/bizui/src/bizcomponents/occupationtype/OccupationType.base.js index b993114fb..af471ada4 100644 --- a/bizui/src/bizcomponents/occupationtype/OccupationType.base.js +++ b/bizui/src/bizcomponents/occupationtype/OccupationType.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -54,21 +55,25 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({occupationType,targetComponent})=>{ +const renderItemOfList=(occupationType,targetComponent)=>{ - const {OccupationTypeService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {occupationType.id} {occupationType.code} {occupationType.description} {occupationType.detailDescription} - {buildTransferModal(occupationType,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/occupationtype/OccupationType.createform.js b/bizui/src/bizcomponents/occupationtype/OccupationType.createform.js index d2894f514..dc4f085cc 100644 --- a/bizui/src/bizcomponents/occupationtype/OccupationType.createform.js +++ b/bizui/src/bizcomponents/occupationtype/OccupationType.createform.js @@ -20,7 +20,7 @@ const testValues = { code: 'OT0000', description: '需求分析员', detailDescription: '故事还得从遥远的古代开始.................................................', - companyId: 'RSCC000001', + companyId: 'RSCC00000001', } */ diff --git a/bizui/src/bizcomponents/occupationtype/OccupationType.dashboard.js b/bizui/src/bizcomponents/occupationtype/OccupationType.dashboard.js index c070d70af..5e36de8de 100644 --- a/bizui/src/bizcomponents/occupationtype/OccupationType.dashboard.js +++ b/bizui/src/bizcomponents/occupationtype/OccupationType.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(occupationType)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (occupationType) =>defaultSettingListOf(occupationType, optionList) const internalLargeTextOf = (occupationType) =>{ @@ -125,7 +125,7 @@ class OccupationTypeDashboard extends Component { const cardsData = {cardsName:"职位类型",cardsFor: "occupationType", cardsSource: this.props.occupationType,returnURL,displayName, subItems: [ -{name: 'employeeList', displayName:'员工',type:'employee',count:employeeCount,addFunction: true, role: 'employee', metaInfo: employeeListMetaInfo}, +{name: 'employeeList', displayName:'员工',type:'employee',count:employeeCount,addFunction: true, role: 'employee', metaInfo: employeeListMetaInfo, renderItem: GlobalComponents.EmployeeBase.renderItemOfList}, ], }; @@ -140,6 +140,8 @@ class OccupationTypeDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/occupationtype/OccupationType.permission.js b/bizui/src/bizcomponents/occupationtype/OccupationType.permission.js index bded7feab..d92ec8f71 100644 --- a/bizui/src/bizcomponents/occupationtype/OccupationType.permission.js +++ b/bizui/src/bizcomponents/occupationtype/OccupationType.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './OccupationType.preference.less' +import styles from './OccupationType.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/occupationtype/OccupationType.preference.js b/bizui/src/bizcomponents/occupationtype/OccupationType.preference.js deleted file mode 100644 index a711876e8..000000000 --- a/bizui/src/bizcomponents/occupationtype/OccupationType.preference.js +++ /dev/null @@ -1,351 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './OccupationType.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (occupationType) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (occupationType) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (occupationType) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {OccupationTypeService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = OccupationTypeService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (occupationType,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=occupationType.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_occupationType/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (occupationType,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(occupationType,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (occupationType) =>{ - return null -} -const internalRenderExtraFooter = (occupationType) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (occupationType,targetComponent) =>{ - const userContext = null - return ( - -{occupationType.id} -{occupationType.code} -{occupationType.description} -{occupationType.detailDescription} - - {buildTransferModal(occupationType,targetComponent)} - - ) - -} - - -const renderPermissionSetting = occupationType => { - const {OccupationTypeBase} = GlobalComponents - return - - -} - - -class OccupationTypePreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const occupationType = this.props.occupationType; - const { id,displayName, employeeCount } = occupationType - - - - const cardsData = {cardsName:"职位类型",cardsFor: "occupationType",cardsSource: occupationType, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - occupationType: state._occupationType, -}))(Form.create()(OccupationTypePreference)) - diff --git a/bizui/src/bizcomponents/occupationtype/OccupationType.preference.less b/bizui/src/bizcomponents/occupationtype/OccupationType.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/occupationtype/OccupationType.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/occupationtype/OccupationType.profile.js b/bizui/src/bizcomponents/occupationtype/OccupationType.profile.js index de5f8b905..e4ed875cf 100644 --- a/bizui/src/bizcomponents/occupationtype/OccupationType.profile.js +++ b/bizui/src/bizcomponents/occupationtype/OccupationType.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './OccupationType.preference.less' +import styles from './OccupationType.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,18 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (occupationType,targetComponent) =>{ - const userContext = null - return ( - -{occupationType.id} -{occupationType.code} -{occupationType.description} -{occupationType.detailDescription} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.OccupationTypeBase.renderItemOfList(item, targetComponents) + } @@ -65,13 +58,14 @@ class OccupationTypeProfile extends Component { const cardsData = {cardsName:"职位类型",cardsFor: "occupationType",cardsSource: occupationType, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -81,7 +75,7 @@ class OccupationTypeProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.associateform.js b/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.associateform.js index 74eab04bd..868d3aeb1 100644 --- a/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.associateform.js +++ b/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { who: '申请者', - acceptTime: '2017-12-04', + acceptTime: '2017-08-02', comments: '谢谢,我一个月内上班', } */ diff --git a/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.base.js b/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.base.js index 159dd32d3..cc90d897d 100644 --- a/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.base.js +++ b/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -52,21 +53,25 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({offerAcceptance,targetComponent})=>{ +const renderItemOfList=(offerAcceptance,targetComponent)=>{ - const {OfferAcceptanceService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {offerAcceptance.id} {offerAcceptance.who} { moment(offerAcceptance.acceptTime).format('YYYY-MM-DD')} {offerAcceptance.comments} - {buildTransferModal(offerAcceptance,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.createform.js b/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.createform.js index 97769b6f9..66be90b93 100644 --- a/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.createform.js +++ b/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { who: '申请者', - acceptTime: '2017-12-18', + acceptTime: '2018-05-27', comments: '谢谢,我一个月内上班', } */ diff --git a/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.dashboard.js b/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.dashboard.js index a505e74a1..fe092a060 100644 --- a/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.dashboard.js +++ b/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(offerAcceptance)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (offerAcceptance) =>defaultSettingListOf(offerAcceptance, optionList) const internalLargeTextOf = (offerAcceptance) =>{ @@ -125,7 +125,7 @@ class OfferAcceptanceDashboard extends Component { const cardsData = {cardsName:"接受工作要约",cardsFor: "offerAcceptance", cardsSource: this.props.offerAcceptance,returnURL,displayName, subItems: [ -{name: 'employeeList', displayName:'员工',type:'employee',count:employeeCount,addFunction: true, role: 'employee', metaInfo: employeeListMetaInfo}, +{name: 'employeeList', displayName:'员工',type:'employee',count:employeeCount,addFunction: true, role: 'employee', metaInfo: employeeListMetaInfo, renderItem: GlobalComponents.EmployeeBase.renderItemOfList}, ], }; @@ -140,6 +140,8 @@ class OfferAcceptanceDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.permission.js b/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.permission.js index 285d0e864..7df16d0d5 100644 --- a/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.permission.js +++ b/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './OfferAcceptance.preference.less' +import styles from './OfferAcceptance.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.preference.js b/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.preference.js deleted file mode 100644 index 9931df27a..000000000 --- a/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.preference.js +++ /dev/null @@ -1,351 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './OfferAcceptance.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (offerAcceptance) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (offerAcceptance) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (offerAcceptance) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {OfferAcceptanceService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = OfferAcceptanceService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (offerAcceptance,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=offerAcceptance.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_offerAcceptance/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (offerAcceptance,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(offerAcceptance,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (offerAcceptance) =>{ - return null -} -const internalRenderExtraFooter = (offerAcceptance) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (offerAcceptance,targetComponent) =>{ - const userContext = null - return ( - -{offerAcceptance.id} -{offerAcceptance.who} -{ moment(offerAcceptance.acceptTime).format('YYYY-MM-DD')} -{offerAcceptance.comments} - - {buildTransferModal(offerAcceptance,targetComponent)} - - ) - -} - - -const renderPermissionSetting = offerAcceptance => { - const {OfferAcceptanceBase} = GlobalComponents - return - - -} - - -class OfferAcceptancePreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const offerAcceptance = this.props.offerAcceptance; - const { id,displayName, employeeCount } = offerAcceptance - - - - const cardsData = {cardsName:"接受工作要约",cardsFor: "offerAcceptance",cardsSource: offerAcceptance, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - offerAcceptance: state._offerAcceptance, -}))(Form.create()(OfferAcceptancePreference)) - diff --git a/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.preference.less b/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.profile.js b/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.profile.js index 5e175c004..0909f7d8a 100644 --- a/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.profile.js +++ b/bizui/src/bizcomponents/offeracceptance/OfferAcceptance.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './OfferAcceptance.preference.less' +import styles from './OfferAcceptance.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,18 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (offerAcceptance,targetComponent) =>{ - const userContext = null - return ( - -{offerAcceptance.id} -{offerAcceptance.who} -{ moment(offerAcceptance.acceptTime).format('YYYY-MM-DD')} -{offerAcceptance.comments} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.OfferAcceptanceBase.renderItemOfList(item, targetComponents) + } @@ -65,13 +58,14 @@ class OfferAcceptanceProfile extends Component { const cardsData = {cardsName:"接受工作要约",cardsFor: "offerAcceptance",cardsSource: offerAcceptance, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -81,7 +75,7 @@ class OfferAcceptanceProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/offerapproval/OfferApproval.associateform.js b/bizui/src/bizcomponents/offerapproval/OfferApproval.associateform.js index c6c1414ad..f24834e46 100644 --- a/bizui/src/bizcomponents/offerapproval/OfferApproval.associateform.js +++ b/bizui/src/bizcomponents/offerapproval/OfferApproval.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { who: '总经理', - approveTime: '2016-08-04', + approveTime: '2017-07-27', comments: '该员工发展潜力不错,', } */ diff --git a/bizui/src/bizcomponents/offerapproval/OfferApproval.base.js b/bizui/src/bizcomponents/offerapproval/OfferApproval.base.js index 27352f381..ad2e57890 100644 --- a/bizui/src/bizcomponents/offerapproval/OfferApproval.base.js +++ b/bizui/src/bizcomponents/offerapproval/OfferApproval.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -52,21 +53,25 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({offerApproval,targetComponent})=>{ +const renderItemOfList=(offerApproval,targetComponent)=>{ - const {OfferApprovalService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {offerApproval.id} {offerApproval.who} { moment(offerApproval.approveTime).format('YYYY-MM-DD')} {offerApproval.comments} - {buildTransferModal(offerApproval,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/offerapproval/OfferApproval.createform.js b/bizui/src/bizcomponents/offerapproval/OfferApproval.createform.js index ce64aca39..f945698f8 100644 --- a/bizui/src/bizcomponents/offerapproval/OfferApproval.createform.js +++ b/bizui/src/bizcomponents/offerapproval/OfferApproval.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { who: '总经理', - approveTime: '2016-08-23', + approveTime: '2017-01-15', comments: '该员工发展潜力不错,', } */ diff --git a/bizui/src/bizcomponents/offerapproval/OfferApproval.dashboard.js b/bizui/src/bizcomponents/offerapproval/OfferApproval.dashboard.js index 0f867b748..05fb10d32 100644 --- a/bizui/src/bizcomponents/offerapproval/OfferApproval.dashboard.js +++ b/bizui/src/bizcomponents/offerapproval/OfferApproval.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(offerApproval)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (offerApproval) =>defaultSettingListOf(offerApproval, optionList) const internalLargeTextOf = (offerApproval) =>{ @@ -125,7 +125,7 @@ class OfferApprovalDashboard extends Component { const cardsData = {cardsName:"审批工作要约",cardsFor: "offerApproval", cardsSource: this.props.offerApproval,returnURL,displayName, subItems: [ -{name: 'employeeList', displayName:'员工',type:'employee',count:employeeCount,addFunction: true, role: 'employee', metaInfo: employeeListMetaInfo}, +{name: 'employeeList', displayName:'员工',type:'employee',count:employeeCount,addFunction: true, role: 'employee', metaInfo: employeeListMetaInfo, renderItem: GlobalComponents.EmployeeBase.renderItemOfList}, ], }; @@ -140,6 +140,8 @@ class OfferApprovalDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/offerapproval/OfferApproval.permission.js b/bizui/src/bizcomponents/offerapproval/OfferApproval.permission.js index 1cf99eab1..fa04341ac 100644 --- a/bizui/src/bizcomponents/offerapproval/OfferApproval.permission.js +++ b/bizui/src/bizcomponents/offerapproval/OfferApproval.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './OfferApproval.preference.less' +import styles from './OfferApproval.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/offerapproval/OfferApproval.preference.js b/bizui/src/bizcomponents/offerapproval/OfferApproval.preference.js deleted file mode 100644 index 2ec0ada36..000000000 --- a/bizui/src/bizcomponents/offerapproval/OfferApproval.preference.js +++ /dev/null @@ -1,351 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './OfferApproval.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (offerApproval) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (offerApproval) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (offerApproval) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {OfferApprovalService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = OfferApprovalService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (offerApproval,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=offerApproval.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_offerApproval/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (offerApproval,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(offerApproval,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (offerApproval) =>{ - return null -} -const internalRenderExtraFooter = (offerApproval) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (offerApproval,targetComponent) =>{ - const userContext = null - return ( - -{offerApproval.id} -{offerApproval.who} -{ moment(offerApproval.approveTime).format('YYYY-MM-DD')} -{offerApproval.comments} - - {buildTransferModal(offerApproval,targetComponent)} - - ) - -} - - -const renderPermissionSetting = offerApproval => { - const {OfferApprovalBase} = GlobalComponents - return - - -} - - -class OfferApprovalPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const offerApproval = this.props.offerApproval; - const { id,displayName, employeeCount } = offerApproval - - - - const cardsData = {cardsName:"审批工作要约",cardsFor: "offerApproval",cardsSource: offerApproval, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - offerApproval: state._offerApproval, -}))(Form.create()(OfferApprovalPreference)) - diff --git a/bizui/src/bizcomponents/offerapproval/OfferApproval.preference.less b/bizui/src/bizcomponents/offerapproval/OfferApproval.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/offerapproval/OfferApproval.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/offerapproval/OfferApproval.profile.js b/bizui/src/bizcomponents/offerapproval/OfferApproval.profile.js index 2705ba776..c7bc96e65 100644 --- a/bizui/src/bizcomponents/offerapproval/OfferApproval.profile.js +++ b/bizui/src/bizcomponents/offerapproval/OfferApproval.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './OfferApproval.preference.less' +import styles from './OfferApproval.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,18 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (offerApproval,targetComponent) =>{ - const userContext = null - return ( - -{offerApproval.id} -{offerApproval.who} -{ moment(offerApproval.approveTime).format('YYYY-MM-DD')} -{offerApproval.comments} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.OfferApprovalBase.renderItemOfList(item, targetComponents) + } @@ -65,13 +58,14 @@ class OfferApprovalProfile extends Component { const cardsData = {cardsName:"审批工作要约",cardsFor: "offerApproval",cardsSource: offerApproval, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -81,7 +75,7 @@ class OfferApprovalProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.associateform.js b/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.associateform.js index e99a8b10e..24f294135 100644 --- a/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.associateform.js +++ b/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.associateform.js @@ -22,7 +22,7 @@ const testValues = { madeBy: '李亚青', receivedBy: '本公司', voucherType: '原始凭证', - belongsToId: 'AD000001', + belongsToId: 'AD00000001', } */ diff --git a/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.base.js b/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.base.js index 9adcca730..b430bdf1a 100644 --- a/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.base.js +++ b/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -65,29 +66,29 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({originalVoucher,targetComponent})=>{ +const renderItemOfList=(originalVoucher,targetComponent)=>{ - const {OriginalVoucherService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {originalVoucher.id} {originalVoucher.title} {originalVoucher.madeBy} {originalVoucher.receivedBy} {originalVoucher.voucherType} {originalVoucher.belongsTo==null?appLocaleName(userContext,"NotAssigned"):`${originalVoucher.belongsTo.displayName}(${originalVoucher.belongsTo.id})`} - - showTransferModel(targetComponent,"属于","accountingDocument",OriginalVoucherService.requestCandidateBelongsTo, - OriginalVoucherService.transferToAnotherBelongsTo,"anotherBelongsToId",originalVoucher.belongsTo?originalVoucher.belongsTo.id:"")} - style={{fontSize: 20,color:"red"}} /> {originalVoucher.currentStatus} - {buildTransferModal(originalVoucher,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.createform.js b/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.createform.js index 53e71db78..4ac888ac8 100644 --- a/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.createform.js +++ b/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.createform.js @@ -21,7 +21,7 @@ const testValues = { madeBy: '李亚青', receivedBy: '本公司', voucherType: '原始凭证', - belongsToId: 'AD000001', + belongsToId: 'AD00000001', } */ diff --git a/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.dashboard.js b/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.dashboard.js index 7f8b31301..bc59f2081 100644 --- a/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.dashboard.js +++ b/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -51,6 +50,7 @@ const optionList =(originalVoucher)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (originalVoucher) =>defaultSettingListOf(originalVoucher, optionList) const internalLargeTextOf = (originalVoucher) =>{ @@ -148,6 +148,8 @@ class OriginalVoucherDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.permission.js b/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.permission.js index cc736acff..8e31b62e0 100644 --- a/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.permission.js +++ b/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './OriginalVoucher.preference.less' +import styles from './OriginalVoucher.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.preference.js b/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.preference.js deleted file mode 100644 index be2f5c9b8..000000000 --- a/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.preference.js +++ /dev/null @@ -1,360 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './OriginalVoucher.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (originalVoucher) =>{ - const userContext = null - const imageList = [ - {"title":'凭证图像',"imageLocation":originalVoucher.voucherImage}, -] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (originalVoucher) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (originalVoucher) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {OriginalVoucherService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = OriginalVoucherService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (originalVoucher,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=originalVoucher.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_originalVoucher/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (originalVoucher,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(originalVoucher,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (originalVoucher) =>{ - return null -} -const internalRenderExtraFooter = (originalVoucher) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (originalVoucher,targetComponent) =>{ - const userContext = null - return ( - -{originalVoucher.id} -{originalVoucher.title} -{originalVoucher.madeBy} -{originalVoucher.receivedBy} -{originalVoucher.voucherType} -{originalVoucher.belongsTo==null?appLocaleName(userContext,"NotAssigned"):originalVoucher.belongsTo.displayName} - - showTransferModel(targetComponent,"属于","accountingDocument","requestCandidateBelongsTo", - "transferToAnotherBelongsTo","anotherBelongsToId",originalVoucher.belongsTo?originalVoucher.belongsTo.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{originalVoucher.currentStatus} - - {buildTransferModal(originalVoucher,targetComponent)} - - ) - -} - - -const renderPermissionSetting = originalVoucher => { - const {OriginalVoucherBase} = GlobalComponents - return - - -} - - -class OriginalVoucherPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const originalVoucher = this.props.originalVoucher; - const { id,displayName, } = originalVoucher - - - - const cardsData = {cardsName:"原始凭证",cardsFor: "originalVoucher",cardsSource: originalVoucher, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - originalVoucher: state._originalVoucher, -}))(Form.create()(OriginalVoucherPreference)) - diff --git a/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.preference.less b/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.profile.js b/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.profile.js index 07c196a33..a215d202f 100644 --- a/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.profile.js +++ b/bizui/src/bizcomponents/originalvoucher/OriginalVoucher.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './OriginalVoucher.preference.less' +import styles from './OriginalVoucher.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,20 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (originalVoucher,targetComponent) =>{ - const userContext = null - return ( - -{originalVoucher.id} -{originalVoucher.title} -{originalVoucher.madeBy} -{originalVoucher.receivedBy} -{originalVoucher.voucherType} -{originalVoucher.currentStatus} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.OriginalVoucherBase.renderItemOfList(item, targetComponents) + } @@ -67,13 +58,14 @@ class OriginalVoucherProfile extends Component { const cardsData = {cardsName:"原始凭证",cardsFor: "originalVoucher",cardsSource: originalVoucher, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -83,7 +75,7 @@ class OriginalVoucherProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.associateform.js b/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.associateform.js index fa30140a8..b3ff31c23 100644 --- a/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.associateform.js +++ b/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.associateform.js @@ -20,7 +20,7 @@ const testValues = {}; const testValues = { who: '财务会计', comments: '审核通过,要都审核过了才通过哦', - makeDate: '2019-02-14', + makeDate: '2019-05-01', } */ diff --git a/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.base.js b/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.base.js index 1e97bcc07..2947aad28 100644 --- a/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.base.js +++ b/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -52,21 +53,25 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({originalVoucherAuditing,targetComponent})=>{ +const renderItemOfList=(originalVoucherAuditing,targetComponent)=>{ - const {OriginalVoucherAuditingService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {originalVoucherAuditing.id} {originalVoucherAuditing.who} {originalVoucherAuditing.comments} { moment(originalVoucherAuditing.makeDate).format('YYYY-MM-DD')} - {buildTransferModal(originalVoucherAuditing,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.createform.js b/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.createform.js index 6bee0a152..8a65b81ce 100644 --- a/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.createform.js +++ b/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.createform.js @@ -19,7 +19,7 @@ const testValues = {}; const testValues = { who: '财务会计', comments: '审核通过,要都审核过了才通过哦', - makeDate: '2017-06-10', + makeDate: '2019-05-11', } */ diff --git a/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.dashboard.js b/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.dashboard.js index be6109501..70f4978c4 100644 --- a/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.dashboard.js +++ b/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(originalVoucherAuditing)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (originalVoucherAuditing) =>defaultSettingListOf(originalVoucherAuditing, optionList) const internalLargeTextOf = (originalVoucherAuditing) =>{ @@ -125,7 +125,7 @@ class OriginalVoucherAuditingDashboard extends Component { const cardsData = {cardsName:"原始凭证的审核",cardsFor: "originalVoucherAuditing", cardsSource: this.props.originalVoucherAuditing,returnURL,displayName, subItems: [ -{name: 'originalVoucherList', displayName:'原始凭证',type:'originalVoucher',count:originalVoucherCount,addFunction: true, role: 'originalVoucher', metaInfo: originalVoucherListMetaInfo}, +{name: 'originalVoucherList', displayName:'原始凭证',type:'originalVoucher',count:originalVoucherCount,addFunction: true, role: 'originalVoucher', metaInfo: originalVoucherListMetaInfo, renderItem: GlobalComponents.OriginalVoucherBase.renderItemOfList}, ], }; @@ -140,6 +140,8 @@ class OriginalVoucherAuditingDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.permission.js b/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.permission.js index fb926935b..3546da32d 100644 --- a/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.permission.js +++ b/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './OriginalVoucherAuditing.preference.less' +import styles from './OriginalVoucherAuditing.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.preference.js b/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.preference.js deleted file mode 100644 index 40575bada..000000000 --- a/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.preference.js +++ /dev/null @@ -1,351 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './OriginalVoucherAuditing.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (originalVoucherAuditing) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (originalVoucherAuditing) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (originalVoucherAuditing) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {OriginalVoucherAuditingService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = OriginalVoucherAuditingService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (originalVoucherAuditing,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=originalVoucherAuditing.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_originalVoucherAuditing/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (originalVoucherAuditing,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(originalVoucherAuditing,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (originalVoucherAuditing) =>{ - return null -} -const internalRenderExtraFooter = (originalVoucherAuditing) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (originalVoucherAuditing,targetComponent) =>{ - const userContext = null - return ( - -{originalVoucherAuditing.id} -{originalVoucherAuditing.who} -{originalVoucherAuditing.comments} -{ moment(originalVoucherAuditing.makeDate).format('YYYY-MM-DD')} - - {buildTransferModal(originalVoucherAuditing,targetComponent)} - - ) - -} - - -const renderPermissionSetting = originalVoucherAuditing => { - const {OriginalVoucherAuditingBase} = GlobalComponents - return - - -} - - -class OriginalVoucherAuditingPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const originalVoucherAuditing = this.props.originalVoucherAuditing; - const { id,displayName, originalVoucherCount } = originalVoucherAuditing - - - - const cardsData = {cardsName:"原始凭证的审核",cardsFor: "originalVoucherAuditing",cardsSource: originalVoucherAuditing, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - originalVoucherAuditing: state._originalVoucherAuditing, -}))(Form.create()(OriginalVoucherAuditingPreference)) - diff --git a/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.preference.less b/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.profile.js b/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.profile.js index 599aec566..0f2743f99 100644 --- a/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.profile.js +++ b/bizui/src/bizcomponents/originalvoucherauditing/OriginalVoucherAuditing.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './OriginalVoucherAuditing.preference.less' +import styles from './OriginalVoucherAuditing.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,18 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (originalVoucherAuditing,targetComponent) =>{ - const userContext = null - return ( - -{originalVoucherAuditing.id} -{originalVoucherAuditing.who} -{originalVoucherAuditing.comments} -{ moment(originalVoucherAuditing.makeDate).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.OriginalVoucherAuditingBase.renderItemOfList(item, targetComponents) + } @@ -65,13 +58,14 @@ class OriginalVoucherAuditingProfile extends Component { const cardsData = {cardsName:"原始凭证的审核",cardsFor: "originalVoucherAuditing",cardsSource: originalVoucherAuditing, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -81,7 +75,7 @@ class OriginalVoucherAuditingProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.associateform.js b/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.associateform.js index eb28cfcfd..0b7a87bcb 100644 --- a/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.associateform.js +++ b/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.associateform.js @@ -20,7 +20,7 @@ const testValues = {}; const testValues = { who: '财务会计', comments: '确认通过', - makeDate: '2019-04-28', + makeDate: '2017-10-28', } */ diff --git a/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.base.js b/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.base.js index e31dec9b1..c18c41850 100644 --- a/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.base.js +++ b/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -52,21 +53,25 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({originalVoucherConfirmation,targetComponent})=>{ +const renderItemOfList=(originalVoucherConfirmation,targetComponent)=>{ - const {OriginalVoucherConfirmationService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {originalVoucherConfirmation.id} {originalVoucherConfirmation.who} {originalVoucherConfirmation.comments} { moment(originalVoucherConfirmation.makeDate).format('YYYY-MM-DD')} - {buildTransferModal(originalVoucherConfirmation,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.createform.js b/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.createform.js index 5b6b3fd16..4d9dd6a82 100644 --- a/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.createform.js +++ b/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.createform.js @@ -19,7 +19,7 @@ const testValues = {}; const testValues = { who: '财务会计', comments: '确认通过', - makeDate: '2017-04-27', + makeDate: '2017-07-04', } */ diff --git a/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.dashboard.js b/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.dashboard.js index bb7e4b494..0a0fcc879 100644 --- a/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.dashboard.js +++ b/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(originalVoucherConfirmation)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (originalVoucherConfirmation) =>defaultSettingListOf(originalVoucherConfirmation, optionList) const internalLargeTextOf = (originalVoucherConfirmation) =>{ @@ -125,7 +125,7 @@ class OriginalVoucherConfirmationDashboard extends Component { const cardsData = {cardsName:"原始凭证的确认",cardsFor: "originalVoucherConfirmation", cardsSource: this.props.originalVoucherConfirmation,returnURL,displayName, subItems: [ -{name: 'originalVoucherList', displayName:'原始凭证',type:'originalVoucher',count:originalVoucherCount,addFunction: true, role: 'originalVoucher', metaInfo: originalVoucherListMetaInfo}, +{name: 'originalVoucherList', displayName:'原始凭证',type:'originalVoucher',count:originalVoucherCount,addFunction: true, role: 'originalVoucher', metaInfo: originalVoucherListMetaInfo, renderItem: GlobalComponents.OriginalVoucherBase.renderItemOfList}, ], }; @@ -140,6 +140,8 @@ class OriginalVoucherConfirmationDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.permission.js b/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.permission.js index 8016fe155..b7c3df0af 100644 --- a/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.permission.js +++ b/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './OriginalVoucherConfirmation.preference.less' +import styles from './OriginalVoucherConfirmation.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.preference.js b/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.preference.js deleted file mode 100644 index 39a39f92a..000000000 --- a/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.preference.js +++ /dev/null @@ -1,351 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './OriginalVoucherConfirmation.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (originalVoucherConfirmation) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (originalVoucherConfirmation) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (originalVoucherConfirmation) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {OriginalVoucherConfirmationService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = OriginalVoucherConfirmationService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (originalVoucherConfirmation,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=originalVoucherConfirmation.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_originalVoucherConfirmation/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (originalVoucherConfirmation,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(originalVoucherConfirmation,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (originalVoucherConfirmation) =>{ - return null -} -const internalRenderExtraFooter = (originalVoucherConfirmation) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (originalVoucherConfirmation,targetComponent) =>{ - const userContext = null - return ( - -{originalVoucherConfirmation.id} -{originalVoucherConfirmation.who} -{originalVoucherConfirmation.comments} -{ moment(originalVoucherConfirmation.makeDate).format('YYYY-MM-DD')} - - {buildTransferModal(originalVoucherConfirmation,targetComponent)} - - ) - -} - - -const renderPermissionSetting = originalVoucherConfirmation => { - const {OriginalVoucherConfirmationBase} = GlobalComponents - return - - -} - - -class OriginalVoucherConfirmationPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const originalVoucherConfirmation = this.props.originalVoucherConfirmation; - const { id,displayName, originalVoucherCount } = originalVoucherConfirmation - - - - const cardsData = {cardsName:"原始凭证的确认",cardsFor: "originalVoucherConfirmation",cardsSource: originalVoucherConfirmation, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - originalVoucherConfirmation: state._originalVoucherConfirmation, -}))(Form.create()(OriginalVoucherConfirmationPreference)) - diff --git a/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.preference.less b/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.profile.js b/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.profile.js index 855413d5a..4d19dc809 100644 --- a/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.profile.js +++ b/bizui/src/bizcomponents/originalvoucherconfirmation/OriginalVoucherConfirmation.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './OriginalVoucherConfirmation.preference.less' +import styles from './OriginalVoucherConfirmation.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,18 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (originalVoucherConfirmation,targetComponent) =>{ - const userContext = null - return ( - -{originalVoucherConfirmation.id} -{originalVoucherConfirmation.who} -{originalVoucherConfirmation.comments} -{ moment(originalVoucherConfirmation.makeDate).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.OriginalVoucherConfirmationBase.renderItemOfList(item, targetComponents) + } @@ -65,13 +58,14 @@ class OriginalVoucherConfirmationProfile extends Component { const cardsData = {cardsName:"原始凭证的确认",cardsFor: "originalVoucherConfirmation",cardsSource: originalVoucherConfirmation, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -81,7 +75,7 @@ class OriginalVoucherConfirmationProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.associateform.js b/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.associateform.js index d5a4370b1..bb51036e2 100644 --- a/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.associateform.js +++ b/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.associateform.js @@ -20,7 +20,7 @@ const testValues = {}; const testValues = { who: '财务会计', comments: '确认提交', - makeDate: '2016-10-21', + makeDate: '2016-10-02', } */ diff --git a/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.base.js b/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.base.js index 7254b6199..0664b028a 100644 --- a/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.base.js +++ b/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -52,21 +53,25 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({originalVoucherCreation,targetComponent})=>{ +const renderItemOfList=(originalVoucherCreation,targetComponent)=>{ - const {OriginalVoucherCreationService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {originalVoucherCreation.id} {originalVoucherCreation.who} {originalVoucherCreation.comments} { moment(originalVoucherCreation.makeDate).format('YYYY-MM-DD')} - {buildTransferModal(originalVoucherCreation,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.createform.js b/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.createform.js index 632ce94ba..c230e815a 100644 --- a/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.createform.js +++ b/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.createform.js @@ -19,7 +19,7 @@ const testValues = {}; const testValues = { who: '财务会计', comments: '确认提交', - makeDate: '2016-05-27', + makeDate: '2018-12-09', } */ diff --git a/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.dashboard.js b/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.dashboard.js index 084070e09..4bca2ea43 100644 --- a/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.dashboard.js +++ b/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(originalVoucherCreation)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (originalVoucherCreation) =>defaultSettingListOf(originalVoucherCreation, optionList) const internalLargeTextOf = (originalVoucherCreation) =>{ @@ -125,7 +125,7 @@ class OriginalVoucherCreationDashboard extends Component { const cardsData = {cardsName:"原始凭证制作",cardsFor: "originalVoucherCreation", cardsSource: this.props.originalVoucherCreation,returnURL,displayName, subItems: [ -{name: 'originalVoucherList', displayName:'原始凭证',type:'originalVoucher',count:originalVoucherCount,addFunction: true, role: 'originalVoucher', metaInfo: originalVoucherListMetaInfo}, +{name: 'originalVoucherList', displayName:'原始凭证',type:'originalVoucher',count:originalVoucherCount,addFunction: true, role: 'originalVoucher', metaInfo: originalVoucherListMetaInfo, renderItem: GlobalComponents.OriginalVoucherBase.renderItemOfList}, ], }; @@ -140,6 +140,8 @@ class OriginalVoucherCreationDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.permission.js b/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.permission.js index a2d8e82a7..4e9eb0522 100644 --- a/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.permission.js +++ b/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './OriginalVoucherCreation.preference.less' +import styles from './OriginalVoucherCreation.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.preference.js b/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.preference.js deleted file mode 100644 index 090300edd..000000000 --- a/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.preference.js +++ /dev/null @@ -1,351 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './OriginalVoucherCreation.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (originalVoucherCreation) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (originalVoucherCreation) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (originalVoucherCreation) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {OriginalVoucherCreationService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = OriginalVoucherCreationService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (originalVoucherCreation,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=originalVoucherCreation.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_originalVoucherCreation/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (originalVoucherCreation,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(originalVoucherCreation,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (originalVoucherCreation) =>{ - return null -} -const internalRenderExtraFooter = (originalVoucherCreation) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (originalVoucherCreation,targetComponent) =>{ - const userContext = null - return ( - -{originalVoucherCreation.id} -{originalVoucherCreation.who} -{originalVoucherCreation.comments} -{ moment(originalVoucherCreation.makeDate).format('YYYY-MM-DD')} - - {buildTransferModal(originalVoucherCreation,targetComponent)} - - ) - -} - - -const renderPermissionSetting = originalVoucherCreation => { - const {OriginalVoucherCreationBase} = GlobalComponents - return - - -} - - -class OriginalVoucherCreationPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const originalVoucherCreation = this.props.originalVoucherCreation; - const { id,displayName, originalVoucherCount } = originalVoucherCreation - - - - const cardsData = {cardsName:"原始凭证制作",cardsFor: "originalVoucherCreation",cardsSource: originalVoucherCreation, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - originalVoucherCreation: state._originalVoucherCreation, -}))(Form.create()(OriginalVoucherCreationPreference)) - diff --git a/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.preference.less b/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.profile.js b/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.profile.js index 02ddc9641..801305fa1 100644 --- a/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.profile.js +++ b/bizui/src/bizcomponents/originalvouchercreation/OriginalVoucherCreation.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './OriginalVoucherCreation.preference.less' +import styles from './OriginalVoucherCreation.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,18 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (originalVoucherCreation,targetComponent) =>{ - const userContext = null - return ( - -{originalVoucherCreation.id} -{originalVoucherCreation.who} -{originalVoucherCreation.comments} -{ moment(originalVoucherCreation.makeDate).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.OriginalVoucherCreationBase.renderItemOfList(item, targetComponents) + } @@ -65,13 +58,14 @@ class OriginalVoucherCreationProfile extends Component { const cardsData = {cardsName:"原始凭证制作",cardsFor: "originalVoucherCreation",cardsSource: originalVoucherCreation, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -81,7 +75,7 @@ class OriginalVoucherCreationProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/payingoff/PayingOff.associateform.js b/bizui/src/bizcomponents/payingoff/PayingOff.associateform.js index 8902204a2..846173382 100644 --- a/bizui/src/bizcomponents/payingoff/PayingOff.associateform.js +++ b/bizui/src/bizcomponents/payingoff/PayingOff.associateform.js @@ -19,9 +19,9 @@ const testValues = {}; /* const testValues = { who: '出纳', - paidTime: '2017-10-22', - amount: '4468.90', - paidForId: 'E000001', + paidTime: '2019-03-11', + amount: '4899.68', + paidForId: 'E00000001', } */ diff --git a/bizui/src/bizcomponents/payingoff/PayingOff.base.js b/bizui/src/bizcomponents/payingoff/PayingOff.base.js index 8cd951d77..8abe07757 100644 --- a/bizui/src/bizcomponents/payingoff/PayingOff.base.js +++ b/bizui/src/bizcomponents/payingoff/PayingOff.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -54,27 +55,27 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({payingOff,targetComponent})=>{ +const renderItemOfList=(payingOff,targetComponent)=>{ - const {PayingOffService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {payingOff.id} {payingOff.who} {payingOff.paidFor==null?appLocaleName(userContext,"NotAssigned"):`${payingOff.paidFor.displayName}(${payingOff.paidFor.id})`} - - showTransferModel(targetComponent,"支付","employee",PayingOffService.requestCandidatePaidFor, - PayingOffService.transferToAnotherPaidFor,"anotherPaidForId",payingOff.paidFor?payingOff.paidFor.id:"")} - style={{fontSize: 20,color:"red"}} /> { moment(payingOff.paidTime).format('YYYY-MM-DD')} {payingOff.amount} - {buildTransferModal(payingOff,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/payingoff/PayingOff.createform.js b/bizui/src/bizcomponents/payingoff/PayingOff.createform.js index 242cc1c69..44b5f63c6 100644 --- a/bizui/src/bizcomponents/payingoff/PayingOff.createform.js +++ b/bizui/src/bizcomponents/payingoff/PayingOff.createform.js @@ -18,9 +18,9 @@ const testValues = {}; /* const testValues = { who: '出纳', - paidTime: '2017-12-08', - amount: '4397.37', - paidForId: 'E000001', + paidTime: '2018-03-05', + amount: '4885.02', + paidForId: 'E00000001', } */ diff --git a/bizui/src/bizcomponents/payingoff/PayingOff.dashboard.js b/bizui/src/bizcomponents/payingoff/PayingOff.dashboard.js index fb0aaf84a..7954dfe66 100644 --- a/bizui/src/bizcomponents/payingoff/PayingOff.dashboard.js +++ b/bizui/src/bizcomponents/payingoff/PayingOff.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(payingOff)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (payingOff) =>defaultSettingListOf(payingOff, optionList) const internalLargeTextOf = (payingOff) =>{ @@ -131,7 +131,7 @@ class PayingOffDashboard extends Component { const cardsData = {cardsName:"工资支付",cardsFor: "payingOff", cardsSource: this.props.payingOff,returnURL,displayName, subItems: [ -{name: 'employeeSalarySheetList', displayName:'工资单',type:'employeeSalarySheet',count:employeeSalarySheetCount,addFunction: true, role: 'employeeSalarySheet', metaInfo: employeeSalarySheetListMetaInfo}, +{name: 'employeeSalarySheetList', displayName:'工资单',type:'employeeSalarySheet',count:employeeSalarySheetCount,addFunction: true, role: 'employeeSalarySheet', metaInfo: employeeSalarySheetListMetaInfo, renderItem: GlobalComponents.EmployeeSalarySheetBase.renderItemOfList}, ], }; @@ -146,6 +146,8 @@ class PayingOffDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/payingoff/PayingOff.permission.js b/bizui/src/bizcomponents/payingoff/PayingOff.permission.js index 3c7e51669..1cc60a4ab 100644 --- a/bizui/src/bizcomponents/payingoff/PayingOff.permission.js +++ b/bizui/src/bizcomponents/payingoff/PayingOff.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './PayingOff.preference.less' +import styles from './PayingOff.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/payingoff/PayingOff.preference.js b/bizui/src/bizcomponents/payingoff/PayingOff.preference.js deleted file mode 100644 index 260274676..000000000 --- a/bizui/src/bizcomponents/payingoff/PayingOff.preference.js +++ /dev/null @@ -1,357 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './PayingOff.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (payingOff) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (payingOff) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (payingOff) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {PayingOffService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = PayingOffService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (payingOff,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=payingOff.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_payingOff/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (payingOff,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(payingOff,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (payingOff) =>{ - return null -} -const internalRenderExtraFooter = (payingOff) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (payingOff,targetComponent) =>{ - const userContext = null - return ( - -{payingOff.id} -{payingOff.who} -{payingOff.paidFor==null?appLocaleName(userContext,"NotAssigned"):payingOff.paidFor.displayName} - - showTransferModel(targetComponent,"支付","employee","requestCandidatePaidFor", - "transferToAnotherPaidFor","anotherPaidForId",payingOff.paidFor?payingOff.paidFor.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{ moment(payingOff.paidTime).format('YYYY-MM-DD')} -{payingOff.amount} - - {buildTransferModal(payingOff,targetComponent)} - - ) - -} - - -const renderPermissionSetting = payingOff => { - const {PayingOffBase} = GlobalComponents - return - - -} - - -class PayingOffPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const payingOff = this.props.payingOff; - const { id,displayName, employeeSalarySheetCount } = payingOff - - - - const cardsData = {cardsName:"工资支付",cardsFor: "payingOff",cardsSource: payingOff, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - payingOff: state._payingOff, -}))(Form.create()(PayingOffPreference)) - diff --git a/bizui/src/bizcomponents/payingoff/PayingOff.preference.less b/bizui/src/bizcomponents/payingoff/PayingOff.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/payingoff/PayingOff.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/payingoff/PayingOff.profile.js b/bizui/src/bizcomponents/payingoff/PayingOff.profile.js index b38e2a609..a6e278fc0 100644 --- a/bizui/src/bizcomponents/payingoff/PayingOff.profile.js +++ b/bizui/src/bizcomponents/payingoff/PayingOff.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './PayingOff.preference.less' +import styles from './PayingOff.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,18 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (payingOff,targetComponent) =>{ - const userContext = null - return ( - -{payingOff.id} -{payingOff.who} -{ moment(payingOff.paidTime).format('YYYY-MM-DD')} -{payingOff.amount} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.PayingOffBase.renderItemOfList(item, targetComponents) + } @@ -65,13 +58,14 @@ class PayingOffProfile extends Component { const cardsData = {cardsName:"工资支付",cardsFor: "payingOff",cardsSource: payingOff, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -81,7 +75,7 @@ class PayingOffProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.associateform.js b/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.associateform.js index d5916a139..786efc5f0 100644 --- a/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.associateform.js +++ b/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.associateform.js @@ -21,8 +21,8 @@ const testValues = { name: '曾倩', mobile: '13677778888', description: '负责开拓市场,具有极强的开拓能力', - cityServiceCenterId: 'RSCSC000001', - cityPartnerId: 'CP000001', + cityServiceCenterId: 'RSCSC00000001', + cityPartnerId: 'CP00000001', } */ diff --git a/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.base.js b/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.base.js index ed8f63ef1..4d78b7fbf 100644 --- a/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.base.js +++ b/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -60,34 +61,30 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({potentialCustomer,targetComponent})=>{ +const renderItemOfList=(potentialCustomer,targetComponent)=>{ - const {PotentialCustomerService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {potentialCustomer.id} {potentialCustomer.name} {potentialCustomer.mobile} {potentialCustomer.cityServiceCenter==null?appLocaleName(userContext,"NotAssigned"):`${potentialCustomer.cityServiceCenter.displayName}(${potentialCustomer.cityServiceCenter.id})`} - - showTransferModel(targetComponent,"城市服务中心","retailStoreCityServiceCenter",PotentialCustomerService.requestCandidateCityServiceCenter, - PotentialCustomerService.transferToAnotherCityServiceCenter,"anotherCityServiceCenterId",potentialCustomer.cityServiceCenter?potentialCustomer.cityServiceCenter.id:"")} - style={{fontSize: 20,color:"red"}} /> {potentialCustomer.cityPartner==null?appLocaleName(userContext,"NotAssigned"):`${potentialCustomer.cityPartner.displayName}(${potentialCustomer.cityPartner.id})`} - - showTransferModel(targetComponent,"城市合伙人","cityPartner",PotentialCustomerService.requestCandidateCityPartner, - PotentialCustomerService.transferToAnotherCityPartner,"anotherCityPartnerId",potentialCustomer.cityPartner?potentialCustomer.cityPartner.id:"")} - style={{fontSize: 20,color:"red"}} /> {potentialCustomer.description} { moment(potentialCustomer.lastUpdateTime).format('YYYY-MM-DD')} - {buildTransferModal(potentialCustomer,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.createform.js b/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.createform.js index ca09c651f..c4215a0ee 100644 --- a/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.createform.js +++ b/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.createform.js @@ -20,8 +20,8 @@ const testValues = { name: '曾倩', mobile: '13677778888', description: '负责开拓市场,具有极强的开拓能力', - cityServiceCenterId: 'RSCSC000001', - cityPartnerId: 'CP000001', + cityServiceCenterId: 'RSCSC00000001', + cityPartnerId: 'CP00000001', } */ diff --git a/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.dashboard.js b/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.dashboard.js index f6474a039..b4eedeffc 100644 --- a/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.dashboard.js +++ b/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(potentialCustomer)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (potentialCustomer) =>defaultSettingListOf(potentialCustomer, optionList) const internalLargeTextOf = (potentialCustomer) =>{ @@ -138,9 +138,9 @@ class PotentialCustomerDashboard extends Component { const cardsData = {cardsName:"潜在的客户",cardsFor: "potentialCustomer", cardsSource: this.props.potentialCustomer,returnURL,displayName, subItems: [ -{name: 'potentialCustomerContactPersonList', displayName:'潜在客户联络人',type:'potentialCustomerContactPerson',count:potentialCustomerContactPersonCount,addFunction: true, role: 'potentialCustomerContactPerson', metaInfo: potentialCustomerContactPersonListMetaInfo}, -{name: 'potentialCustomerContactList', displayName:'潜在客户联系',type:'potentialCustomerContact',count:potentialCustomerContactCount,addFunction: true, role: 'potentialCustomerContact', metaInfo: potentialCustomerContactListMetaInfo}, -{name: 'eventAttendanceList', displayName:'活动的参与情况',type:'eventAttendance',count:eventAttendanceCount,addFunction: true, role: 'eventAttendance', metaInfo: eventAttendanceListMetaInfo}, +{name: 'potentialCustomerContactPersonList', displayName:'潜在客户联络人',type:'potentialCustomerContactPerson',count:potentialCustomerContactPersonCount,addFunction: true, role: 'potentialCustomerContactPerson', metaInfo: potentialCustomerContactPersonListMetaInfo, renderItem: GlobalComponents.PotentialCustomerContactPersonBase.renderItemOfList}, +{name: 'potentialCustomerContactList', displayName:'潜在客户联系',type:'potentialCustomerContact',count:potentialCustomerContactCount,addFunction: true, role: 'potentialCustomerContact', metaInfo: potentialCustomerContactListMetaInfo, renderItem: GlobalComponents.PotentialCustomerContactBase.renderItemOfList}, +{name: 'eventAttendanceList', displayName:'活动的参与情况',type:'eventAttendance',count:eventAttendanceCount,addFunction: true, role: 'eventAttendance', metaInfo: eventAttendanceListMetaInfo, renderItem: GlobalComponents.EventAttendanceBase.renderItemOfList}, ], }; @@ -155,6 +155,8 @@ class PotentialCustomerDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.permission.js b/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.permission.js index dab5df08b..eff591c97 100644 --- a/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.permission.js +++ b/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './PotentialCustomer.preference.less' +import styles from './PotentialCustomer.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.preference.js b/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.preference.js deleted file mode 100644 index 3b73bb7db..000000000 --- a/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.preference.js +++ /dev/null @@ -1,364 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './PotentialCustomer.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (potentialCustomer) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (potentialCustomer) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (potentialCustomer) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {PotentialCustomerService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = PotentialCustomerService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (potentialCustomer,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=potentialCustomer.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_potentialCustomer/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (potentialCustomer,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(potentialCustomer,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (potentialCustomer) =>{ - return null -} -const internalRenderExtraFooter = (potentialCustomer) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (potentialCustomer,targetComponent) =>{ - const userContext = null - return ( - -{potentialCustomer.id} -{potentialCustomer.name} -{potentialCustomer.mobile} -{potentialCustomer.cityServiceCenter==null?appLocaleName(userContext,"NotAssigned"):potentialCustomer.cityServiceCenter.displayName} - - showTransferModel(targetComponent,"城市服务中心","retailStoreCityServiceCenter","requestCandidateCityServiceCenter", - "transferToAnotherCityServiceCenter","anotherCityServiceCenterId",potentialCustomer.cityServiceCenter?potentialCustomer.cityServiceCenter.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{potentialCustomer.cityPartner==null?appLocaleName(userContext,"NotAssigned"):potentialCustomer.cityPartner.displayName} - - showTransferModel(targetComponent,"城市合伙人","cityPartner","requestCandidateCityPartner", - "transferToAnotherCityPartner","anotherCityPartnerId",potentialCustomer.cityPartner?potentialCustomer.cityPartner.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{potentialCustomer.description} -{ moment(potentialCustomer.lastUpdateTime).format('YYYY-MM-DD')} - - {buildTransferModal(potentialCustomer,targetComponent)} - - ) - -} - - -const renderPermissionSetting = potentialCustomer => { - const {PotentialCustomerBase} = GlobalComponents - return - - -} - - -class PotentialCustomerPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const potentialCustomer = this.props.potentialCustomer; - const { id,displayName, potentialCustomerContactPersonCount, potentialCustomerContactCount, eventAttendanceCount } = potentialCustomer - - - - const cardsData = {cardsName:"潜在的客户",cardsFor: "potentialCustomer",cardsSource: potentialCustomer, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - potentialCustomer: state._potentialCustomer, -}))(Form.create()(PotentialCustomerPreference)) - diff --git a/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.preference.less b/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.profile.js b/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.profile.js index 89bad4807..80afec7f9 100644 --- a/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.profile.js +++ b/bizui/src/bizcomponents/potentialcustomer/PotentialCustomer.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './PotentialCustomer.preference.less' +import styles from './PotentialCustomer.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,19 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (potentialCustomer,targetComponent) =>{ - const userContext = null - return ( - -{potentialCustomer.id} -{potentialCustomer.name} -{potentialCustomer.mobile} -{potentialCustomer.description} -{ moment(potentialCustomer.lastUpdateTime).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.PotentialCustomerBase.renderItemOfList(item, targetComponents) + } @@ -66,13 +58,14 @@ class PotentialCustomerProfile extends Component { const cardsData = {cardsName:"潜在的客户",cardsFor: "potentialCustomer",cardsSource: potentialCustomer, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -82,7 +75,7 @@ class PotentialCustomerProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.associateform.js b/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.associateform.js index 6b7e02a74..232b17bfc 100644 --- a/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.associateform.js +++ b/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.associateform.js @@ -19,12 +19,12 @@ const testValues = {}; /* const testValues = { name: '和连载客户的联系记录', - contactDate: '2018-08-26', + contactDate: '2018-01-01', contactMethod: '电话', description: '转化希望很大', - potentialCustomerId: 'PC000001', - cityPartnerId: 'CP000001', - contactToId: 'PCCP000001', + potentialCustomerId: 'PC00000001', + cityPartnerId: 'CP00000001', + contactToId: 'PCCP00000001', } */ diff --git a/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.base.js b/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.base.js index 5abb45b3c..b80118652 100644 --- a/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.base.js +++ b/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -61,41 +62,33 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({potentialCustomerContact,targetComponent})=>{ +const renderItemOfList=(potentialCustomerContact,targetComponent)=>{ - const {PotentialCustomerContactService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {potentialCustomerContact.id} {potentialCustomerContact.name} { moment(potentialCustomerContact.contactDate).format('YYYY-MM-DD')} {potentialCustomerContact.contactMethod} {potentialCustomerContact.potentialCustomer==null?appLocaleName(userContext,"NotAssigned"):`${potentialCustomerContact.potentialCustomer.displayName}(${potentialCustomerContact.potentialCustomer.id})`} - - showTransferModel(targetComponent,"潜在的客户","potentialCustomer",PotentialCustomerContactService.requestCandidatePotentialCustomer, - PotentialCustomerContactService.transferToAnotherPotentialCustomer,"anotherPotentialCustomerId",potentialCustomerContact.potentialCustomer?potentialCustomerContact.potentialCustomer.id:"")} - style={{fontSize: 20,color:"red"}} /> {potentialCustomerContact.cityPartner==null?appLocaleName(userContext,"NotAssigned"):`${potentialCustomerContact.cityPartner.displayName}(${potentialCustomerContact.cityPartner.id})`} - - showTransferModel(targetComponent,"城市合伙人","cityPartner",PotentialCustomerContactService.requestCandidateCityPartner, - PotentialCustomerContactService.transferToAnotherCityPartner,"anotherCityPartnerId",potentialCustomerContact.cityPartner?potentialCustomerContact.cityPartner.id:"")} - style={{fontSize: 20,color:"red"}} /> {potentialCustomerContact.contactTo==null?appLocaleName(userContext,"NotAssigned"):`${potentialCustomerContact.contactTo.displayName}(${potentialCustomerContact.contactTo.id})`} - - showTransferModel(targetComponent,"接触","potentialCustomerContactPerson",PotentialCustomerContactService.requestCandidateContactTo, - PotentialCustomerContactService.transferToAnotherContactTo,"anotherContactToId",potentialCustomerContact.contactTo?potentialCustomerContact.contactTo.id:"")} - style={{fontSize: 20,color:"red"}} /> {potentialCustomerContact.description} { moment(potentialCustomerContact.lastUpdateTime).format('YYYY-MM-DD')} - {buildTransferModal(potentialCustomerContact,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.createform.js b/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.createform.js index edc9a3257..c02dc57d4 100644 --- a/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.createform.js +++ b/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.createform.js @@ -18,12 +18,12 @@ const testValues = {}; /* const testValues = { name: '和连载客户的联系记录', - contactDate: '2017-06-01', + contactDate: '2017-04-07', contactMethod: '电话', description: '转化希望很大', - potentialCustomerId: 'PC000001', - cityPartnerId: 'CP000001', - contactToId: 'PCCP000001', + potentialCustomerId: 'PC00000001', + cityPartnerId: 'CP00000001', + contactToId: 'PCCP00000001', } */ diff --git a/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.dashboard.js b/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.dashboard.js index 06e510a27..4ba2b6b30 100644 --- a/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.dashboard.js +++ b/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(potentialCustomerContact)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (potentialCustomerContact) =>defaultSettingListOf(potentialCustomerContact, optionList) const internalLargeTextOf = (potentialCustomerContact) =>{ @@ -159,6 +159,8 @@ class PotentialCustomerContactDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.permission.js b/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.permission.js index 99900aed6..eeeb8672b 100644 --- a/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.permission.js +++ b/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './PotentialCustomerContact.preference.less' +import styles from './PotentialCustomerContact.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.preference.js b/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.preference.js deleted file mode 100644 index 8138efc46..000000000 --- a/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.preference.js +++ /dev/null @@ -1,371 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './PotentialCustomerContact.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (potentialCustomerContact) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (potentialCustomerContact) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (potentialCustomerContact) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {PotentialCustomerContactService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = PotentialCustomerContactService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (potentialCustomerContact,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=potentialCustomerContact.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_potentialCustomerContact/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (potentialCustomerContact,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(potentialCustomerContact,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (potentialCustomerContact) =>{ - return null -} -const internalRenderExtraFooter = (potentialCustomerContact) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (potentialCustomerContact,targetComponent) =>{ - const userContext = null - return ( - -{potentialCustomerContact.id} -{potentialCustomerContact.name} -{ moment(potentialCustomerContact.contactDate).format('YYYY-MM-DD')} -{potentialCustomerContact.contactMethod} -{potentialCustomerContact.potentialCustomer==null?appLocaleName(userContext,"NotAssigned"):potentialCustomerContact.potentialCustomer.displayName} - - showTransferModel(targetComponent,"潜在的客户","potentialCustomer","requestCandidatePotentialCustomer", - "transferToAnotherPotentialCustomer","anotherPotentialCustomerId",potentialCustomerContact.potentialCustomer?potentialCustomerContact.potentialCustomer.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{potentialCustomerContact.cityPartner==null?appLocaleName(userContext,"NotAssigned"):potentialCustomerContact.cityPartner.displayName} - - showTransferModel(targetComponent,"城市合伙人","cityPartner","requestCandidateCityPartner", - "transferToAnotherCityPartner","anotherCityPartnerId",potentialCustomerContact.cityPartner?potentialCustomerContact.cityPartner.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{potentialCustomerContact.contactTo==null?appLocaleName(userContext,"NotAssigned"):potentialCustomerContact.contactTo.displayName} - - showTransferModel(targetComponent,"接触","potentialCustomerContactPerson","requestCandidateContactTo", - "transferToAnotherContactTo","anotherContactToId",potentialCustomerContact.contactTo?potentialCustomerContact.contactTo.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{potentialCustomerContact.description} -{ moment(potentialCustomerContact.lastUpdateTime).format('YYYY-MM-DD')} - - {buildTransferModal(potentialCustomerContact,targetComponent)} - - ) - -} - - -const renderPermissionSetting = potentialCustomerContact => { - const {PotentialCustomerContactBase} = GlobalComponents - return - - -} - - -class PotentialCustomerContactPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const potentialCustomerContact = this.props.potentialCustomerContact; - const { id,displayName, } = potentialCustomerContact - - - - const cardsData = {cardsName:"潜在客户联系",cardsFor: "potentialCustomerContact",cardsSource: potentialCustomerContact, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - potentialCustomerContact: state._potentialCustomerContact, -}))(Form.create()(PotentialCustomerContactPreference)) - diff --git a/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.preference.less b/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.profile.js b/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.profile.js index 937d8e03d..335c5cadf 100644 --- a/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.profile.js +++ b/bizui/src/bizcomponents/potentialcustomercontact/PotentialCustomerContact.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './PotentialCustomerContact.preference.less' +import styles from './PotentialCustomerContact.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,20 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (potentialCustomerContact,targetComponent) =>{ - const userContext = null - return ( - -{potentialCustomerContact.id} -{potentialCustomerContact.name} -{ moment(potentialCustomerContact.contactDate).format('YYYY-MM-DD')} -{potentialCustomerContact.contactMethod} -{potentialCustomerContact.description} -{ moment(potentialCustomerContact.lastUpdateTime).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.PotentialCustomerContactBase.renderItemOfList(item, targetComponents) + } @@ -67,13 +58,14 @@ class PotentialCustomerContactProfile extends Component { const cardsData = {cardsName:"潜在客户联系",cardsFor: "potentialCustomerContact",cardsSource: potentialCustomerContact, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -83,7 +75,7 @@ class PotentialCustomerContactProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.associateform.js b/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.associateform.js index 2b7fe4b5c..c0c11d73d 100644 --- a/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.associateform.js +++ b/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.associateform.js @@ -21,7 +21,7 @@ const testValues = { name: '赵先生', mobile: '13677778888', description: '这人在决策中战友较大的权重,密切观察中.....', - potentialCustomerId: 'PC000001', + potentialCustomerId: 'PC00000001', } */ diff --git a/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.base.js b/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.base.js index cb72fe654..e777911de 100644 --- a/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.base.js +++ b/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -54,27 +55,27 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({potentialCustomerContactPerson,targetComponent})=>{ +const renderItemOfList=(potentialCustomerContactPerson,targetComponent)=>{ - const {PotentialCustomerContactPersonService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {potentialCustomerContactPerson.id} {potentialCustomerContactPerson.name} {potentialCustomerContactPerson.mobile} {potentialCustomerContactPerson.potentialCustomer==null?appLocaleName(userContext,"NotAssigned"):`${potentialCustomerContactPerson.potentialCustomer.displayName}(${potentialCustomerContactPerson.potentialCustomer.id})`} - - showTransferModel(targetComponent,"潜在的客户","potentialCustomer",PotentialCustomerContactPersonService.requestCandidatePotentialCustomer, - PotentialCustomerContactPersonService.transferToAnotherPotentialCustomer,"anotherPotentialCustomerId",potentialCustomerContactPerson.potentialCustomer?potentialCustomerContactPerson.potentialCustomer.id:"")} - style={{fontSize: 20,color:"red"}} /> {potentialCustomerContactPerson.description} - {buildTransferModal(potentialCustomerContactPerson,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.createform.js b/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.createform.js index d305439e5..abf02e94c 100644 --- a/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.createform.js +++ b/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.createform.js @@ -20,7 +20,7 @@ const testValues = { name: '赵先生', mobile: '13677778888', description: '这人在决策中战友较大的权重,密切观察中.....', - potentialCustomerId: 'PC000001', + potentialCustomerId: 'PC00000001', } */ diff --git a/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.dashboard.js b/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.dashboard.js index d2b8d08ad..0747919d0 100644 --- a/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.dashboard.js +++ b/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(potentialCustomerContactPerson)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (potentialCustomerContactPerson) =>defaultSettingListOf(potentialCustomerContactPerson, optionList) const internalLargeTextOf = (potentialCustomerContactPerson) =>{ @@ -131,7 +131,7 @@ class PotentialCustomerContactPersonDashboard extends Component { const cardsData = {cardsName:"潜在客户联络人",cardsFor: "potentialCustomerContactPerson", cardsSource: this.props.potentialCustomerContactPerson,returnURL,displayName, subItems: [ -{name: 'potentialCustomerContactList', displayName:'潜在客户联系',type:'potentialCustomerContact',count:potentialCustomerContactCount,addFunction: true, role: 'potentialCustomerContact', metaInfo: potentialCustomerContactListMetaInfo}, +{name: 'potentialCustomerContactList', displayName:'潜在客户联系',type:'potentialCustomerContact',count:potentialCustomerContactCount,addFunction: true, role: 'potentialCustomerContact', metaInfo: potentialCustomerContactListMetaInfo, renderItem: GlobalComponents.PotentialCustomerContactBase.renderItemOfList}, ], }; @@ -146,6 +146,8 @@ class PotentialCustomerContactPersonDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.permission.js b/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.permission.js index 5d32c60a7..5fc2abca3 100644 --- a/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.permission.js +++ b/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './PotentialCustomerContactPerson.preference.less' +import styles from './PotentialCustomerContactPerson.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.preference.js b/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.preference.js deleted file mode 100644 index 60660bf73..000000000 --- a/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.preference.js +++ /dev/null @@ -1,357 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './PotentialCustomerContactPerson.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (potentialCustomerContactPerson) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (potentialCustomerContactPerson) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (potentialCustomerContactPerson) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {PotentialCustomerContactPersonService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = PotentialCustomerContactPersonService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (potentialCustomerContactPerson,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=potentialCustomerContactPerson.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_potentialCustomerContactPerson/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (potentialCustomerContactPerson,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(potentialCustomerContactPerson,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (potentialCustomerContactPerson) =>{ - return null -} -const internalRenderExtraFooter = (potentialCustomerContactPerson) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (potentialCustomerContactPerson,targetComponent) =>{ - const userContext = null - return ( - -{potentialCustomerContactPerson.id} -{potentialCustomerContactPerson.name} -{potentialCustomerContactPerson.mobile} -{potentialCustomerContactPerson.potentialCustomer==null?appLocaleName(userContext,"NotAssigned"):potentialCustomerContactPerson.potentialCustomer.displayName} - - showTransferModel(targetComponent,"潜在的客户","potentialCustomer","requestCandidatePotentialCustomer", - "transferToAnotherPotentialCustomer","anotherPotentialCustomerId",potentialCustomerContactPerson.potentialCustomer?potentialCustomerContactPerson.potentialCustomer.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{potentialCustomerContactPerson.description} - - {buildTransferModal(potentialCustomerContactPerson,targetComponent)} - - ) - -} - - -const renderPermissionSetting = potentialCustomerContactPerson => { - const {PotentialCustomerContactPersonBase} = GlobalComponents - return - - -} - - -class PotentialCustomerContactPersonPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const potentialCustomerContactPerson = this.props.potentialCustomerContactPerson; - const { id,displayName, potentialCustomerContactCount } = potentialCustomerContactPerson - - - - const cardsData = {cardsName:"潜在客户联络人",cardsFor: "potentialCustomerContactPerson",cardsSource: potentialCustomerContactPerson, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - potentialCustomerContactPerson: state._potentialCustomerContactPerson, -}))(Form.create()(PotentialCustomerContactPersonPreference)) - diff --git a/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.preference.less b/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.profile.js b/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.profile.js index 91d69e457..013576bd2 100644 --- a/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.profile.js +++ b/bizui/src/bizcomponents/potentialcustomercontactperson/PotentialCustomerContactPerson.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './PotentialCustomerContactPerson.preference.less' +import styles from './PotentialCustomerContactPerson.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,18 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (potentialCustomerContactPerson,targetComponent) =>{ - const userContext = null - return ( - -{potentialCustomerContactPerson.id} -{potentialCustomerContactPerson.name} -{potentialCustomerContactPerson.mobile} -{potentialCustomerContactPerson.description} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.PotentialCustomerContactPersonBase.renderItemOfList(item, targetComponents) + } @@ -65,13 +58,14 @@ class PotentialCustomerContactPersonProfile extends Component { const cardsData = {cardsName:"潜在客户联络人",cardsFor: "potentialCustomerContactPerson",cardsSource: potentialCustomerContactPerson, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -81,7 +75,7 @@ class PotentialCustomerContactPersonProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/product/Product.associateform.js b/bizui/src/bizcomponents/product/Product.associateform.js index 3a818ddff..6fb88a979 100644 --- a/bizui/src/bizcomponents/product/Product.associateform.js +++ b/bizui/src/bizcomponents/product/Product.associateform.js @@ -22,7 +22,7 @@ const testValues = { origin: '四川', remark: '可口可乐,销售百年的糖水,获得了全世界额青睐', brand: '品牌品牌品牌品牌品牌品牌品牌品牌品牌品牌品牌品', - parentCategoryId: 'LTC000001', + parentCategoryId: 'LTC00000001', } */ diff --git a/bizui/src/bizcomponents/product/Product.base.js b/bizui/src/bizcomponents/product/Product.base.js index 7c45db27c..aa26941ff 100644 --- a/bizui/src/bizcomponents/product/Product.base.js +++ b/bizui/src/bizcomponents/product/Product.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -60,29 +61,29 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({product,targetComponent})=>{ +const renderItemOfList=(product,targetComponent)=>{ - const {ProductService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {product.id} {product.name} {product.parentCategory==null?appLocaleName(userContext,"NotAssigned"):`${product.parentCategory.displayName}(${product.parentCategory.id})`} - - showTransferModel(targetComponent,"父类","levelThreeCategory",ProductService.requestCandidateParentCategory, - ProductService.transferToAnotherParentCategory,"anotherParentCategoryId",product.parentCategory?product.parentCategory.id:"")} - style={{fontSize: 20,color:"red"}} /> {product.origin} {product.remark} {product.brand} { moment(product.lastUpdateTime).format('YYYY-MM-DD')} - {buildTransferModal(product,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/product/Product.createform.js b/bizui/src/bizcomponents/product/Product.createform.js index 3a06a791d..cc1a4aacf 100644 --- a/bizui/src/bizcomponents/product/Product.createform.js +++ b/bizui/src/bizcomponents/product/Product.createform.js @@ -21,7 +21,7 @@ const testValues = { origin: '四川', remark: '可口可乐,销售百年的糖水,获得了全世界额青睐', brand: '品牌品牌品牌品牌品牌品牌品牌品牌品牌品牌品牌品', - parentCategoryId: 'LTC000001', + parentCategoryId: 'LTC00000001', } */ diff --git a/bizui/src/bizcomponents/product/Product.dashboard.js b/bizui/src/bizcomponents/product/Product.dashboard.js index 2c0ab2b72..2c9ae708a 100644 --- a/bizui/src/bizcomponents/product/Product.dashboard.js +++ b/bizui/src/bizcomponents/product/Product.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -51,6 +50,7 @@ const optionList =(product)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (product) =>defaultSettingListOf(product, optionList) const internalLargeTextOf = (product) =>{ @@ -134,7 +134,7 @@ class ProductDashboard extends Component { const cardsData = {cardsName:"产品",cardsFor: "product", cardsSource: this.props.product,returnURL,displayName, subItems: [ -{name: 'skuList', displayName:'SKU',type:'sku',count:skuCount,addFunction: true, role: 'sku', metaInfo: skuListMetaInfo}, +{name: 'skuList', displayName:'SKU',type:'sku',count:skuCount,addFunction: true, role: 'sku', metaInfo: skuListMetaInfo, renderItem: GlobalComponents.SkuBase.renderItemOfList}, ], }; @@ -149,6 +149,8 @@ class ProductDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/product/Product.permission.js b/bizui/src/bizcomponents/product/Product.permission.js index 73be6433e..64d74844e 100644 --- a/bizui/src/bizcomponents/product/Product.permission.js +++ b/bizui/src/bizcomponents/product/Product.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './Product.preference.less' +import styles from './Product.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/product/Product.preference.js b/bizui/src/bizcomponents/product/Product.preference.js deleted file mode 100644 index ff9550378..000000000 --- a/bizui/src/bizcomponents/product/Product.preference.js +++ /dev/null @@ -1,360 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './Product.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (product) =>{ - const userContext = null - const imageList = [ - {"title":'图片',"imageLocation":product.picture}, -] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (product) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (product) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {ProductService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = ProductService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (product,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=product.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_product/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (product,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(product,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (product) =>{ - return null -} -const internalRenderExtraFooter = (product) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (product,targetComponent) =>{ - const userContext = null - return ( - -{product.id} -{product.name} -{product.parentCategory==null?appLocaleName(userContext,"NotAssigned"):product.parentCategory.displayName} - - showTransferModel(targetComponent,"父类","levelThreeCategory","requestCandidateParentCategory", - "transferToAnotherParentCategory","anotherParentCategoryId",product.parentCategory?product.parentCategory.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{product.origin} -{product.remark} -{product.brand} -{ moment(product.lastUpdateTime).format('YYYY-MM-DD')} - - {buildTransferModal(product,targetComponent)} - - ) - -} - - -const renderPermissionSetting = product => { - const {ProductBase} = GlobalComponents - return - - -} - - -class ProductPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const product = this.props.product; - const { id,displayName, skuCount } = product - - - - const cardsData = {cardsName:"产品",cardsFor: "product",cardsSource: product, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - product: state._product, -}))(Form.create()(ProductPreference)) - diff --git a/bizui/src/bizcomponents/product/Product.preference.less b/bizui/src/bizcomponents/product/Product.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/product/Product.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/product/Product.profile.js b/bizui/src/bizcomponents/product/Product.profile.js index 9876d7b89..84a7958ab 100644 --- a/bizui/src/bizcomponents/product/Product.profile.js +++ b/bizui/src/bizcomponents/product/Product.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './Product.preference.less' +import styles from './Product.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,20 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (product,targetComponent) =>{ - const userContext = null - return ( - -{product.id} -{product.name} -{product.origin} -{product.remark} -{product.brand} -{ moment(product.lastUpdateTime).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.ProductBase.renderItemOfList(item, targetComponents) + } @@ -67,13 +58,14 @@ class ProductProfile extends Component { const cardsData = {cardsName:"产品",cardsFor: "product",cardsSource: product, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -83,7 +75,7 @@ class ProductProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.associateform.js b/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.associateform.js index d30d4eb5e..6aa53d959 100644 --- a/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.associateform.js +++ b/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.associateform.js @@ -20,8 +20,8 @@ const testValues = {}; const testValues = { quantity: '100', duration: '现货', - price: '9102.08', - productId: 'SP000001', + price: '8275.90', + productId: 'SP00000001', } */ diff --git a/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.base.js b/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.base.js index 4ff1247a6..563c131f2 100644 --- a/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.base.js +++ b/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -53,27 +54,27 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({productSupplyDuration,targetComponent})=>{ +const renderItemOfList=(productSupplyDuration,targetComponent)=>{ - const {ProductSupplyDurationService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {productSupplyDuration.id} {productSupplyDuration.quantity} {productSupplyDuration.duration} {productSupplyDuration.price} {productSupplyDuration.product==null?appLocaleName(userContext,"NotAssigned"):`${productSupplyDuration.product.displayName}(${productSupplyDuration.product.id})`} - - showTransferModel(targetComponent,"产品","supplierProduct",ProductSupplyDurationService.requestCandidateProduct, - ProductSupplyDurationService.transferToAnotherProduct,"anotherProductId",productSupplyDuration.product?productSupplyDuration.product.id:"")} - style={{fontSize: 20,color:"red"}} /> - {buildTransferModal(productSupplyDuration,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.createform.js b/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.createform.js index de08ebefe..74459d96c 100644 --- a/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.createform.js +++ b/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.createform.js @@ -19,8 +19,8 @@ const testValues = {}; const testValues = { quantity: '100', duration: '现货', - price: '8554.70', - productId: 'SP000001', + price: '8912.94', + productId: 'SP00000001', } */ diff --git a/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.dashboard.js b/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.dashboard.js index 6929ba1da..3c4317de2 100644 --- a/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.dashboard.js +++ b/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(productSupplyDuration)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (productSupplyDuration) =>defaultSettingListOf(productSupplyDuration, optionList) const internalLargeTextOf = (productSupplyDuration) =>{ @@ -145,6 +145,8 @@ class ProductSupplyDurationDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.permission.js b/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.permission.js index 2a931baea..73294332a 100644 --- a/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.permission.js +++ b/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ProductSupplyDuration.preference.less' +import styles from './ProductSupplyDuration.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.preference.js b/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.preference.js deleted file mode 100644 index 91f482460..000000000 --- a/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.preference.js +++ /dev/null @@ -1,357 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ProductSupplyDuration.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (productSupplyDuration) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (productSupplyDuration) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (productSupplyDuration) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {ProductSupplyDurationService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = ProductSupplyDurationService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (productSupplyDuration,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=productSupplyDuration.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_productSupplyDuration/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (productSupplyDuration,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(productSupplyDuration,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (productSupplyDuration) =>{ - return null -} -const internalRenderExtraFooter = (productSupplyDuration) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (productSupplyDuration,targetComponent) =>{ - const userContext = null - return ( - -{productSupplyDuration.id} -{productSupplyDuration.quantity} -{productSupplyDuration.duration} -{productSupplyDuration.price} -{productSupplyDuration.product==null?appLocaleName(userContext,"NotAssigned"):productSupplyDuration.product.displayName} - - showTransferModel(targetComponent,"产品","supplierProduct","requestCandidateProduct", - "transferToAnotherProduct","anotherProductId",productSupplyDuration.product?productSupplyDuration.product.id:"")} - style={{fontSize: 20,color:"red"}} /> - - - {buildTransferModal(productSupplyDuration,targetComponent)} - - ) - -} - - -const renderPermissionSetting = productSupplyDuration => { - const {ProductSupplyDurationBase} = GlobalComponents - return - - -} - - -class ProductSupplyDurationPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const productSupplyDuration = this.props.productSupplyDuration; - const { id,displayName, } = productSupplyDuration - - - - const cardsData = {cardsName:"产品供应时间",cardsFor: "productSupplyDuration",cardsSource: productSupplyDuration, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - productSupplyDuration: state._productSupplyDuration, -}))(Form.create()(ProductSupplyDurationPreference)) - diff --git a/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.preference.less b/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.profile.js b/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.profile.js index 955a27ec0..8f6230735 100644 --- a/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.profile.js +++ b/bizui/src/bizcomponents/productsupplyduration/ProductSupplyDuration.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ProductSupplyDuration.preference.less' +import styles from './ProductSupplyDuration.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,18 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (productSupplyDuration,targetComponent) =>{ - const userContext = null - return ( - -{productSupplyDuration.id} -{productSupplyDuration.quantity} -{productSupplyDuration.duration} -{productSupplyDuration.price} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.ProductSupplyDurationBase.renderItemOfList(item, targetComponents) + } @@ -65,13 +58,14 @@ class ProductSupplyDurationProfile extends Component { const cardsData = {cardsName:"产品供应时间",cardsFor: "productSupplyDuration",cardsSource: productSupplyDuration, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -81,7 +75,7 @@ class ProductSupplyDurationProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/professioninterview/ProfessionInterview.associateform.js b/bizui/src/bizcomponents/professioninterview/ProfessionInterview.associateform.js index 2173f83b1..a4d2e70ef 100644 --- a/bizui/src/bizcomponents/professioninterview/ProfessionInterview.associateform.js +++ b/bizui/src/bizcomponents/professioninterview/ProfessionInterview.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { who: '技术部', - interviewTime: '2018-09-10', + interviewTime: '2017-12-14', comments: '能力各方面表现不错,进入下一轮', } */ diff --git a/bizui/src/bizcomponents/professioninterview/ProfessionInterview.base.js b/bizui/src/bizcomponents/professioninterview/ProfessionInterview.base.js index 8336b3219..c48ec81f5 100644 --- a/bizui/src/bizcomponents/professioninterview/ProfessionInterview.base.js +++ b/bizui/src/bizcomponents/professioninterview/ProfessionInterview.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -52,21 +53,25 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({professionInterview,targetComponent})=>{ +const renderItemOfList=(professionInterview,targetComponent)=>{ - const {ProfessionInterviewService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {professionInterview.id} {professionInterview.who} { moment(professionInterview.interviewTime).format('YYYY-MM-DD')} {professionInterview.comments} - {buildTransferModal(professionInterview,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/professioninterview/ProfessionInterview.createform.js b/bizui/src/bizcomponents/professioninterview/ProfessionInterview.createform.js index 8bb61e7c3..e74a6af3a 100644 --- a/bizui/src/bizcomponents/professioninterview/ProfessionInterview.createform.js +++ b/bizui/src/bizcomponents/professioninterview/ProfessionInterview.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { who: '技术部', - interviewTime: '2019-03-22', + interviewTime: '2019-06-12', comments: '能力各方面表现不错,进入下一轮', } */ diff --git a/bizui/src/bizcomponents/professioninterview/ProfessionInterview.dashboard.js b/bizui/src/bizcomponents/professioninterview/ProfessionInterview.dashboard.js index b6f6cc679..5d1fe7d7a 100644 --- a/bizui/src/bizcomponents/professioninterview/ProfessionInterview.dashboard.js +++ b/bizui/src/bizcomponents/professioninterview/ProfessionInterview.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(professionInterview)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (professionInterview) =>defaultSettingListOf(professionInterview, optionList) const internalLargeTextOf = (professionInterview) =>{ @@ -125,7 +125,7 @@ class ProfessionInterviewDashboard extends Component { const cardsData = {cardsName:"专业面试",cardsFor: "professionInterview", cardsSource: this.props.professionInterview,returnURL,displayName, subItems: [ -{name: 'employeeList', displayName:'员工',type:'employee',count:employeeCount,addFunction: true, role: 'employee', metaInfo: employeeListMetaInfo}, +{name: 'employeeList', displayName:'员工',type:'employee',count:employeeCount,addFunction: true, role: 'employee', metaInfo: employeeListMetaInfo, renderItem: GlobalComponents.EmployeeBase.renderItemOfList}, ], }; @@ -140,6 +140,8 @@ class ProfessionInterviewDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/professioninterview/ProfessionInterview.permission.js b/bizui/src/bizcomponents/professioninterview/ProfessionInterview.permission.js index e0e22c7f3..8c3d686a0 100644 --- a/bizui/src/bizcomponents/professioninterview/ProfessionInterview.permission.js +++ b/bizui/src/bizcomponents/professioninterview/ProfessionInterview.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ProfessionInterview.preference.less' +import styles from './ProfessionInterview.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/professioninterview/ProfessionInterview.preference.js b/bizui/src/bizcomponents/professioninterview/ProfessionInterview.preference.js deleted file mode 100644 index 6c4acd4dc..000000000 --- a/bizui/src/bizcomponents/professioninterview/ProfessionInterview.preference.js +++ /dev/null @@ -1,351 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ProfessionInterview.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (professionInterview) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (professionInterview) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (professionInterview) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {ProfessionInterviewService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = ProfessionInterviewService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (professionInterview,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=professionInterview.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_professionInterview/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (professionInterview,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(professionInterview,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (professionInterview) =>{ - return null -} -const internalRenderExtraFooter = (professionInterview) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (professionInterview,targetComponent) =>{ - const userContext = null - return ( - -{professionInterview.id} -{professionInterview.who} -{ moment(professionInterview.interviewTime).format('YYYY-MM-DD')} -{professionInterview.comments} - - {buildTransferModal(professionInterview,targetComponent)} - - ) - -} - - -const renderPermissionSetting = professionInterview => { - const {ProfessionInterviewBase} = GlobalComponents - return - - -} - - -class ProfessionInterviewPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const professionInterview = this.props.professionInterview; - const { id,displayName, employeeCount } = professionInterview - - - - const cardsData = {cardsName:"专业面试",cardsFor: "professionInterview",cardsSource: professionInterview, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - professionInterview: state._professionInterview, -}))(Form.create()(ProfessionInterviewPreference)) - diff --git a/bizui/src/bizcomponents/professioninterview/ProfessionInterview.preference.less b/bizui/src/bizcomponents/professioninterview/ProfessionInterview.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/professioninterview/ProfessionInterview.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/professioninterview/ProfessionInterview.profile.js b/bizui/src/bizcomponents/professioninterview/ProfessionInterview.profile.js index a7d48bfad..d03d33af5 100644 --- a/bizui/src/bizcomponents/professioninterview/ProfessionInterview.profile.js +++ b/bizui/src/bizcomponents/professioninterview/ProfessionInterview.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ProfessionInterview.preference.less' +import styles from './ProfessionInterview.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,18 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (professionInterview,targetComponent) =>{ - const userContext = null - return ( - -{professionInterview.id} -{professionInterview.who} -{ moment(professionInterview.interviewTime).format('YYYY-MM-DD')} -{professionInterview.comments} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.ProfessionInterviewBase.renderItemOfList(item, targetComponents) + } @@ -65,13 +58,14 @@ class ProfessionInterviewProfile extends Component { const cardsData = {cardsName:"专业面试",cardsFor: "professionInterview",cardsSource: professionInterview, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -81,7 +75,7 @@ class ProfessionInterviewProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.associateform.js b/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.associateform.js index f4236773c..abc903d71 100644 --- a/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.associateform.js +++ b/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.associateform.js @@ -19,9 +19,9 @@ const testValues = {}; /* const testValues = { name: '供应链部', - founded: '2017-05-03', + founded: '2016-10-02', manager: '刘强', - provinceCenterId: 'RSPC000001', + provinceCenterId: 'RSPC00000001', } */ diff --git a/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.base.js b/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.base.js index 33a7c12fb..c985329c4 100644 --- a/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.base.js +++ b/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -54,27 +55,27 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({provinceCenterDepartment,targetComponent})=>{ +const renderItemOfList=(provinceCenterDepartment,targetComponent)=>{ - const {ProvinceCenterDepartmentService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {provinceCenterDepartment.id} {provinceCenterDepartment.name} { moment(provinceCenterDepartment.founded).format('YYYY-MM-DD')} {provinceCenterDepartment.provinceCenter==null?appLocaleName(userContext,"NotAssigned"):`${provinceCenterDepartment.provinceCenter.displayName}(${provinceCenterDepartment.provinceCenter.id})`} - - showTransferModel(targetComponent,"省中心","retailStoreProvinceCenter",ProvinceCenterDepartmentService.requestCandidateProvinceCenter, - ProvinceCenterDepartmentService.transferToAnotherProvinceCenter,"anotherProvinceCenterId",provinceCenterDepartment.provinceCenter?provinceCenterDepartment.provinceCenter.id:"")} - style={{fontSize: 20,color:"red"}} /> {provinceCenterDepartment.manager} - {buildTransferModal(provinceCenterDepartment,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.createform.js b/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.createform.js index 8039a78f0..4e1737c99 100644 --- a/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.createform.js +++ b/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.createform.js @@ -18,9 +18,9 @@ const testValues = {}; /* const testValues = { name: '供应链部', - founded: '2016-10-05', + founded: '2019-01-23', manager: '刘强', - provinceCenterId: 'RSPC000001', + provinceCenterId: 'RSPC00000001', } */ diff --git a/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.dashboard.js b/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.dashboard.js index 9ab9628ab..42b678359 100644 --- a/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.dashboard.js +++ b/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(provinceCenterDepartment)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (provinceCenterDepartment) =>defaultSettingListOf(provinceCenterDepartment, optionList) const internalLargeTextOf = (provinceCenterDepartment) =>{ @@ -131,7 +131,7 @@ class ProvinceCenterDepartmentDashboard extends Component { const cardsData = {cardsName:"省中心",cardsFor: "provinceCenterDepartment", cardsSource: this.props.provinceCenterDepartment,returnURL,displayName, subItems: [ -{name: 'provinceCenterEmployeeList', displayName:'省中心员工',type:'provinceCenterEmployee',count:provinceCenterEmployeeCount,addFunction: true, role: 'provinceCenterEmployee', metaInfo: provinceCenterEmployeeListMetaInfo}, +{name: 'provinceCenterEmployeeList', displayName:'省中心员工',type:'provinceCenterEmployee',count:provinceCenterEmployeeCount,addFunction: true, role: 'provinceCenterEmployee', metaInfo: provinceCenterEmployeeListMetaInfo, renderItem: GlobalComponents.ProvinceCenterEmployeeBase.renderItemOfList}, ], }; @@ -146,6 +146,8 @@ class ProvinceCenterDepartmentDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.permission.js b/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.permission.js index 1ee6da76f..9a53fb21d 100644 --- a/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.permission.js +++ b/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ProvinceCenterDepartment.preference.less' +import styles from './ProvinceCenterDepartment.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.preference.js b/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.preference.js deleted file mode 100644 index 219cb3cec..000000000 --- a/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.preference.js +++ /dev/null @@ -1,357 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ProvinceCenterDepartment.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (provinceCenterDepartment) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (provinceCenterDepartment) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (provinceCenterDepartment) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {ProvinceCenterDepartmentService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = ProvinceCenterDepartmentService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (provinceCenterDepartment,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=provinceCenterDepartment.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_provinceCenterDepartment/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (provinceCenterDepartment,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(provinceCenterDepartment,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (provinceCenterDepartment) =>{ - return null -} -const internalRenderExtraFooter = (provinceCenterDepartment) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (provinceCenterDepartment,targetComponent) =>{ - const userContext = null - return ( - -{provinceCenterDepartment.id} -{provinceCenterDepartment.name} -{ moment(provinceCenterDepartment.founded).format('YYYY-MM-DD')} -{provinceCenterDepartment.provinceCenter==null?appLocaleName(userContext,"NotAssigned"):provinceCenterDepartment.provinceCenter.displayName} - - showTransferModel(targetComponent,"省中心","retailStoreProvinceCenter","requestCandidateProvinceCenter", - "transferToAnotherProvinceCenter","anotherProvinceCenterId",provinceCenterDepartment.provinceCenter?provinceCenterDepartment.provinceCenter.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{provinceCenterDepartment.manager} - - {buildTransferModal(provinceCenterDepartment,targetComponent)} - - ) - -} - - -const renderPermissionSetting = provinceCenterDepartment => { - const {ProvinceCenterDepartmentBase} = GlobalComponents - return - - -} - - -class ProvinceCenterDepartmentPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const provinceCenterDepartment = this.props.provinceCenterDepartment; - const { id,displayName, provinceCenterEmployeeCount } = provinceCenterDepartment - - - - const cardsData = {cardsName:"省中心",cardsFor: "provinceCenterDepartment",cardsSource: provinceCenterDepartment, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - provinceCenterDepartment: state._provinceCenterDepartment, -}))(Form.create()(ProvinceCenterDepartmentPreference)) - diff --git a/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.preference.less b/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.profile.js b/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.profile.js index 40995f915..6e8ecafe0 100644 --- a/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.profile.js +++ b/bizui/src/bizcomponents/provincecenterdepartment/ProvinceCenterDepartment.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ProvinceCenterDepartment.preference.less' +import styles from './ProvinceCenterDepartment.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,18 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (provinceCenterDepartment,targetComponent) =>{ - const userContext = null - return ( - -{provinceCenterDepartment.id} -{provinceCenterDepartment.name} -{ moment(provinceCenterDepartment.founded).format('YYYY-MM-DD')} -{provinceCenterDepartment.manager} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.ProvinceCenterDepartmentBase.renderItemOfList(item, targetComponents) + } @@ -65,13 +58,14 @@ class ProvinceCenterDepartmentProfile extends Component { const cardsData = {cardsName:"省中心",cardsFor: "provinceCenterDepartment",cardsSource: provinceCenterDepartment, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -81,7 +75,7 @@ class ProvinceCenterDepartmentProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.associateform.js b/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.associateform.js index 13ef06e10..9f10f9ea1 100644 --- a/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.associateform.js +++ b/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.associateform.js @@ -21,9 +21,9 @@ const testValues = { name: '刘强', mobile: '13999998888', email: 'wangdehong@yatang.cn', - founded: '2018-04-20', - departmentId: 'PCD000001', - provinceCenterId: 'RSPC000001', + founded: '2019-03-05', + departmentId: 'PCD00000001', + provinceCenterId: 'RSPC00000001', } */ diff --git a/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.base.js b/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.base.js index fe125b29e..94414c9c0 100644 --- a/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.base.js +++ b/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -57,34 +58,30 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({provinceCenterEmployee,targetComponent})=>{ +const renderItemOfList=(provinceCenterEmployee,targetComponent)=>{ - const {ProvinceCenterEmployeeService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {provinceCenterEmployee.id} {provinceCenterEmployee.name} {provinceCenterEmployee.mobile} {provinceCenterEmployee.email} { moment(provinceCenterEmployee.founded).format('YYYY-MM-DD')} {provinceCenterEmployee.department==null?appLocaleName(userContext,"NotAssigned"):`${provinceCenterEmployee.department.displayName}(${provinceCenterEmployee.department.id})`} - - showTransferModel(targetComponent,"部门","provinceCenterDepartment",ProvinceCenterEmployeeService.requestCandidateDepartment, - ProvinceCenterEmployeeService.transferToAnotherDepartment,"anotherDepartmentId",provinceCenterEmployee.department?provinceCenterEmployee.department.id:"")} - style={{fontSize: 20,color:"red"}} /> {provinceCenterEmployee.provinceCenter==null?appLocaleName(userContext,"NotAssigned"):`${provinceCenterEmployee.provinceCenter.displayName}(${provinceCenterEmployee.provinceCenter.id})`} - - showTransferModel(targetComponent,"省中心","retailStoreProvinceCenter",ProvinceCenterEmployeeService.requestCandidateProvinceCenter, - ProvinceCenterEmployeeService.transferToAnotherProvinceCenter,"anotherProvinceCenterId",provinceCenterEmployee.provinceCenter?provinceCenterEmployee.provinceCenter.id:"")} - style={{fontSize: 20,color:"red"}} /> - {buildTransferModal(provinceCenterEmployee,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.createform.js b/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.createform.js index 97c53f5d7..f305ae556 100644 --- a/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.createform.js +++ b/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.createform.js @@ -20,9 +20,9 @@ const testValues = { name: '刘强', mobile: '13999998888', email: 'wangdehong@yatang.cn', - founded: '2017-03-09', - departmentId: 'PCD000001', - provinceCenterId: 'RSPC000001', + founded: '2019-06-06', + departmentId: 'PCD00000001', + provinceCenterId: 'RSPC00000001', } */ diff --git a/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.dashboard.js b/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.dashboard.js index 511c46ff4..1d743ae27 100644 --- a/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.dashboard.js +++ b/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(provinceCenterEmployee)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (provinceCenterEmployee) =>defaultSettingListOf(provinceCenterEmployee, optionList) const internalLargeTextOf = (provinceCenterEmployee) =>{ @@ -152,6 +152,8 @@ class ProvinceCenterEmployeeDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.permission.js b/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.permission.js index df1d8bce9..2b521be83 100644 --- a/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.permission.js +++ b/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ProvinceCenterEmployee.preference.less' +import styles from './ProvinceCenterEmployee.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.preference.js b/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.preference.js deleted file mode 100644 index a9595dddd..000000000 --- a/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.preference.js +++ /dev/null @@ -1,364 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ProvinceCenterEmployee.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (provinceCenterEmployee) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (provinceCenterEmployee) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (provinceCenterEmployee) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {ProvinceCenterEmployeeService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = ProvinceCenterEmployeeService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (provinceCenterEmployee,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=provinceCenterEmployee.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_provinceCenterEmployee/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (provinceCenterEmployee,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(provinceCenterEmployee,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (provinceCenterEmployee) =>{ - return null -} -const internalRenderExtraFooter = (provinceCenterEmployee) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (provinceCenterEmployee,targetComponent) =>{ - const userContext = null - return ( - -{provinceCenterEmployee.id} -{provinceCenterEmployee.name} -{provinceCenterEmployee.mobile} -{provinceCenterEmployee.email} -{ moment(provinceCenterEmployee.founded).format('YYYY-MM-DD')} -{provinceCenterEmployee.department==null?appLocaleName(userContext,"NotAssigned"):provinceCenterEmployee.department.displayName} - - showTransferModel(targetComponent,"部门","provinceCenterDepartment","requestCandidateDepartment", - "transferToAnotherDepartment","anotherDepartmentId",provinceCenterEmployee.department?provinceCenterEmployee.department.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{provinceCenterEmployee.provinceCenter==null?appLocaleName(userContext,"NotAssigned"):provinceCenterEmployee.provinceCenter.displayName} - - showTransferModel(targetComponent,"省中心","retailStoreProvinceCenter","requestCandidateProvinceCenter", - "transferToAnotherProvinceCenter","anotherProvinceCenterId",provinceCenterEmployee.provinceCenter?provinceCenterEmployee.provinceCenter.id:"")} - style={{fontSize: 20,color:"red"}} /> - - - {buildTransferModal(provinceCenterEmployee,targetComponent)} - - ) - -} - - -const renderPermissionSetting = provinceCenterEmployee => { - const {ProvinceCenterEmployeeBase} = GlobalComponents - return - - -} - - -class ProvinceCenterEmployeePreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const provinceCenterEmployee = this.props.provinceCenterEmployee; - const { id,displayName, } = provinceCenterEmployee - - - - const cardsData = {cardsName:"省中心员工",cardsFor: "provinceCenterEmployee",cardsSource: provinceCenterEmployee, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - provinceCenterEmployee: state._provinceCenterEmployee, -}))(Form.create()(ProvinceCenterEmployeePreference)) - diff --git a/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.preference.less b/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.profile.js b/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.profile.js index de25849ee..11cde3d63 100644 --- a/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.profile.js +++ b/bizui/src/bizcomponents/provincecenteremployee/ProvinceCenterEmployee.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ProvinceCenterEmployee.preference.less' +import styles from './ProvinceCenterEmployee.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,19 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (provinceCenterEmployee,targetComponent) =>{ - const userContext = null - return ( - -{provinceCenterEmployee.id} -{provinceCenterEmployee.name} -{provinceCenterEmployee.mobile} -{provinceCenterEmployee.email} -{ moment(provinceCenterEmployee.founded).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.ProvinceCenterEmployeeBase.renderItemOfList(item, targetComponents) + } @@ -66,13 +58,14 @@ class ProvinceCenterEmployeeProfile extends Component { const cardsData = {cardsName:"省中心员工",cardsFor: "provinceCenterEmployee",cardsSource: provinceCenterEmployee, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -82,7 +75,7 @@ class ProvinceCenterEmployeeProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/publicholiday/PublicHoliday.associateform.js b/bizui/src/bizcomponents/publicholiday/PublicHoliday.associateform.js index 653d4cb3b..d94e209ae 100644 --- a/bizui/src/bizcomponents/publicholiday/PublicHoliday.associateform.js +++ b/bizui/src/bizcomponents/publicholiday/PublicHoliday.associateform.js @@ -21,7 +21,7 @@ const testValues = { code: 'PH00', name: '元旦节', description: '节日快乐,万事如意!', - companyId: 'RSCC000001', + companyId: 'RSCC00000001', } */ diff --git a/bizui/src/bizcomponents/publicholiday/PublicHoliday.base.js b/bizui/src/bizcomponents/publicholiday/PublicHoliday.base.js index 971409f03..a5c9af82c 100644 --- a/bizui/src/bizcomponents/publicholiday/PublicHoliday.base.js +++ b/bizui/src/bizcomponents/publicholiday/PublicHoliday.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -53,21 +54,25 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({publicHoliday,targetComponent})=>{ +const renderItemOfList=(publicHoliday,targetComponent)=>{ - const {PublicHolidayService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {publicHoliday.id} {publicHoliday.code} {publicHoliday.name} {publicHoliday.description} - {buildTransferModal(publicHoliday,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/publicholiday/PublicHoliday.createform.js b/bizui/src/bizcomponents/publicholiday/PublicHoliday.createform.js index a7ef9a6ce..b64aa4541 100644 --- a/bizui/src/bizcomponents/publicholiday/PublicHoliday.createform.js +++ b/bizui/src/bizcomponents/publicholiday/PublicHoliday.createform.js @@ -20,7 +20,7 @@ const testValues = { code: 'PH00', name: '元旦节', description: '节日快乐,万事如意!', - companyId: 'RSCC000001', + companyId: 'RSCC00000001', } */ diff --git a/bizui/src/bizcomponents/publicholiday/PublicHoliday.dashboard.js b/bizui/src/bizcomponents/publicholiday/PublicHoliday.dashboard.js index e70e6ddba..5f016f3d9 100644 --- a/bizui/src/bizcomponents/publicholiday/PublicHoliday.dashboard.js +++ b/bizui/src/bizcomponents/publicholiday/PublicHoliday.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(publicHoliday)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (publicHoliday) =>defaultSettingListOf(publicHoliday, optionList) const internalLargeTextOf = (publicHoliday) =>{ @@ -139,6 +139,8 @@ class PublicHolidayDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/publicholiday/PublicHoliday.permission.js b/bizui/src/bizcomponents/publicholiday/PublicHoliday.permission.js index ad599c3e3..4ba5b21be 100644 --- a/bizui/src/bizcomponents/publicholiday/PublicHoliday.permission.js +++ b/bizui/src/bizcomponents/publicholiday/PublicHoliday.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './PublicHoliday.preference.less' +import styles from './PublicHoliday.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/publicholiday/PublicHoliday.preference.js b/bizui/src/bizcomponents/publicholiday/PublicHoliday.preference.js deleted file mode 100644 index 726945aad..000000000 --- a/bizui/src/bizcomponents/publicholiday/PublicHoliday.preference.js +++ /dev/null @@ -1,351 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './PublicHoliday.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (publicHoliday) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (publicHoliday) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (publicHoliday) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {PublicHolidayService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = PublicHolidayService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (publicHoliday,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=publicHoliday.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_publicHoliday/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (publicHoliday,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(publicHoliday,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (publicHoliday) =>{ - return null -} -const internalRenderExtraFooter = (publicHoliday) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (publicHoliday,targetComponent) =>{ - const userContext = null - return ( - -{publicHoliday.id} -{publicHoliday.code} -{publicHoliday.name} -{publicHoliday.description} - - {buildTransferModal(publicHoliday,targetComponent)} - - ) - -} - - -const renderPermissionSetting = publicHoliday => { - const {PublicHolidayBase} = GlobalComponents - return - - -} - - -class PublicHolidayPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const publicHoliday = this.props.publicHoliday; - const { id,displayName, } = publicHoliday - - - - const cardsData = {cardsName:"公共假日",cardsFor: "publicHoliday",cardsSource: publicHoliday, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - publicHoliday: state._publicHoliday, -}))(Form.create()(PublicHolidayPreference)) - diff --git a/bizui/src/bizcomponents/publicholiday/PublicHoliday.preference.less b/bizui/src/bizcomponents/publicholiday/PublicHoliday.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/publicholiday/PublicHoliday.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/publicholiday/PublicHoliday.profile.js b/bizui/src/bizcomponents/publicholiday/PublicHoliday.profile.js index 91de8d32f..62f766a65 100644 --- a/bizui/src/bizcomponents/publicholiday/PublicHoliday.profile.js +++ b/bizui/src/bizcomponents/publicholiday/PublicHoliday.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './PublicHoliday.preference.less' +import styles from './PublicHoliday.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,18 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (publicHoliday,targetComponent) =>{ - const userContext = null - return ( - -{publicHoliday.id} -{publicHoliday.code} -{publicHoliday.name} -{publicHoliday.description} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.PublicHolidayBase.renderItemOfList(item, targetComponents) + } @@ -65,13 +58,14 @@ class PublicHolidayProfile extends Component { const cardsData = {cardsName:"公共假日",cardsFor: "publicHoliday",cardsSource: publicHoliday, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -81,7 +75,7 @@ class PublicHolidayProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/receivingspace/ReceivingSpace.associateform.js b/bizui/src/bizcomponents/receivingspace/ReceivingSpace.associateform.js index 5fab82cf2..363d0e14b 100644 --- a/bizui/src/bizcomponents/receivingspace/ReceivingSpace.associateform.js +++ b/bizui/src/bizcomponents/receivingspace/ReceivingSpace.associateform.js @@ -22,9 +22,9 @@ const testValues = { contactNumber: '02887654321', description: '每个收货区可以供一辆车卸货', totalArea: '1876平方米', - latitude: '41.06119032516744', - longitude: '131.7963559290403', - warehouseId: 'W000001', + latitude: '42.42599964715505', + longitude: '131.02328336085208', + warehouseId: 'W00000001', } */ diff --git a/bizui/src/bizcomponents/receivingspace/ReceivingSpace.base.js b/bizui/src/bizcomponents/receivingspace/ReceivingSpace.base.js index e403d7643..0206dce4e 100644 --- a/bizui/src/bizcomponents/receivingspace/ReceivingSpace.base.js +++ b/bizui/src/bizcomponents/receivingspace/ReceivingSpace.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -62,31 +63,31 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({receivingSpace,targetComponent})=>{ +const renderItemOfList=(receivingSpace,targetComponent)=>{ - const {ReceivingSpaceService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {receivingSpace.id} {receivingSpace.location} {receivingSpace.contactNumber} {receivingSpace.description} {receivingSpace.totalArea} {receivingSpace.warehouse==null?appLocaleName(userContext,"NotAssigned"):`${receivingSpace.warehouse.displayName}(${receivingSpace.warehouse.id})`} - - showTransferModel(targetComponent,"仓库","warehouse",ReceivingSpaceService.requestCandidateWarehouse, - ReceivingSpaceService.transferToAnotherWarehouse,"anotherWarehouseId",receivingSpace.warehouse?receivingSpace.warehouse.id:"")} - style={{fontSize: 20,color:"red"}} /> {receivingSpace.latitude} {receivingSpace.longitude} { moment(receivingSpace.lastUpdateTime).format('YYYY-MM-DD')} - {buildTransferModal(receivingSpace,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/receivingspace/ReceivingSpace.createform.js b/bizui/src/bizcomponents/receivingspace/ReceivingSpace.createform.js index 5682fca91..9f4299049 100644 --- a/bizui/src/bizcomponents/receivingspace/ReceivingSpace.createform.js +++ b/bizui/src/bizcomponents/receivingspace/ReceivingSpace.createform.js @@ -21,9 +21,9 @@ const testValues = { contactNumber: '02887654321', description: '每个收货区可以供一辆车卸货', totalArea: '1876平方米', - latitude: '39.86492266650112', - longitude: '129.73994296416566', - warehouseId: 'W000001', + latitude: '40.288388444304864', + longitude: '129.7113767898064', + warehouseId: 'W00000001', } */ diff --git a/bizui/src/bizcomponents/receivingspace/ReceivingSpace.dashboard.js b/bizui/src/bizcomponents/receivingspace/ReceivingSpace.dashboard.js index 87c358f33..b63bef4e2 100644 --- a/bizui/src/bizcomponents/receivingspace/ReceivingSpace.dashboard.js +++ b/bizui/src/bizcomponents/receivingspace/ReceivingSpace.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(receivingSpace)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (receivingSpace) =>defaultSettingListOf(receivingSpace, optionList) const internalLargeTextOf = (receivingSpace) =>{ @@ -135,7 +135,7 @@ class ReceivingSpaceDashboard extends Component { const cardsData = {cardsName:"收货区",cardsFor: "receivingSpace", cardsSource: this.props.receivingSpace,returnURL,displayName, subItems: [ -{name: 'goodsList', displayName:'货物',type:'goods',count:goodsCount,addFunction: true, role: 'goods', metaInfo: goodsListMetaInfo}, +{name: 'goodsList', displayName:'货物',type:'goods',count:goodsCount,addFunction: true, role: 'goods', metaInfo: goodsListMetaInfo, renderItem: GlobalComponents.GoodsBase.renderItemOfList}, ], }; @@ -150,6 +150,8 @@ class ReceivingSpaceDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/receivingspace/ReceivingSpace.permission.js b/bizui/src/bizcomponents/receivingspace/ReceivingSpace.permission.js index 53b4907c0..f1a878238 100644 --- a/bizui/src/bizcomponents/receivingspace/ReceivingSpace.permission.js +++ b/bizui/src/bizcomponents/receivingspace/ReceivingSpace.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ReceivingSpace.preference.less' +import styles from './ReceivingSpace.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/receivingspace/ReceivingSpace.preference.js b/bizui/src/bizcomponents/receivingspace/ReceivingSpace.preference.js deleted file mode 100644 index f1a4ceb54..000000000 --- a/bizui/src/bizcomponents/receivingspace/ReceivingSpace.preference.js +++ /dev/null @@ -1,361 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ReceivingSpace.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (receivingSpace) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (receivingSpace) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (receivingSpace) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {ReceivingSpaceService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = ReceivingSpaceService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (receivingSpace,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=receivingSpace.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_receivingSpace/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (receivingSpace,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(receivingSpace,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (receivingSpace) =>{ - return null -} -const internalRenderExtraFooter = (receivingSpace) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (receivingSpace,targetComponent) =>{ - const userContext = null - return ( - -{receivingSpace.id} -{receivingSpace.location} -{receivingSpace.contactNumber} -{receivingSpace.description} -{receivingSpace.totalArea} -{receivingSpace.warehouse==null?appLocaleName(userContext,"NotAssigned"):receivingSpace.warehouse.displayName} - - showTransferModel(targetComponent,"仓库","warehouse","requestCandidateWarehouse", - "transferToAnotherWarehouse","anotherWarehouseId",receivingSpace.warehouse?receivingSpace.warehouse.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{receivingSpace.latitude} -{receivingSpace.longitude} -{ moment(receivingSpace.lastUpdateTime).format('YYYY-MM-DD')} - - {buildTransferModal(receivingSpace,targetComponent)} - - ) - -} - - -const renderPermissionSetting = receivingSpace => { - const {ReceivingSpaceBase} = GlobalComponents - return - - -} - - -class ReceivingSpacePreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const receivingSpace = this.props.receivingSpace; - const { id,displayName, goodsCount } = receivingSpace - - - - const cardsData = {cardsName:"收货区",cardsFor: "receivingSpace",cardsSource: receivingSpace, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - receivingSpace: state._receivingSpace, -}))(Form.create()(ReceivingSpacePreference)) - diff --git a/bizui/src/bizcomponents/receivingspace/ReceivingSpace.preference.less b/bizui/src/bizcomponents/receivingspace/ReceivingSpace.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/receivingspace/ReceivingSpace.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/receivingspace/ReceivingSpace.profile.js b/bizui/src/bizcomponents/receivingspace/ReceivingSpace.profile.js index 41f8de066..d70695191 100644 --- a/bizui/src/bizcomponents/receivingspace/ReceivingSpace.profile.js +++ b/bizui/src/bizcomponents/receivingspace/ReceivingSpace.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ReceivingSpace.preference.less' +import styles from './ReceivingSpace.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,22 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (receivingSpace,targetComponent) =>{ - const userContext = null - return ( - -{receivingSpace.id} -{receivingSpace.location} -{receivingSpace.contactNumber} -{receivingSpace.description} -{receivingSpace.totalArea} -{receivingSpace.latitude} -{receivingSpace.longitude} -{ moment(receivingSpace.lastUpdateTime).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.ReceivingSpaceBase.renderItemOfList(item, targetComponents) + } @@ -69,13 +58,14 @@ class ReceivingSpaceProfile extends Component { const cardsData = {cardsName:"收货区",cardsFor: "receivingSpace",cardsSource: receivingSpace, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -85,7 +75,7 @@ class ReceivingSpaceProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/report/Report.preference.js b/bizui/src/bizcomponents/report/Report.preference.js deleted file mode 100644 index 127d221c0..000000000 --- a/bizui/src/bizcomponents/report/Report.preference.js +++ /dev/null @@ -1,344 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './Report.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (report) =>{ - - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (report) =>{ - - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (report) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {ReportService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = ReportService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:"重新分配<"+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,"城市","city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (report,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=report.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_report/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (report,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(report,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: '请搜索' }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (report) =>{ - return null -} -const internalRenderExtraFooter = (report) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 管理 - - {item.addFunction&&( 新增)} - -

-
- ))} -
) -} - -const internalSummaryOf = (report,targetComponent) =>{ - - return ( - -{report.id} -{report.name} -{report.createdBy} - - {buildTransferModal(report,targetComponent)} - - ) - -} - - -const renderPermissionSetting = report => { - const {ReportBase} = GlobalComponents - return - - -} - - -class ReportPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"city", - targetLocalName:"城市", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const { id,displayName, reportLineCount } = this.props.report - const cardsData = {cardsName:"报告",cardsFor: "report",cardsSource: this.props.report, - subItems: [ - - ], - }; - //下面各个渲染方法都可以定制,只要在每个模型的里面的_features="custom"就可以得到定制的例子 - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - report: state._report, -}))(Form.create()(ReportPreference)) - diff --git a/bizui/src/bizcomponents/report/Report.preference.less b/bizui/src/bizcomponents/report/Report.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/report/Report.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/reportline/ReportLine.preference.js b/bizui/src/bizcomponents/reportline/ReportLine.preference.js deleted file mode 100644 index 32549ecd7..000000000 --- a/bizui/src/bizcomponents/reportline/ReportLine.preference.js +++ /dev/null @@ -1,361 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ReportLine.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (reportLine) =>{ - - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (reportLine) =>{ - - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (reportLine) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {ReportLineService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = ReportLineService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:"重新分配<"+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,"城市","city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (reportLine,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=reportLine.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_reportLine/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (reportLine,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(reportLine,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: '请搜索' }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (reportLine) =>{ - return null -} -const internalRenderExtraFooter = (reportLine) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 管理 - - {item.addFunction&&( 新增)} - -

-
- ))} -
) -} - -const internalSummaryOf = (reportLine,targetComponent) =>{ - - return ( - -{reportLine.id} -{reportLine.name} -{reportLine.owner==null?"未分配":reportLine.owner.displayName} - - showTransferModel(targetComponent,"业主","report","requestCandidateOwner", - "transferToAnotherOwner","anotherOwnerId",reportLine.owner?reportLine.owner.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{reportLine.january} -{reportLine.february} -{reportLine.march} -{reportLine.april} -{reportLine.may} -{reportLine.june} -{reportLine.july} -{reportLine.august} -{reportLine.september} -{reportLine.october} -{reportLine.november} -{reportLine.december} - - {buildTransferModal(reportLine,targetComponent)} - - ) - -} - - -const renderPermissionSetting = reportLine => { - const {ReportLineBase} = GlobalComponents - return - - -} - - -class ReportLinePreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"city", - targetLocalName:"城市", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const { id,displayName, } = this.props.reportLine - const cardsData = {cardsName:"报告线",cardsFor: "reportLine",cardsSource: this.props.reportLine, - subItems: [ - - ], - }; - //下面各个渲染方法都可以定制,只要在每个模型的里面的_features="custom"就可以得到定制的例子 - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - reportLine: state._reportLine, -}))(Form.create()(ReportLinePreference)) - diff --git a/bizui/src/bizcomponents/reportline/ReportLine.preference.less b/bizui/src/bizcomponents/reportline/ReportLine.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/reportline/ReportLine.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.associateform.js b/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.associateform.js index 63bcfbe23..7dd53c7dc 100644 --- a/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.associateform.js +++ b/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.associateform.js @@ -21,7 +21,7 @@ const testValues = { code: 'S0000', baseDescription: '合规管理', detailDescription: '负责集团及其他分公司信息系统有效运作,并使集团在技术上领先', - companyId: 'RSCC000001', + companyId: 'RSCC00000001', } */ diff --git a/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.base.js b/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.base.js index db69074ba..ab639c688 100644 --- a/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.base.js +++ b/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -54,21 +55,25 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({responsibilityType,targetComponent})=>{ +const renderItemOfList=(responsibilityType,targetComponent)=>{ - const {ResponsibilityTypeService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {responsibilityType.id} {responsibilityType.code} {responsibilityType.baseDescription} {responsibilityType.detailDescription} - {buildTransferModal(responsibilityType,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.createform.js b/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.createform.js index 2c090eb3c..c85a9dbd2 100644 --- a/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.createform.js +++ b/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.createform.js @@ -20,7 +20,7 @@ const testValues = { code: 'S0000', baseDescription: '合规管理', detailDescription: '负责集团及其他分公司信息系统有效运作,并使集团在技术上领先', - companyId: 'RSCC000001', + companyId: 'RSCC00000001', } */ diff --git a/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.dashboard.js b/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.dashboard.js index 3ff74f6b2..3189a0494 100644 --- a/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.dashboard.js +++ b/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(responsibilityType)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (responsibilityType) =>defaultSettingListOf(responsibilityType, optionList) const internalLargeTextOf = (responsibilityType) =>{ @@ -125,7 +125,7 @@ class ResponsibilityTypeDashboard extends Component { const cardsData = {cardsName:"责任类型",cardsFor: "responsibilityType", cardsSource: this.props.responsibilityType,returnURL,displayName, subItems: [ -{name: 'employeeList', displayName:'员工',type:'employee',count:employeeCount,addFunction: true, role: 'employee', metaInfo: employeeListMetaInfo}, +{name: 'employeeList', displayName:'员工',type:'employee',count:employeeCount,addFunction: true, role: 'employee', metaInfo: employeeListMetaInfo, renderItem: GlobalComponents.EmployeeBase.renderItemOfList}, ], }; @@ -140,6 +140,8 @@ class ResponsibilityTypeDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.permission.js b/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.permission.js index a4b640317..51dd0380a 100644 --- a/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.permission.js +++ b/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ResponsibilityType.preference.less' +import styles from './ResponsibilityType.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.preference.js b/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.preference.js deleted file mode 100644 index cba0127f6..000000000 --- a/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.preference.js +++ /dev/null @@ -1,351 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ResponsibilityType.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (responsibilityType) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (responsibilityType) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (responsibilityType) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {ResponsibilityTypeService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = ResponsibilityTypeService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (responsibilityType,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=responsibilityType.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_responsibilityType/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (responsibilityType,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(responsibilityType,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (responsibilityType) =>{ - return null -} -const internalRenderExtraFooter = (responsibilityType) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (responsibilityType,targetComponent) =>{ - const userContext = null - return ( - -{responsibilityType.id} -{responsibilityType.code} -{responsibilityType.baseDescription} -{responsibilityType.detailDescription} - - {buildTransferModal(responsibilityType,targetComponent)} - - ) - -} - - -const renderPermissionSetting = responsibilityType => { - const {ResponsibilityTypeBase} = GlobalComponents - return - - -} - - -class ResponsibilityTypePreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const responsibilityType = this.props.responsibilityType; - const { id,displayName, employeeCount } = responsibilityType - - - - const cardsData = {cardsName:"责任类型",cardsFor: "responsibilityType",cardsSource: responsibilityType, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - responsibilityType: state._responsibilityType, -}))(Form.create()(ResponsibilityTypePreference)) - diff --git a/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.preference.less b/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.profile.js b/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.profile.js index 8b7510a12..1bb5b1198 100644 --- a/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.profile.js +++ b/bizui/src/bizcomponents/responsibilitytype/ResponsibilityType.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ResponsibilityType.preference.less' +import styles from './ResponsibilityType.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,18 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (responsibilityType,targetComponent) =>{ - const userContext = null - return ( - -{responsibilityType.id} -{responsibilityType.code} -{responsibilityType.baseDescription} -{responsibilityType.detailDescription} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.ResponsibilityTypeBase.renderItemOfList(item, targetComponents) + } @@ -65,13 +58,14 @@ class ResponsibilityTypeProfile extends Component { const cardsData = {cardsName:"责任类型",cardsFor: "responsibilityType",cardsSource: responsibilityType, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -81,7 +75,7 @@ class ResponsibilityTypeProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/retailstore/RetailStore.associateform.js b/bizui/src/bizcomponents/retailstore/RetailStore.associateform.js index 12f90ad79..d852f566d 100644 --- a/bizui/src/bizcomponents/retailstore/RetailStore.associateform.js +++ b/bizui/src/bizcomponents/retailstore/RetailStore.associateform.js @@ -21,12 +21,12 @@ const testValues = { name: '中和社区小超', telephone: '02887654321', owner: '吕刚', - founded: '2017-10-25', - latitude: '39.86262407648065', - longitude: '130.93670168520543', + founded: '2017-03-04', + latitude: '40.34340829975312', + longitude: '129.66783050750203', description: '啤酒饮料矿泉水,香肠瓜子方便面, 请让一让', - retailStoreCountryCenterId: 'RSCC000001', - cityServiceCenterId: 'RSCSC000001', + retailStoreCountryCenterId: 'RSCC00000001', + cityServiceCenterId: 'RSCSC00000001', } */ diff --git a/bizui/src/bizcomponents/retailstore/RetailStore.base.js b/bizui/src/bizcomponents/retailstore/RetailStore.base.js index 30be11749..ca0d789ae 100644 --- a/bizui/src/bizcomponents/retailstore/RetailStore.base.js +++ b/bizui/src/bizcomponents/retailstore/RetailStore.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -48,10 +49,10 @@ const fieldLabels = { retailStoreCountryCenter: '双链小超全国运营中心', cityServiceCenter: '城市服务中心', creation: '创建', - investmentInvitation: '招商', - franchising: '加盟', + investmentInvitation: 'Invite Investment', + franchising: '特许经营', decoration: '装修', - opening: '开业', + opening: '开放', closing: '关闭', founded: '成立', latitude: '纬度', @@ -84,23 +85,21 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({retailStore,targetComponent})=>{ +const renderItemOfList=(retailStore,targetComponent)=>{ - const {RetailStoreService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {retailStore.id} {retailStore.name} {retailStore.telephone} {retailStore.owner} {retailStore.cityServiceCenter==null?appLocaleName(userContext,"NotAssigned"):`${retailStore.cityServiceCenter.displayName}(${retailStore.cityServiceCenter.id})`} - - showTransferModel(targetComponent,"城市服务中心","retailStoreCityServiceCenter",RetailStoreService.requestCandidateCityServiceCenter, - RetailStoreService.transferToAnotherCityServiceCenter,"anotherCityServiceCenterId",retailStore.cityServiceCenter?retailStore.cityServiceCenter.id:"")} - style={{fontSize: 20,color:"red"}} /> { moment(retailStore.founded).format('YYYY-MM-DD')} {retailStore.latitude} @@ -109,8 +108,10 @@ const renderItemOfList=({retailStore,targetComponent})=>{ { moment(retailStore.lastUpdateTime).format('YYYY-MM-DD')} {retailStore.currentStatus} - {buildTransferModal(retailStore,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/retailstore/RetailStore.createform.js b/bizui/src/bizcomponents/retailstore/RetailStore.createform.js index dd63fed70..3c49f5559 100644 --- a/bizui/src/bizcomponents/retailstore/RetailStore.createform.js +++ b/bizui/src/bizcomponents/retailstore/RetailStore.createform.js @@ -20,12 +20,12 @@ const testValues = { name: '中和社区小超', telephone: '02887654321', owner: '吕刚', - founded: '2018-01-30', - latitude: '42.766831709441405', - longitude: '129.4169056520242', + founded: '2018-11-14', + latitude: '42.49863394098968', + longitude: '131.24658184509943', description: '啤酒饮料矿泉水,香肠瓜子方便面, 请让一让', - retailStoreCountryCenterId: 'RSCC000001', - cityServiceCenterId: 'RSCSC000001', + retailStoreCountryCenterId: 'RSCC00000001', + cityServiceCenterId: 'RSCSC00000001', } */ diff --git a/bizui/src/bizcomponents/retailstore/RetailStore.dashboard.js b/bizui/src/bizcomponents/retailstore/RetailStore.dashboard.js index c5d744723..d1a307750 100644 --- a/bizui/src/bizcomponents/retailstore/RetailStore.dashboard.js +++ b/bizui/src/bizcomponents/retailstore/RetailStore.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(retailStore)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (retailStore) =>defaultSettingListOf(retailStore, optionList) const internalLargeTextOf = (retailStore) =>{ @@ -137,11 +137,11 @@ class RetailStoreDashboard extends Component { const cardsData = {cardsName:"双链小超",cardsFor: "retailStore", cardsSource: this.props.retailStore,returnURL,displayName, subItems: [ -{name: 'consumerOrderList', displayName:'消费者订单',type:'consumerOrder',count:consumerOrderCount,addFunction: true, role: 'consumerOrder', metaInfo: consumerOrderListMetaInfo}, -{name: 'retailStoreOrderList', displayName:'生超的订单',type:'retailStoreOrder',count:retailStoreOrderCount,addFunction: true, role: 'retailStoreOrder', metaInfo: retailStoreOrderListMetaInfo}, -{name: 'goodsList', displayName:'货物',type:'goods',count:goodsCount,addFunction: true, role: 'goods', metaInfo: goodsListMetaInfo}, -{name: 'transportTaskList', displayName:'运输任务',type:'transportTask',count:transportTaskCount,addFunction: true, role: 'transportTask', metaInfo: transportTaskListMetaInfo}, -{name: 'accountSetList', displayName:'账套',type:'accountSet',count:accountSetCount,addFunction: true, role: 'accountSet', metaInfo: accountSetListMetaInfo}, +{name: 'consumerOrderList', displayName:'消费者订单',type:'consumerOrder',count:consumerOrderCount,addFunction: true, role: 'consumerOrder', metaInfo: consumerOrderListMetaInfo, renderItem: GlobalComponents.ConsumerOrderBase.renderItemOfList}, +{name: 'retailStoreOrderList', displayName:'生超的订单',type:'retailStoreOrder',count:retailStoreOrderCount,addFunction: true, role: 'retailStoreOrder', metaInfo: retailStoreOrderListMetaInfo, renderItem: GlobalComponents.RetailStoreOrderBase.renderItemOfList}, +{name: 'goodsList', displayName:'货物',type:'goods',count:goodsCount,addFunction: true, role: 'goods', metaInfo: goodsListMetaInfo, renderItem: GlobalComponents.GoodsBase.renderItemOfList}, +{name: 'transportTaskList', displayName:'运输任务',type:'transportTask',count:transportTaskCount,addFunction: true, role: 'transportTask', metaInfo: transportTaskListMetaInfo, renderItem: GlobalComponents.TransportTaskBase.renderItemOfList}, +{name: 'accountSetList', displayName:'账套',type:'accountSet',count:accountSetCount,addFunction: true, role: 'accountSet', metaInfo: accountSetListMetaInfo, renderItem: GlobalComponents.AccountSetBase.renderItemOfList}, ], }; @@ -156,6 +156,8 @@ class RetailStoreDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/retailstore/RetailStore.permission.js b/bizui/src/bizcomponents/retailstore/RetailStore.permission.js index 7badc0ea2..55a16e063 100644 --- a/bizui/src/bizcomponents/retailstore/RetailStore.permission.js +++ b/bizui/src/bizcomponents/retailstore/RetailStore.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStore.preference.less' +import styles from './RetailStore.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/retailstore/RetailStore.preference.js b/bizui/src/bizcomponents/retailstore/RetailStore.preference.js deleted file mode 100644 index 2dbd9f7f6..000000000 --- a/bizui/src/bizcomponents/retailstore/RetailStore.preference.js +++ /dev/null @@ -1,363 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStore.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (retailStore) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (retailStore) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (retailStore) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {RetailStoreService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = RetailStoreService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (retailStore,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=retailStore.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_retailStore/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (retailStore,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(retailStore,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (retailStore) =>{ - return null -} -const internalRenderExtraFooter = (retailStore) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (retailStore,targetComponent) =>{ - const userContext = null - return ( - -{retailStore.id} -{retailStore.name} -{retailStore.telephone} -{retailStore.owner} -{retailStore.cityServiceCenter==null?appLocaleName(userContext,"NotAssigned"):retailStore.cityServiceCenter.displayName} - - showTransferModel(targetComponent,"城市服务中心","retailStoreCityServiceCenter","requestCandidateCityServiceCenter", - "transferToAnotherCityServiceCenter","anotherCityServiceCenterId",retailStore.cityServiceCenter?retailStore.cityServiceCenter.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{ moment(retailStore.founded).format('YYYY-MM-DD')} -{retailStore.latitude} -{retailStore.longitude} -{retailStore.description} -{ moment(retailStore.lastUpdateTime).format('YYYY-MM-DD')} -{retailStore.currentStatus} - - {buildTransferModal(retailStore,targetComponent)} - - ) - -} - - -const renderPermissionSetting = retailStore => { - const {RetailStoreBase} = GlobalComponents - return - - -} - - -class RetailStorePreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const retailStore = this.props.retailStore; - const { id,displayName, consumerOrderCount, retailStoreOrderCount, goodsCount, transportTaskCount, accountSetCount } = retailStore - - - - const cardsData = {cardsName:"双链小超",cardsFor: "retailStore",cardsSource: retailStore, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - retailStore: state._retailStore, -}))(Form.create()(RetailStorePreference)) - diff --git a/bizui/src/bizcomponents/retailstore/RetailStore.preference.less b/bizui/src/bizcomponents/retailstore/RetailStore.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/retailstore/RetailStore.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/retailstore/RetailStore.profile.js b/bizui/src/bizcomponents/retailstore/RetailStore.profile.js index 342b09f65..232d6731e 100644 --- a/bizui/src/bizcomponents/retailstore/RetailStore.profile.js +++ b/bizui/src/bizcomponents/retailstore/RetailStore.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStore.preference.less' +import styles from './RetailStore.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,24 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (retailStore,targetComponent) =>{ - const userContext = null - return ( - -{retailStore.id} -{retailStore.name} -{retailStore.telephone} -{retailStore.owner} -{ moment(retailStore.founded).format('YYYY-MM-DD')} -{retailStore.latitude} -{retailStore.longitude} -{retailStore.description} -{ moment(retailStore.lastUpdateTime).format('YYYY-MM-DD')} -{retailStore.currentStatus} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.RetailStoreBase.renderItemOfList(item, targetComponents) + } @@ -71,13 +58,14 @@ class RetailStoreProfile extends Component { const cardsData = {cardsName:"双链小超",cardsFor: "retailStore",cardsSource: retailStore, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -87,7 +75,7 @@ class RetailStoreProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.associateform.js b/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.associateform.js index bc5c37b64..f034199c7 100644 --- a/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.associateform.js +++ b/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.associateform.js @@ -19,8 +19,8 @@ const testValues = {}; /* const testValues = { name: '双链小超成都办事处', - founded: '2019-03-15', - belongsToId: 'RSPC000001', + founded: '2017-06-09', + belongsToId: 'RSPC00000001', } */ diff --git a/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.base.js b/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.base.js index c21dad512..42005925a 100644 --- a/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.base.js +++ b/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -57,27 +58,27 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({retailStoreCityServiceCenter,targetComponent})=>{ +const renderItemOfList=(retailStoreCityServiceCenter,targetComponent)=>{ - const {RetailStoreCityServiceCenterService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {retailStoreCityServiceCenter.id} {retailStoreCityServiceCenter.name} { moment(retailStoreCityServiceCenter.founded).format('YYYY-MM-DD')} {retailStoreCityServiceCenter.belongsTo==null?appLocaleName(userContext,"NotAssigned"):`${retailStoreCityServiceCenter.belongsTo.displayName}(${retailStoreCityServiceCenter.belongsTo.id})`} - - showTransferModel(targetComponent,"属于","retailStoreProvinceCenter",RetailStoreCityServiceCenterService.requestCandidateBelongsTo, - RetailStoreCityServiceCenterService.transferToAnotherBelongsTo,"anotherBelongsToId",retailStoreCityServiceCenter.belongsTo?retailStoreCityServiceCenter.belongsTo.id:"")} - style={{fontSize: 20,color:"red"}} /> { moment(retailStoreCityServiceCenter.lastUpdateTime).format('YYYY-MM-DD')} - {buildTransferModal(retailStoreCityServiceCenter,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.createform.js b/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.createform.js index 84a1b9620..236601616 100644 --- a/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.createform.js +++ b/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.createform.js @@ -18,8 +18,8 @@ const testValues = {}; /* const testValues = { name: '双链小超成都办事处', - founded: '2018-11-18', - belongsToId: 'RSPC000001', + founded: '2018-12-28', + belongsToId: 'RSPC00000001', } */ diff --git a/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.dashboard.js b/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.dashboard.js index c44b37241..cd3143675 100644 --- a/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.dashboard.js +++ b/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(retailStoreCityServiceCenter)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (retailStoreCityServiceCenter) =>defaultSettingListOf(retailStoreCityServiceCenter, optionList) const internalLargeTextOf = (retailStoreCityServiceCenter) =>{ @@ -131,10 +131,10 @@ class RetailStoreCityServiceCenterDashboard extends Component { const cardsData = {cardsName:"双链小超城市服务中心",cardsFor: "retailStoreCityServiceCenter", cardsSource: this.props.retailStoreCityServiceCenter,returnURL,displayName, subItems: [ -{name: 'cityPartnerList', displayName:'城市合伙人',type:'cityPartner',count:cityPartnerCount,addFunction: true, role: 'cityPartner', metaInfo: cityPartnerListMetaInfo}, -{name: 'potentialCustomerList', displayName:'潜在的客户',type:'potentialCustomer',count:potentialCustomerCount,addFunction: true, role: 'potentialCustomer', metaInfo: potentialCustomerListMetaInfo}, -{name: 'cityEventList', displayName:'城市活动',type:'cityEvent',count:cityEventCount,addFunction: true, role: 'cityEvent', metaInfo: cityEventListMetaInfo}, -{name: 'retailStoreList', displayName:'双链小超',type:'retailStore',count:retailStoreCount,addFunction: true, role: 'retailStore', metaInfo: retailStoreListMetaInfo}, +{name: 'cityPartnerList', displayName:'城市合伙人',type:'cityPartner',count:cityPartnerCount,addFunction: true, role: 'cityPartner', metaInfo: cityPartnerListMetaInfo, renderItem: GlobalComponents.CityPartnerBase.renderItemOfList}, +{name: 'potentialCustomerList', displayName:'潜在的客户',type:'potentialCustomer',count:potentialCustomerCount,addFunction: true, role: 'potentialCustomer', metaInfo: potentialCustomerListMetaInfo, renderItem: GlobalComponents.PotentialCustomerBase.renderItemOfList}, +{name: 'cityEventList', displayName:'城市活动',type:'cityEvent',count:cityEventCount,addFunction: true, role: 'cityEvent', metaInfo: cityEventListMetaInfo, renderItem: GlobalComponents.CityEventBase.renderItemOfList}, +{name: 'retailStoreList', displayName:'双链小超',type:'retailStore',count:retailStoreCount,addFunction: true, role: 'retailStore', metaInfo: retailStoreListMetaInfo, renderItem: GlobalComponents.RetailStoreBase.renderItemOfList}, ], }; @@ -149,6 +149,8 @@ class RetailStoreCityServiceCenterDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.permission.js b/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.permission.js index 385813164..c7fb5123c 100644 --- a/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.permission.js +++ b/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreCityServiceCenter.preference.less' +import styles from './RetailStoreCityServiceCenter.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.preference.js b/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.preference.js deleted file mode 100644 index 83e9502c2..000000000 --- a/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.preference.js +++ /dev/null @@ -1,357 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreCityServiceCenter.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (retailStoreCityServiceCenter) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (retailStoreCityServiceCenter) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (retailStoreCityServiceCenter) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {RetailStoreCityServiceCenterService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = RetailStoreCityServiceCenterService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (retailStoreCityServiceCenter,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=retailStoreCityServiceCenter.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_retailStoreCityServiceCenter/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (retailStoreCityServiceCenter,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(retailStoreCityServiceCenter,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (retailStoreCityServiceCenter) =>{ - return null -} -const internalRenderExtraFooter = (retailStoreCityServiceCenter) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (retailStoreCityServiceCenter,targetComponent) =>{ - const userContext = null - return ( - -{retailStoreCityServiceCenter.id} -{retailStoreCityServiceCenter.name} -{ moment(retailStoreCityServiceCenter.founded).format('YYYY-MM-DD')} -{retailStoreCityServiceCenter.belongsTo==null?appLocaleName(userContext,"NotAssigned"):retailStoreCityServiceCenter.belongsTo.displayName} - - showTransferModel(targetComponent,"属于","retailStoreProvinceCenter","requestCandidateBelongsTo", - "transferToAnotherBelongsTo","anotherBelongsToId",retailStoreCityServiceCenter.belongsTo?retailStoreCityServiceCenter.belongsTo.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{ moment(retailStoreCityServiceCenter.lastUpdateTime).format('YYYY-MM-DD')} - - {buildTransferModal(retailStoreCityServiceCenter,targetComponent)} - - ) - -} - - -const renderPermissionSetting = retailStoreCityServiceCenter => { - const {RetailStoreCityServiceCenterBase} = GlobalComponents - return - - -} - - -class RetailStoreCityServiceCenterPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const retailStoreCityServiceCenter = this.props.retailStoreCityServiceCenter; - const { id,displayName, cityPartnerCount, potentialCustomerCount, cityEventCount, retailStoreCount } = retailStoreCityServiceCenter - - - - const cardsData = {cardsName:"双链小超城市服务中心",cardsFor: "retailStoreCityServiceCenter",cardsSource: retailStoreCityServiceCenter, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - retailStoreCityServiceCenter: state._retailStoreCityServiceCenter, -}))(Form.create()(RetailStoreCityServiceCenterPreference)) - diff --git a/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.preference.less b/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.profile.js b/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.profile.js index 06a5180f7..14b2b54d1 100644 --- a/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.profile.js +++ b/bizui/src/bizcomponents/retailstorecityservicecenter/RetailStoreCityServiceCenter.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreCityServiceCenter.preference.less' +import styles from './RetailStoreCityServiceCenter.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,18 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (retailStoreCityServiceCenter,targetComponent) =>{ - const userContext = null - return ( - -{retailStoreCityServiceCenter.id} -{retailStoreCityServiceCenter.name} -{ moment(retailStoreCityServiceCenter.founded).format('YYYY-MM-DD')} -{ moment(retailStoreCityServiceCenter.lastUpdateTime).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.RetailStoreCityServiceCenterBase.renderItemOfList(item, targetComponents) + } @@ -65,13 +58,14 @@ class RetailStoreCityServiceCenterProfile extends Component { const cardsData = {cardsName:"双链小超城市服务中心",cardsFor: "retailStoreCityServiceCenter",cardsSource: retailStoreCityServiceCenter, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -81,7 +75,7 @@ class RetailStoreCityServiceCenterProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.base.js b/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.base.js index 049fa240d..a29a073ba 100644 --- a/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.base.js +++ b/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -48,19 +49,23 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({retailStoreClosing,targetComponent})=>{ +const renderItemOfList=(retailStoreClosing,targetComponent)=>{ - const {RetailStoreClosingService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {retailStoreClosing.id} {retailStoreClosing.comment} - {buildTransferModal(retailStoreClosing,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.dashboard.js b/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.dashboard.js index 4180bc4fe..1d777e30d 100644 --- a/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.dashboard.js +++ b/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(retailStoreClosing)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (retailStoreClosing) =>defaultSettingListOf(retailStoreClosing, optionList) const internalLargeTextOf = (retailStoreClosing) =>{ @@ -123,7 +123,7 @@ class RetailStoreClosingDashboard extends Component { const cardsData = {cardsName:"商店关闭",cardsFor: "retailStoreClosing", cardsSource: this.props.retailStoreClosing,returnURL,displayName, subItems: [ -{name: 'retailStoreList', displayName:'双链小超',type:'retailStore',count:retailStoreCount,addFunction: true, role: 'retailStore', metaInfo: retailStoreListMetaInfo}, +{name: 'retailStoreList', displayName:'双链小超',type:'retailStore',count:retailStoreCount,addFunction: true, role: 'retailStore', metaInfo: retailStoreListMetaInfo, renderItem: GlobalComponents.RetailStoreBase.renderItemOfList}, ], }; @@ -138,6 +138,8 @@ class RetailStoreClosingDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.permission.js b/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.permission.js index 359cf6fa4..c695db6b6 100644 --- a/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.permission.js +++ b/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreClosing.preference.less' +import styles from './RetailStoreClosing.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.preference.js b/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.preference.js deleted file mode 100644 index f27c2c84e..000000000 --- a/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.preference.js +++ /dev/null @@ -1,349 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreClosing.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (retailStoreClosing) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (retailStoreClosing) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (retailStoreClosing) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {RetailStoreClosingService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = RetailStoreClosingService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (retailStoreClosing,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=retailStoreClosing.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_retailStoreClosing/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (retailStoreClosing,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(retailStoreClosing,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (retailStoreClosing) =>{ - return null -} -const internalRenderExtraFooter = (retailStoreClosing) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (retailStoreClosing,targetComponent) =>{ - const userContext = null - return ( - -{retailStoreClosing.id} -{retailStoreClosing.comment} - - {buildTransferModal(retailStoreClosing,targetComponent)} - - ) - -} - - -const renderPermissionSetting = retailStoreClosing => { - const {RetailStoreClosingBase} = GlobalComponents - return - - -} - - -class RetailStoreClosingPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const retailStoreClosing = this.props.retailStoreClosing; - const { id,displayName, retailStoreCount } = retailStoreClosing - - - - const cardsData = {cardsName:"商店关闭",cardsFor: "retailStoreClosing",cardsSource: retailStoreClosing, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - retailStoreClosing: state._retailStoreClosing, -}))(Form.create()(RetailStoreClosingPreference)) - diff --git a/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.preference.less b/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.profile.js b/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.profile.js index 2658c23a0..80eb46c0b 100644 --- a/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.profile.js +++ b/bizui/src/bizcomponents/retailstoreclosing/RetailStoreClosing.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreClosing.preference.less' +import styles from './RetailStoreClosing.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,16 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (retailStoreClosing,targetComponent) =>{ - const userContext = null - return ( - -{retailStoreClosing.id} -{retailStoreClosing.comment} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.RetailStoreClosingBase.renderItemOfList(item, targetComponents) + } @@ -63,13 +58,14 @@ class RetailStoreClosingProfile extends Component { const cardsData = {cardsName:"商店关闭",cardsFor: "retailStoreClosing",cardsSource: retailStoreClosing, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -79,7 +75,7 @@ class RetailStoreClosingProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.associateform.js b/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.associateform.js index 6c4395ccf..98c97bee7 100644 --- a/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.associateform.js +++ b/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.associateform.js @@ -20,7 +20,7 @@ const testValues = {}; const testValues = { name: '双链小超中国国运营中心', serviceNumber: '4000-800-', - founded: '2018-09-28', + founded: '2016-10-12', webSite: 'https://www.doublechaintech.com/', address: '四川省成都市天府新区双链大厦', operatedBy: '双链集团', diff --git a/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.base.js b/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.base.js index 2ad968a3e..2013211d2 100644 --- a/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.base.js +++ b/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -75,14 +76,16 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({retailStoreCountryCenter,targetComponent})=>{ +const renderItemOfList=(retailStoreCountryCenter,targetComponent)=>{ - const {RetailStoreCountryCenterService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {retailStoreCountryCenter.id} {retailStoreCountryCenter.name} {retailStoreCountryCenter.serviceNumber} @@ -93,8 +96,10 @@ const renderItemOfList=({retailStoreCountryCenter,targetComponent})=>{ {retailStoreCountryCenter.legalRepresentative} {retailStoreCountryCenter.description} - {buildTransferModal(retailStoreCountryCenter,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.createform.js b/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.createform.js index 3295004c0..f21431c47 100644 --- a/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.createform.js +++ b/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.createform.js @@ -19,7 +19,7 @@ const testValues = {}; const testValues = { name: '双链小超中国国运营中心', serviceNumber: '4000-800-', - founded: '2018-08-11', + founded: '2018-11-20', webSite: 'https://www.doublechaintech.com/', address: '四川省成都市天府新区双链大厦', operatedBy: '双链集团', diff --git a/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.dashboard.js b/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.dashboard.js index eedf652aa..70acf4aef 100644 --- a/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.dashboard.js +++ b/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(retailStoreCountryCenter)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (retailStoreCountryCenter) =>defaultSettingListOf(retailStoreCountryCenter, optionList) const internalLargeTextOf = (retailStoreCountryCenter) =>{ @@ -130,20 +130,20 @@ class RetailStoreCountryCenterDashboard extends Component { const cardsData = {cardsName:"双链小超全国运营中心",cardsFor: "retailStoreCountryCenter", cardsSource: this.props.retailStoreCountryCenter,returnURL,displayName, subItems: [ -{name: 'catalogList', displayName:'目录',type:'catalog',count:catalogCount,addFunction: true, role: 'catalog', metaInfo: catalogListMetaInfo}, -{name: 'retailStoreProvinceCenterList', displayName:'双链小超省中心',type:'retailStoreProvinceCenter',count:retailStoreProvinceCenterCount,addFunction: true, role: 'retailStoreProvinceCenter', metaInfo: retailStoreProvinceCenterListMetaInfo}, -{name: 'retailStoreList', displayName:'双链小超',type:'retailStore',count:retailStoreCount,addFunction: true, role: 'retailStore', metaInfo: retailStoreListMetaInfo}, -{name: 'retailStoreMemberList', displayName:'生超会员',type:'retailStoreMember',count:retailStoreMemberCount,addFunction: true, role: 'retailStoreMember', metaInfo: retailStoreMemberListMetaInfo}, -{name: 'goodsSupplierList', displayName:'产品供应商',type:'goodsSupplier',count:goodsSupplierCount,addFunction: true, role: 'goodsSupplier', metaInfo: goodsSupplierListMetaInfo}, -{name: 'supplyOrderList', displayName:'供应订单',type:'supplyOrder',count:supplyOrderCount,addFunction: true, role: 'supplyOrder', metaInfo: supplyOrderListMetaInfo}, -{name: 'retailStoreOrderList', displayName:'生超的订单',type:'retailStoreOrder',count:retailStoreOrderCount,addFunction: true, role: 'retailStoreOrder', metaInfo: retailStoreOrderListMetaInfo}, -{name: 'warehouseList', displayName:'仓库',type:'warehouse',count:warehouseCount,addFunction: true, role: 'warehouse', metaInfo: warehouseListMetaInfo}, -{name: 'transportFleetList', displayName:'运输车队',type:'transportFleet',count:transportFleetCount,addFunction: true, role: 'transportFleet', metaInfo: transportFleetListMetaInfo}, -{name: 'accountSetList', displayName:'账套',type:'accountSet',count:accountSetCount,addFunction: true, role: 'accountSet', metaInfo: accountSetListMetaInfo}, -{name: 'levelOneDepartmentList', displayName:'一级部门',type:'levelOneDepartment',count:levelOneDepartmentCount,addFunction: true, role: 'levelOneDepartment', metaInfo: levelOneDepartmentListMetaInfo}, -{name: 'employeeList', displayName:'员工',type:'employee',count:employeeCount,addFunction: true, role: 'employee', metaInfo: employeeListMetaInfo}, -{name: 'instructorList', displayName:'讲师',type:'instructor',count:instructorCount,addFunction: true, role: 'instructor', metaInfo: instructorListMetaInfo}, -{name: 'companyTrainingList', displayName:'公司培训',type:'companyTraining',count:companyTrainingCount,addFunction: true, role: 'companyTraining', metaInfo: companyTrainingListMetaInfo}, +{name: 'catalogList', displayName:'目录',type:'catalog',count:catalogCount,addFunction: true, role: 'catalog', metaInfo: catalogListMetaInfo, renderItem: GlobalComponents.CatalogBase.renderItemOfList}, +{name: 'retailStoreProvinceCenterList', displayName:'双链小超省中心',type:'retailStoreProvinceCenter',count:retailStoreProvinceCenterCount,addFunction: true, role: 'retailStoreProvinceCenter', metaInfo: retailStoreProvinceCenterListMetaInfo, renderItem: GlobalComponents.RetailStoreProvinceCenterBase.renderItemOfList}, +{name: 'retailStoreList', displayName:'双链小超',type:'retailStore',count:retailStoreCount,addFunction: true, role: 'retailStore', metaInfo: retailStoreListMetaInfo, renderItem: GlobalComponents.RetailStoreBase.renderItemOfList}, +{name: 'retailStoreMemberList', displayName:'生超会员',type:'retailStoreMember',count:retailStoreMemberCount,addFunction: true, role: 'retailStoreMember', metaInfo: retailStoreMemberListMetaInfo, renderItem: GlobalComponents.RetailStoreMemberBase.renderItemOfList}, +{name: 'goodsSupplierList', displayName:'产品供应商',type:'goodsSupplier',count:goodsSupplierCount,addFunction: true, role: 'goodsSupplier', metaInfo: goodsSupplierListMetaInfo, renderItem: GlobalComponents.GoodsSupplierBase.renderItemOfList}, +{name: 'supplyOrderList', displayName:'供应订单',type:'supplyOrder',count:supplyOrderCount,addFunction: true, role: 'supplyOrder', metaInfo: supplyOrderListMetaInfo, renderItem: GlobalComponents.SupplyOrderBase.renderItemOfList}, +{name: 'retailStoreOrderList', displayName:'生超的订单',type:'retailStoreOrder',count:retailStoreOrderCount,addFunction: true, role: 'retailStoreOrder', metaInfo: retailStoreOrderListMetaInfo, renderItem: GlobalComponents.RetailStoreOrderBase.renderItemOfList}, +{name: 'warehouseList', displayName:'仓库',type:'warehouse',count:warehouseCount,addFunction: true, role: 'warehouse', metaInfo: warehouseListMetaInfo, renderItem: GlobalComponents.WarehouseBase.renderItemOfList}, +{name: 'transportFleetList', displayName:'运输车队',type:'transportFleet',count:transportFleetCount,addFunction: true, role: 'transportFleet', metaInfo: transportFleetListMetaInfo, renderItem: GlobalComponents.TransportFleetBase.renderItemOfList}, +{name: 'accountSetList', displayName:'账套',type:'accountSet',count:accountSetCount,addFunction: true, role: 'accountSet', metaInfo: accountSetListMetaInfo, renderItem: GlobalComponents.AccountSetBase.renderItemOfList}, +{name: 'levelOneDepartmentList', displayName:'一级部门',type:'levelOneDepartment',count:levelOneDepartmentCount,addFunction: true, role: 'levelOneDepartment', metaInfo: levelOneDepartmentListMetaInfo, renderItem: GlobalComponents.LevelOneDepartmentBase.renderItemOfList}, +{name: 'employeeList', displayName:'员工',type:'employee',count:employeeCount,addFunction: true, role: 'employee', metaInfo: employeeListMetaInfo, renderItem: GlobalComponents.EmployeeBase.renderItemOfList}, +{name: 'instructorList', displayName:'讲师',type:'instructor',count:instructorCount,addFunction: true, role: 'instructor', metaInfo: instructorListMetaInfo, renderItem: GlobalComponents.InstructorBase.renderItemOfList}, +{name: 'companyTrainingList', displayName:'公司培训',type:'companyTraining',count:companyTrainingCount,addFunction: true, role: 'companyTraining', metaInfo: companyTrainingListMetaInfo, renderItem: GlobalComponents.CompanyTrainingBase.renderItemOfList}, ], }; @@ -158,6 +158,8 @@ class RetailStoreCountryCenterDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.permission.js b/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.permission.js index 7196d3837..bec69f361 100644 --- a/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.permission.js +++ b/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreCountryCenter.preference.less' +import styles from './RetailStoreCountryCenter.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.preference.js b/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.preference.js deleted file mode 100644 index b1619662a..000000000 --- a/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.preference.js +++ /dev/null @@ -1,366 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreCountryCenter.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (retailStoreCountryCenter) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (retailStoreCountryCenter) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (retailStoreCountryCenter) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {RetailStoreCountryCenterService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = RetailStoreCountryCenterService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (retailStoreCountryCenter,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=retailStoreCountryCenter.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_retailStoreCountryCenter/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (retailStoreCountryCenter,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(retailStoreCountryCenter,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (retailStoreCountryCenter) =>{ - return null -} -const internalRenderExtraFooter = (retailStoreCountryCenter) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (retailStoreCountryCenter,targetComponent) =>{ - const userContext = null - return ( - -{retailStoreCountryCenter.id} -{retailStoreCountryCenter.name} -{retailStoreCountryCenter.serviceNumber} -{ moment(retailStoreCountryCenter.founded).format('YYYY-MM-DD')} -{retailStoreCountryCenter.webSite} -{retailStoreCountryCenter.address} -{retailStoreCountryCenter.operatedBy} -{retailStoreCountryCenter.legalRepresentative} -{retailStoreCountryCenter.description} - - {buildTransferModal(retailStoreCountryCenter,targetComponent)} - - ) - -} - - -const renderPermissionSetting = retailStoreCountryCenter => { - const {RetailStoreCountryCenterBase} = GlobalComponents - return - - -} - - -class RetailStoreCountryCenterPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const retailStoreCountryCenter = this.props.retailStoreCountryCenter; - const { id,displayName, catalogCount, retailStoreProvinceCenterCount, retailStoreCount, retailStoreMemberCount, goodsSupplierCount, supplyOrderCount, retailStoreOrderCount, warehouseCount, transportFleetCount, accountSetCount, levelOneDepartmentCount, skillTypeCount, responsibilityTypeCount, terminationReasonCount, terminationTypeCount, occupationTypeCount, leaveTypeCount, salaryGradeCount, interviewTypeCount, trainingCourseTypeCount, publicHolidayCount, employeeCount, instructorCount, companyTrainingCount } = retailStoreCountryCenter - - - - const cardsData = {cardsName:"双链小超全国运营中心",cardsFor: "retailStoreCountryCenter",cardsSource: retailStoreCountryCenter, - subItems: [ -{name: 'skillTypeList', displayName:'技能类型',type:'skillType',count:skillTypeCount,addFunction: true, role: 'skillType', data: retailStoreCountryCenter.skillTypeList}, -{name: 'responsibilityTypeList', displayName:'责任类型',type:'responsibilityType',count:responsibilityTypeCount,addFunction: true, role: 'responsibilityType', data: retailStoreCountryCenter.responsibilityTypeList}, -{name: 'terminationReasonList', displayName:'雇佣终止的原因',type:'terminationReason',count:terminationReasonCount,addFunction: true, role: 'terminationReason', data: retailStoreCountryCenter.terminationReasonList}, -{name: 'terminationTypeList', displayName:'雇佣终止类型',type:'terminationType',count:terminationTypeCount,addFunction: true, role: 'terminationType', data: retailStoreCountryCenter.terminationTypeList}, -{name: 'occupationTypeList', displayName:'职位类型',type:'occupationType',count:occupationTypeCount,addFunction: true, role: 'occupationType', data: retailStoreCountryCenter.occupationTypeList}, -{name: 'leaveTypeList', displayName:'请假类型',type:'leaveType',count:leaveTypeCount,addFunction: true, role: 'leaveType', data: retailStoreCountryCenter.leaveTypeList}, -{name: 'salaryGradeList', displayName:'工资等级',type:'salaryGrade',count:salaryGradeCount,addFunction: true, role: 'salaryGrade', data: retailStoreCountryCenter.salaryGradeList}, -{name: 'interviewTypeList', displayName:'面试类型',type:'interviewType',count:interviewTypeCount,addFunction: true, role: 'interviewType', data: retailStoreCountryCenter.interviewTypeList}, -{name: 'trainingCourseTypeList', displayName:'培训课程类型',type:'trainingCourseType',count:trainingCourseTypeCount,addFunction: true, role: 'trainingCourseType', data: retailStoreCountryCenter.trainingCourseTypeList}, -{name: 'publicHolidayList', displayName:'公共假日',type:'publicHoliday',count:publicHolidayCount,addFunction: true, role: 'publicHoliday', data: retailStoreCountryCenter.publicHolidayList}, - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - retailStoreCountryCenter: state._retailStoreCountryCenter, -}))(Form.create()(RetailStoreCountryCenterPreference)) - diff --git a/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.preference.less b/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.profile.js b/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.profile.js index 2e64a383d..9d5ffa41d 100644 --- a/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.profile.js +++ b/bizui/src/bizcomponents/retailstorecountrycenter/RetailStoreCountryCenter.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreCountryCenter.preference.less' +import styles from './RetailStoreCountryCenter.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,23 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (retailStoreCountryCenter,targetComponent) =>{ - const userContext = null - return ( - -{retailStoreCountryCenter.id} -{retailStoreCountryCenter.name} -{retailStoreCountryCenter.serviceNumber} -{ moment(retailStoreCountryCenter.founded).format('YYYY-MM-DD')} -{retailStoreCountryCenter.webSite} -{retailStoreCountryCenter.address} -{retailStoreCountryCenter.operatedBy} -{retailStoreCountryCenter.legalRepresentative} -{retailStoreCountryCenter.description} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.RetailStoreCountryCenterBase.renderItemOfList(item, targetComponents) + } @@ -70,23 +58,24 @@ class RetailStoreCountryCenterProfile extends Component { const cardsData = {cardsName:"双链小超全国运营中心",cardsFor: "retailStoreCountryCenter",cardsSource: retailStoreCountryCenter, subItems: [ -{name: 'skillTypeList', displayName:'技能类型',type:'skillType',count:skillTypeCount,addFunction: true, role: 'skillType', data: retailStoreCountryCenter.skillTypeList}, -{name: 'responsibilityTypeList', displayName:'责任类型',type:'responsibilityType',count:responsibilityTypeCount,addFunction: true, role: 'responsibilityType', data: retailStoreCountryCenter.responsibilityTypeList}, -{name: 'terminationReasonList', displayName:'雇佣终止的原因',type:'terminationReason',count:terminationReasonCount,addFunction: true, role: 'terminationReason', data: retailStoreCountryCenter.terminationReasonList}, -{name: 'terminationTypeList', displayName:'雇佣终止类型',type:'terminationType',count:terminationTypeCount,addFunction: true, role: 'terminationType', data: retailStoreCountryCenter.terminationTypeList}, -{name: 'occupationTypeList', displayName:'职位类型',type:'occupationType',count:occupationTypeCount,addFunction: true, role: 'occupationType', data: retailStoreCountryCenter.occupationTypeList}, -{name: 'leaveTypeList', displayName:'请假类型',type:'leaveType',count:leaveTypeCount,addFunction: true, role: 'leaveType', data: retailStoreCountryCenter.leaveTypeList}, -{name: 'salaryGradeList', displayName:'工资等级',type:'salaryGrade',count:salaryGradeCount,addFunction: true, role: 'salaryGrade', data: retailStoreCountryCenter.salaryGradeList}, -{name: 'interviewTypeList', displayName:'面试类型',type:'interviewType',count:interviewTypeCount,addFunction: true, role: 'interviewType', data: retailStoreCountryCenter.interviewTypeList}, -{name: 'trainingCourseTypeList', displayName:'培训课程类型',type:'trainingCourseType',count:trainingCourseTypeCount,addFunction: true, role: 'trainingCourseType', data: retailStoreCountryCenter.trainingCourseTypeList}, -{name: 'publicHolidayList', displayName:'公共假日',type:'publicHoliday',count:publicHolidayCount,addFunction: true, role: 'publicHoliday', data: retailStoreCountryCenter.publicHolidayList}, - +{name: 'skillTypeList', displayName:'技能类型',type:'skillType',count:skillTypeCount,addFunction: true, role: 'skillType', renderItem: GlobalComponents.SkillTypeBase.renderItemOfList}, +{name: 'responsibilityTypeList', displayName:'责任类型',type:'responsibilityType',count:responsibilityTypeCount,addFunction: true, role: 'responsibilityType', renderItem: GlobalComponents.ResponsibilityTypeBase.renderItemOfList}, +{name: 'terminationReasonList', displayName:'雇佣终止的原因',type:'terminationReason',count:terminationReasonCount,addFunction: true, role: 'terminationReason', renderItem: GlobalComponents.TerminationReasonBase.renderItemOfList}, +{name: 'terminationTypeList', displayName:'雇佣终止类型',type:'terminationType',count:terminationTypeCount,addFunction: true, role: 'terminationType', renderItem: GlobalComponents.TerminationTypeBase.renderItemOfList}, +{name: 'occupationTypeList', displayName:'职位类型',type:'occupationType',count:occupationTypeCount,addFunction: true, role: 'occupationType', renderItem: GlobalComponents.OccupationTypeBase.renderItemOfList}, +{name: 'leaveTypeList', displayName:'请假类型',type:'leaveType',count:leaveTypeCount,addFunction: true, role: 'leaveType', renderItem: GlobalComponents.LeaveTypeBase.renderItemOfList}, +{name: 'salaryGradeList', displayName:'工资等级',type:'salaryGrade',count:salaryGradeCount,addFunction: true, role: 'salaryGrade', renderItem: GlobalComponents.SalaryGradeBase.renderItemOfList}, +{name: 'interviewTypeList', displayName:'面试类型',type:'interviewType',count:interviewTypeCount,addFunction: true, role: 'interviewType', renderItem: GlobalComponents.InterviewTypeBase.renderItemOfList}, +{name: 'trainingCourseTypeList', displayName:'培训课程类型',type:'trainingCourseType',count:trainingCourseTypeCount,addFunction: true, role: 'trainingCourseType', renderItem: GlobalComponents.TrainingCourseTypeBase.renderItemOfList}, +{name: 'publicHolidayList', displayName:'公共假日',type:'publicHoliday',count:publicHolidayCount,addFunction: true, role: 'publicHoliday', renderItem: GlobalComponents.PublicHolidayBase.renderItemOfList}, + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -96,7 +85,7 @@ class RetailStoreCountryCenterProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.base.js b/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.base.js index 1948779cb..5cb3b130b 100644 --- a/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.base.js +++ b/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -48,19 +49,23 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({retailStoreCreation,targetComponent})=>{ +const renderItemOfList=(retailStoreCreation,targetComponent)=>{ - const {RetailStoreCreationService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {retailStoreCreation.id} {retailStoreCreation.comment} - {buildTransferModal(retailStoreCreation,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.dashboard.js b/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.dashboard.js index fbaa1fe6d..09b965f1f 100644 --- a/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.dashboard.js +++ b/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(retailStoreCreation)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (retailStoreCreation) =>defaultSettingListOf(retailStoreCreation, optionList) const internalLargeTextOf = (retailStoreCreation) =>{ @@ -123,7 +123,7 @@ class RetailStoreCreationDashboard extends Component { const cardsData = {cardsName:"双链小超的创作",cardsFor: "retailStoreCreation", cardsSource: this.props.retailStoreCreation,returnURL,displayName, subItems: [ -{name: 'retailStoreList', displayName:'双链小超',type:'retailStore',count:retailStoreCount,addFunction: true, role: 'retailStore', metaInfo: retailStoreListMetaInfo}, +{name: 'retailStoreList', displayName:'双链小超',type:'retailStore',count:retailStoreCount,addFunction: true, role: 'retailStore', metaInfo: retailStoreListMetaInfo, renderItem: GlobalComponents.RetailStoreBase.renderItemOfList}, ], }; @@ -138,6 +138,8 @@ class RetailStoreCreationDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.permission.js b/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.permission.js index 02c8bd3ad..9b7f87bbb 100644 --- a/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.permission.js +++ b/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreCreation.preference.less' +import styles from './RetailStoreCreation.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.preference.js b/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.preference.js deleted file mode 100644 index 16929e868..000000000 --- a/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.preference.js +++ /dev/null @@ -1,349 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreCreation.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (retailStoreCreation) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (retailStoreCreation) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (retailStoreCreation) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {RetailStoreCreationService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = RetailStoreCreationService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (retailStoreCreation,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=retailStoreCreation.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_retailStoreCreation/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (retailStoreCreation,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(retailStoreCreation,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (retailStoreCreation) =>{ - return null -} -const internalRenderExtraFooter = (retailStoreCreation) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (retailStoreCreation,targetComponent) =>{ - const userContext = null - return ( - -{retailStoreCreation.id} -{retailStoreCreation.comment} - - {buildTransferModal(retailStoreCreation,targetComponent)} - - ) - -} - - -const renderPermissionSetting = retailStoreCreation => { - const {RetailStoreCreationBase} = GlobalComponents - return - - -} - - -class RetailStoreCreationPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const retailStoreCreation = this.props.retailStoreCreation; - const { id,displayName, retailStoreCount } = retailStoreCreation - - - - const cardsData = {cardsName:"双链小超的创作",cardsFor: "retailStoreCreation",cardsSource: retailStoreCreation, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - retailStoreCreation: state._retailStoreCreation, -}))(Form.create()(RetailStoreCreationPreference)) - diff --git a/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.preference.less b/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.profile.js b/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.profile.js index 18002e115..e01673f9d 100644 --- a/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.profile.js +++ b/bizui/src/bizcomponents/retailstorecreation/RetailStoreCreation.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreCreation.preference.less' +import styles from './RetailStoreCreation.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,16 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (retailStoreCreation,targetComponent) =>{ - const userContext = null - return ( - -{retailStoreCreation.id} -{retailStoreCreation.comment} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.RetailStoreCreationBase.renderItemOfList(item, targetComponents) + } @@ -63,13 +58,14 @@ class RetailStoreCreationProfile extends Component { const cardsData = {cardsName:"双链小超的创作",cardsFor: "retailStoreCreation",cardsSource: retailStoreCreation, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -79,7 +75,7 @@ class RetailStoreCreationProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.base.js b/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.base.js index 18a16ae31..091ef2055 100644 --- a/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.base.js +++ b/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -48,19 +49,23 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({retailStoreDecoration,targetComponent})=>{ +const renderItemOfList=(retailStoreDecoration,targetComponent)=>{ - const {RetailStoreDecorationService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {retailStoreDecoration.id} {retailStoreDecoration.comment} - {buildTransferModal(retailStoreDecoration,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.dashboard.js b/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.dashboard.js index 34067b6ab..8f92ff1c2 100644 --- a/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.dashboard.js +++ b/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(retailStoreDecoration)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (retailStoreDecoration) =>defaultSettingListOf(retailStoreDecoration, optionList) const internalLargeTextOf = (retailStoreDecoration) =>{ @@ -123,7 +123,7 @@ class RetailStoreDecorationDashboard extends Component { const cardsData = {cardsName:"生超装修",cardsFor: "retailStoreDecoration", cardsSource: this.props.retailStoreDecoration,returnURL,displayName, subItems: [ -{name: 'retailStoreList', displayName:'双链小超',type:'retailStore',count:retailStoreCount,addFunction: true, role: 'retailStore', metaInfo: retailStoreListMetaInfo}, +{name: 'retailStoreList', displayName:'双链小超',type:'retailStore',count:retailStoreCount,addFunction: true, role: 'retailStore', metaInfo: retailStoreListMetaInfo, renderItem: GlobalComponents.RetailStoreBase.renderItemOfList}, ], }; @@ -138,6 +138,8 @@ class RetailStoreDecorationDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.permission.js b/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.permission.js index d6d3e55c6..fe13a843c 100644 --- a/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.permission.js +++ b/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreDecoration.preference.less' +import styles from './RetailStoreDecoration.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.preference.js b/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.preference.js deleted file mode 100644 index 435ea7b4d..000000000 --- a/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.preference.js +++ /dev/null @@ -1,349 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreDecoration.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (retailStoreDecoration) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (retailStoreDecoration) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (retailStoreDecoration) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {RetailStoreDecorationService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = RetailStoreDecorationService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (retailStoreDecoration,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=retailStoreDecoration.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_retailStoreDecoration/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (retailStoreDecoration,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(retailStoreDecoration,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (retailStoreDecoration) =>{ - return null -} -const internalRenderExtraFooter = (retailStoreDecoration) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (retailStoreDecoration,targetComponent) =>{ - const userContext = null - return ( - -{retailStoreDecoration.id} -{retailStoreDecoration.comment} - - {buildTransferModal(retailStoreDecoration,targetComponent)} - - ) - -} - - -const renderPermissionSetting = retailStoreDecoration => { - const {RetailStoreDecorationBase} = GlobalComponents - return - - -} - - -class RetailStoreDecorationPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const retailStoreDecoration = this.props.retailStoreDecoration; - const { id,displayName, retailStoreCount } = retailStoreDecoration - - - - const cardsData = {cardsName:"生超装修",cardsFor: "retailStoreDecoration",cardsSource: retailStoreDecoration, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - retailStoreDecoration: state._retailStoreDecoration, -}))(Form.create()(RetailStoreDecorationPreference)) - diff --git a/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.preference.less b/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.profile.js b/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.profile.js index 347322bf7..e9d03db57 100644 --- a/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.profile.js +++ b/bizui/src/bizcomponents/retailstoredecoration/RetailStoreDecoration.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreDecoration.preference.less' +import styles from './RetailStoreDecoration.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,16 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (retailStoreDecoration,targetComponent) =>{ - const userContext = null - return ( - -{retailStoreDecoration.id} -{retailStoreDecoration.comment} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.RetailStoreDecorationBase.renderItemOfList(item, targetComponents) + } @@ -63,13 +58,14 @@ class RetailStoreDecorationProfile extends Component { const cardsData = {cardsName:"生超装修",cardsFor: "retailStoreDecoration",cardsSource: retailStoreDecoration, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -79,7 +75,7 @@ class RetailStoreDecorationProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.base.js b/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.base.js index 4bfd246fd..749f2539d 100644 --- a/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.base.js +++ b/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -48,19 +49,23 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({retailStoreFranchising,targetComponent})=>{ +const renderItemOfList=(retailStoreFranchising,targetComponent)=>{ - const {RetailStoreFranchisingService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {retailStoreFranchising.id} {retailStoreFranchising.comment} - {buildTransferModal(retailStoreFranchising,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.dashboard.js b/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.dashboard.js index f9e1ab29a..77686e838 100644 --- a/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.dashboard.js +++ b/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(retailStoreFranchising)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (retailStoreFranchising) =>defaultSettingListOf(retailStoreFranchising, optionList) const internalLargeTextOf = (retailStoreFranchising) =>{ @@ -123,7 +123,7 @@ class RetailStoreFranchisingDashboard extends Component { const cardsData = {cardsName:"生超的特许经营",cardsFor: "retailStoreFranchising", cardsSource: this.props.retailStoreFranchising,returnURL,displayName, subItems: [ -{name: 'retailStoreList', displayName:'双链小超',type:'retailStore',count:retailStoreCount,addFunction: true, role: 'retailStore', metaInfo: retailStoreListMetaInfo}, +{name: 'retailStoreList', displayName:'双链小超',type:'retailStore',count:retailStoreCount,addFunction: true, role: 'retailStore', metaInfo: retailStoreListMetaInfo, renderItem: GlobalComponents.RetailStoreBase.renderItemOfList}, ], }; @@ -138,6 +138,8 @@ class RetailStoreFranchisingDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.permission.js b/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.permission.js index f2a276c33..177253c8a 100644 --- a/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.permission.js +++ b/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreFranchising.preference.less' +import styles from './RetailStoreFranchising.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.preference.js b/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.preference.js deleted file mode 100644 index 7d795fbcc..000000000 --- a/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.preference.js +++ /dev/null @@ -1,349 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreFranchising.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (retailStoreFranchising) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (retailStoreFranchising) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (retailStoreFranchising) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {RetailStoreFranchisingService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = RetailStoreFranchisingService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (retailStoreFranchising,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=retailStoreFranchising.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_retailStoreFranchising/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (retailStoreFranchising,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(retailStoreFranchising,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (retailStoreFranchising) =>{ - return null -} -const internalRenderExtraFooter = (retailStoreFranchising) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (retailStoreFranchising,targetComponent) =>{ - const userContext = null - return ( - -{retailStoreFranchising.id} -{retailStoreFranchising.comment} - - {buildTransferModal(retailStoreFranchising,targetComponent)} - - ) - -} - - -const renderPermissionSetting = retailStoreFranchising => { - const {RetailStoreFranchisingBase} = GlobalComponents - return - - -} - - -class RetailStoreFranchisingPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const retailStoreFranchising = this.props.retailStoreFranchising; - const { id,displayName, retailStoreCount } = retailStoreFranchising - - - - const cardsData = {cardsName:"生超的特许经营",cardsFor: "retailStoreFranchising",cardsSource: retailStoreFranchising, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - retailStoreFranchising: state._retailStoreFranchising, -}))(Form.create()(RetailStoreFranchisingPreference)) - diff --git a/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.preference.less b/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.profile.js b/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.profile.js index 79e36532f..41222f31d 100644 --- a/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.profile.js +++ b/bizui/src/bizcomponents/retailstorefranchising/RetailStoreFranchising.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreFranchising.preference.less' +import styles from './RetailStoreFranchising.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,16 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (retailStoreFranchising,targetComponent) =>{ - const userContext = null - return ( - -{retailStoreFranchising.id} -{retailStoreFranchising.comment} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.RetailStoreFranchisingBase.renderItemOfList(item, targetComponents) + } @@ -63,13 +58,14 @@ class RetailStoreFranchisingProfile extends Component { const cardsData = {cardsName:"生超的特许经营",cardsFor: "retailStoreFranchising",cardsSource: retailStoreFranchising, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -79,7 +75,7 @@ class RetailStoreFranchisingProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.base.js b/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.base.js index ee840986d..599da913e 100644 --- a/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.base.js +++ b/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -48,19 +49,23 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({retailStoreInvestmentInvitation,targetComponent})=>{ +const renderItemOfList=(retailStoreInvestmentInvitation,targetComponent)=>{ - const {RetailStoreInvestmentInvitationService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {retailStoreInvestmentInvitation.id} {retailStoreInvestmentInvitation.comment} - {buildTransferModal(retailStoreInvestmentInvitation,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.dashboard.js b/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.dashboard.js index 30598cd3a..201d4a884 100644 --- a/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.dashboard.js +++ b/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(retailStoreInvestmentInvitation)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (retailStoreInvestmentInvitation) =>defaultSettingListOf(retailStoreInvestmentInvitation, optionList) const internalLargeTextOf = (retailStoreInvestmentInvitation) =>{ @@ -123,7 +123,7 @@ class RetailStoreInvestmentInvitationDashboard extends Component { const cardsData = {cardsName:"生超招商",cardsFor: "retailStoreInvestmentInvitation", cardsSource: this.props.retailStoreInvestmentInvitation,returnURL,displayName, subItems: [ -{name: 'retailStoreList', displayName:'双链小超',type:'retailStore',count:retailStoreCount,addFunction: true, role: 'retailStore', metaInfo: retailStoreListMetaInfo}, +{name: 'retailStoreList', displayName:'双链小超',type:'retailStore',count:retailStoreCount,addFunction: true, role: 'retailStore', metaInfo: retailStoreListMetaInfo, renderItem: GlobalComponents.RetailStoreBase.renderItemOfList}, ], }; @@ -138,6 +138,8 @@ class RetailStoreInvestmentInvitationDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.permission.js b/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.permission.js index 270fed2a9..6f71a2706 100644 --- a/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.permission.js +++ b/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreInvestmentInvitation.preference.less' +import styles from './RetailStoreInvestmentInvitation.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.preference.js b/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.preference.js deleted file mode 100644 index 7add64627..000000000 --- a/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.preference.js +++ /dev/null @@ -1,349 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreInvestmentInvitation.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (retailStoreInvestmentInvitation) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (retailStoreInvestmentInvitation) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (retailStoreInvestmentInvitation) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {RetailStoreInvestmentInvitationService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = RetailStoreInvestmentInvitationService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (retailStoreInvestmentInvitation,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=retailStoreInvestmentInvitation.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_retailStoreInvestmentInvitation/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (retailStoreInvestmentInvitation,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(retailStoreInvestmentInvitation,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (retailStoreInvestmentInvitation) =>{ - return null -} -const internalRenderExtraFooter = (retailStoreInvestmentInvitation) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (retailStoreInvestmentInvitation,targetComponent) =>{ - const userContext = null - return ( - -{retailStoreInvestmentInvitation.id} -{retailStoreInvestmentInvitation.comment} - - {buildTransferModal(retailStoreInvestmentInvitation,targetComponent)} - - ) - -} - - -const renderPermissionSetting = retailStoreInvestmentInvitation => { - const {RetailStoreInvestmentInvitationBase} = GlobalComponents - return - - -} - - -class RetailStoreInvestmentInvitationPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const retailStoreInvestmentInvitation = this.props.retailStoreInvestmentInvitation; - const { id,displayName, retailStoreCount } = retailStoreInvestmentInvitation - - - - const cardsData = {cardsName:"生超招商",cardsFor: "retailStoreInvestmentInvitation",cardsSource: retailStoreInvestmentInvitation, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - retailStoreInvestmentInvitation: state._retailStoreInvestmentInvitation, -}))(Form.create()(RetailStoreInvestmentInvitationPreference)) - diff --git a/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.preference.less b/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.profile.js b/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.profile.js index 95dc2f69f..b8648e17a 100644 --- a/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.profile.js +++ b/bizui/src/bizcomponents/retailstoreinvestmentinvitation/RetailStoreInvestmentInvitation.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreInvestmentInvitation.preference.less' +import styles from './RetailStoreInvestmentInvitation.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,16 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (retailStoreInvestmentInvitation,targetComponent) =>{ - const userContext = null - return ( - -{retailStoreInvestmentInvitation.id} -{retailStoreInvestmentInvitation.comment} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.RetailStoreInvestmentInvitationBase.renderItemOfList(item, targetComponents) + } @@ -63,13 +58,14 @@ class RetailStoreInvestmentInvitationProfile extends Component { const cardsData = {cardsName:"生超招商",cardsFor: "retailStoreInvestmentInvitation",cardsSource: retailStoreInvestmentInvitation, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -79,7 +75,7 @@ class RetailStoreInvestmentInvitationProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.associateform.js b/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.associateform.js index c508f591a..2b73d5c28 100644 --- a/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.associateform.js +++ b/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.associateform.js @@ -20,7 +20,7 @@ const testValues = {}; const testValues = { name: '李亚青', mobilePhone: '18099887766', - ownerId: 'RSCC000001', + ownerId: 'RSCC00000001', } */ diff --git a/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.base.js b/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.base.js index 68b6818b0..cba57ee7e 100644 --- a/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.base.js +++ b/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -58,20 +59,24 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({retailStoreMember,targetComponent})=>{ +const renderItemOfList=(retailStoreMember,targetComponent)=>{ - const {RetailStoreMemberService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {retailStoreMember.id} {retailStoreMember.name} {retailStoreMember.mobilePhone} - {buildTransferModal(retailStoreMember,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.createform.js b/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.createform.js index 57ddf45eb..61b1921c4 100644 --- a/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.createform.js +++ b/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.createform.js @@ -19,7 +19,7 @@ const testValues = {}; const testValues = { name: '李亚青', mobilePhone: '18099887766', - ownerId: 'RSCC000001', + ownerId: 'RSCC00000001', } */ diff --git a/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.dashboard.js b/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.dashboard.js index f804b7985..78d398c83 100644 --- a/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.dashboard.js +++ b/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(retailStoreMember)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (retailStoreMember) =>defaultSettingListOf(retailStoreMember, optionList) const internalLargeTextOf = (retailStoreMember) =>{ @@ -124,13 +124,13 @@ class RetailStoreMemberDashboard extends Component { const cardsData = {cardsName:"生超会员",cardsFor: "retailStoreMember", cardsSource: this.props.retailStoreMember,returnURL,displayName, subItems: [ -{name: 'consumerOrderList', displayName:'消费者订单',type:'consumerOrder',count:consumerOrderCount,addFunction: true, role: 'consumerOrder', metaInfo: consumerOrderListMetaInfo}, -{name: 'retailStoreMemberCouponList', displayName:'生超会员优惠券',type:'retailStoreMemberCoupon',count:retailStoreMemberCouponCount,addFunction: true, role: 'retailStoreMemberCoupon', metaInfo: retailStoreMemberCouponListMetaInfo}, -{name: 'memberWishlistList', displayName:'会员收藏',type:'memberWishlist',count:memberWishlistCount,addFunction: true, role: 'memberWishlist', metaInfo: memberWishlistListMetaInfo}, -{name: 'memberRewardPointList', displayName:'会员奖励点',type:'memberRewardPoint',count:memberRewardPointCount,addFunction: true, role: 'memberRewardPoint', metaInfo: memberRewardPointListMetaInfo}, -{name: 'memberRewardPointRedemptionList', displayName:'会员奖励点赎回',type:'memberRewardPointRedemption',count:memberRewardPointRedemptionCount,addFunction: true, role: 'memberRewardPointRedemption', metaInfo: memberRewardPointRedemptionListMetaInfo}, -{name: 'retailStoreMemberAddressList', displayName:'零售店会员地址',type:'retailStoreMemberAddress',count:retailStoreMemberAddressCount,addFunction: true, role: 'retailStoreMemberAddress', metaInfo: retailStoreMemberAddressListMetaInfo}, -{name: 'retailStoreMemberGiftCardList', displayName:'零售店会员礼品卡',type:'retailStoreMemberGiftCard',count:retailStoreMemberGiftCardCount,addFunction: true, role: 'retailStoreMemberGiftCard', metaInfo: retailStoreMemberGiftCardListMetaInfo}, +{name: 'consumerOrderList', displayName:'消费者订单',type:'consumerOrder',count:consumerOrderCount,addFunction: true, role: 'consumerOrder', metaInfo: consumerOrderListMetaInfo, renderItem: GlobalComponents.ConsumerOrderBase.renderItemOfList}, +{name: 'retailStoreMemberCouponList', displayName:'生超会员优惠券',type:'retailStoreMemberCoupon',count:retailStoreMemberCouponCount,addFunction: true, role: 'retailStoreMemberCoupon', metaInfo: retailStoreMemberCouponListMetaInfo, renderItem: GlobalComponents.RetailStoreMemberCouponBase.renderItemOfList}, +{name: 'memberWishlistList', displayName:'会员收藏',type:'memberWishlist',count:memberWishlistCount,addFunction: true, role: 'memberWishlist', metaInfo: memberWishlistListMetaInfo, renderItem: GlobalComponents.MemberWishlistBase.renderItemOfList}, +{name: 'memberRewardPointList', displayName:'会员奖励点',type:'memberRewardPoint',count:memberRewardPointCount,addFunction: true, role: 'memberRewardPoint', metaInfo: memberRewardPointListMetaInfo, renderItem: GlobalComponents.MemberRewardPointBase.renderItemOfList}, +{name: 'memberRewardPointRedemptionList', displayName:'会员奖励点赎回',type:'memberRewardPointRedemption',count:memberRewardPointRedemptionCount,addFunction: true, role: 'memberRewardPointRedemption', metaInfo: memberRewardPointRedemptionListMetaInfo, renderItem: GlobalComponents.MemberRewardPointRedemptionBase.renderItemOfList}, +{name: 'retailStoreMemberAddressList', displayName:'零售店会员地址',type:'retailStoreMemberAddress',count:retailStoreMemberAddressCount,addFunction: true, role: 'retailStoreMemberAddress', metaInfo: retailStoreMemberAddressListMetaInfo, renderItem: GlobalComponents.RetailStoreMemberAddressBase.renderItemOfList}, +{name: 'retailStoreMemberGiftCardList', displayName:'零售店会员礼品卡',type:'retailStoreMemberGiftCard',count:retailStoreMemberGiftCardCount,addFunction: true, role: 'retailStoreMemberGiftCard', metaInfo: retailStoreMemberGiftCardListMetaInfo, renderItem: GlobalComponents.RetailStoreMemberGiftCardBase.renderItemOfList}, ], }; @@ -145,6 +145,8 @@ class RetailStoreMemberDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.permission.js b/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.permission.js index 86db9bd9d..95b878ee2 100644 --- a/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.permission.js +++ b/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreMember.preference.less' +import styles from './RetailStoreMember.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.preference.js b/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.preference.js deleted file mode 100644 index 6cccfec52..000000000 --- a/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.preference.js +++ /dev/null @@ -1,350 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreMember.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (retailStoreMember) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (retailStoreMember) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (retailStoreMember) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {RetailStoreMemberService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = RetailStoreMemberService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (retailStoreMember,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=retailStoreMember.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_retailStoreMember/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (retailStoreMember,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(retailStoreMember,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (retailStoreMember) =>{ - return null -} -const internalRenderExtraFooter = (retailStoreMember) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (retailStoreMember,targetComponent) =>{ - const userContext = null - return ( - -{retailStoreMember.id} -{retailStoreMember.name} -{retailStoreMember.mobilePhone} - - {buildTransferModal(retailStoreMember,targetComponent)} - - ) - -} - - -const renderPermissionSetting = retailStoreMember => { - const {RetailStoreMemberBase} = GlobalComponents - return - - -} - - -class RetailStoreMemberPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const retailStoreMember = this.props.retailStoreMember; - const { id,displayName, consumerOrderCount, retailStoreMemberCouponCount, memberWishlistCount, memberRewardPointCount, memberRewardPointRedemptionCount, retailStoreMemberAddressCount, retailStoreMemberGiftCardCount } = retailStoreMember - - - - const cardsData = {cardsName:"生超会员",cardsFor: "retailStoreMember",cardsSource: retailStoreMember, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - retailStoreMember: state._retailStoreMember, -}))(Form.create()(RetailStoreMemberPreference)) - diff --git a/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.preference.less b/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.profile.js b/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.profile.js index ea4f65e46..e722544a5 100644 --- a/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.profile.js +++ b/bizui/src/bizcomponents/retailstoremember/RetailStoreMember.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreMember.preference.less' +import styles from './RetailStoreMember.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,17 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (retailStoreMember,targetComponent) =>{ - const userContext = null - return ( - -{retailStoreMember.id} -{retailStoreMember.name} -{retailStoreMember.mobilePhone} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.RetailStoreMemberBase.renderItemOfList(item, targetComponents) + } @@ -64,13 +58,14 @@ class RetailStoreMemberProfile extends Component { const cardsData = {cardsName:"生超会员",cardsFor: "retailStoreMember",cardsSource: retailStoreMember, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -80,7 +75,7 @@ class RetailStoreMemberProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.associateform.js b/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.associateform.js index 3e3a473c4..a9192872f 100644 --- a/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.associateform.js +++ b/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.associateform.js @@ -21,7 +21,7 @@ const testValues = { name: '家里', mobilePhone: '18099887766', address: '四川省成都市科学城北路33号', - ownerId: 'RSM000001', + ownerId: 'RSM00000001', } */ diff --git a/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.base.js b/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.base.js index d3de79991..f266fc277 100644 --- a/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.base.js +++ b/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -53,27 +54,27 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({retailStoreMemberAddress,targetComponent})=>{ +const renderItemOfList=(retailStoreMemberAddress,targetComponent)=>{ - const {RetailStoreMemberAddressService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {retailStoreMemberAddress.id} {retailStoreMemberAddress.name} {retailStoreMemberAddress.owner==null?appLocaleName(userContext,"NotAssigned"):`${retailStoreMemberAddress.owner.displayName}(${retailStoreMemberAddress.owner.id})`} - - showTransferModel(targetComponent,"业主","retailStoreMember",RetailStoreMemberAddressService.requestCandidateOwner, - RetailStoreMemberAddressService.transferToAnotherOwner,"anotherOwnerId",retailStoreMemberAddress.owner?retailStoreMemberAddress.owner.id:"")} - style={{fontSize: 20,color:"red"}} /> {retailStoreMemberAddress.mobilePhone} {retailStoreMemberAddress.address} - {buildTransferModal(retailStoreMemberAddress,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.createform.js b/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.createform.js index 97b639cca..ef641b15a 100644 --- a/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.createform.js +++ b/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.createform.js @@ -20,7 +20,7 @@ const testValues = { name: '家里', mobilePhone: '18099887766', address: '四川省成都市科学城北路33号', - ownerId: 'RSM000001', + ownerId: 'RSM00000001', } */ diff --git a/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.dashboard.js b/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.dashboard.js index a614bd4ce..311893d68 100644 --- a/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.dashboard.js +++ b/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(retailStoreMemberAddress)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (retailStoreMemberAddress) =>defaultSettingListOf(retailStoreMemberAddress, optionList) const internalLargeTextOf = (retailStoreMemberAddress) =>{ @@ -145,6 +145,8 @@ class RetailStoreMemberAddressDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.permission.js b/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.permission.js index 21bc16b51..eb2ad30b3 100644 --- a/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.permission.js +++ b/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreMemberAddress.preference.less' +import styles from './RetailStoreMemberAddress.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.preference.js b/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.preference.js deleted file mode 100644 index 386ec3111..000000000 --- a/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.preference.js +++ /dev/null @@ -1,357 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreMemberAddress.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (retailStoreMemberAddress) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (retailStoreMemberAddress) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (retailStoreMemberAddress) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {RetailStoreMemberAddressService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = RetailStoreMemberAddressService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (retailStoreMemberAddress,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=retailStoreMemberAddress.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_retailStoreMemberAddress/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (retailStoreMemberAddress,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(retailStoreMemberAddress,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (retailStoreMemberAddress) =>{ - return null -} -const internalRenderExtraFooter = (retailStoreMemberAddress) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (retailStoreMemberAddress,targetComponent) =>{ - const userContext = null - return ( - -{retailStoreMemberAddress.id} -{retailStoreMemberAddress.name} -{retailStoreMemberAddress.owner==null?appLocaleName(userContext,"NotAssigned"):retailStoreMemberAddress.owner.displayName} - - showTransferModel(targetComponent,"业主","retailStoreMember","requestCandidateOwner", - "transferToAnotherOwner","anotherOwnerId",retailStoreMemberAddress.owner?retailStoreMemberAddress.owner.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{retailStoreMemberAddress.mobilePhone} -{retailStoreMemberAddress.address} - - {buildTransferModal(retailStoreMemberAddress,targetComponent)} - - ) - -} - - -const renderPermissionSetting = retailStoreMemberAddress => { - const {RetailStoreMemberAddressBase} = GlobalComponents - return - - -} - - -class RetailStoreMemberAddressPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const retailStoreMemberAddress = this.props.retailStoreMemberAddress; - const { id,displayName, } = retailStoreMemberAddress - - - - const cardsData = {cardsName:"零售店会员地址",cardsFor: "retailStoreMemberAddress",cardsSource: retailStoreMemberAddress, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - retailStoreMemberAddress: state._retailStoreMemberAddress, -}))(Form.create()(RetailStoreMemberAddressPreference)) - diff --git a/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.preference.less b/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.profile.js b/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.profile.js index 532e0abdc..95cff209f 100644 --- a/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.profile.js +++ b/bizui/src/bizcomponents/retailstorememberaddress/RetailStoreMemberAddress.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreMemberAddress.preference.less' +import styles from './RetailStoreMemberAddress.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,18 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (retailStoreMemberAddress,targetComponent) =>{ - const userContext = null - return ( - -{retailStoreMemberAddress.id} -{retailStoreMemberAddress.name} -{retailStoreMemberAddress.mobilePhone} -{retailStoreMemberAddress.address} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.RetailStoreMemberAddressBase.renderItemOfList(item, targetComponents) + } @@ -65,13 +58,14 @@ class RetailStoreMemberAddressProfile extends Component { const cardsData = {cardsName:"零售店会员地址",cardsFor: "retailStoreMemberAddress",cardsSource: retailStoreMemberAddress, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -81,7 +75,7 @@ class RetailStoreMemberAddressProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.associateform.js b/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.associateform.js index 77fbf93d5..a1671e58d 100644 --- a/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.associateform.js +++ b/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.associateform.js @@ -20,7 +20,7 @@ const testValues = {}; const testValues = { name: '优惠券', number: 'CP00001', - ownerId: 'RSM000001', + ownerId: 'RSM00000001', } */ diff --git a/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.base.js b/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.base.js index e13800766..e2d3ef1a5 100644 --- a/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.base.js +++ b/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -53,27 +54,27 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({retailStoreMemberCoupon,targetComponent})=>{ +const renderItemOfList=(retailStoreMemberCoupon,targetComponent)=>{ - const {RetailStoreMemberCouponService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {retailStoreMemberCoupon.id} {retailStoreMemberCoupon.name} {retailStoreMemberCoupon.owner==null?appLocaleName(userContext,"NotAssigned"):`${retailStoreMemberCoupon.owner.displayName}(${retailStoreMemberCoupon.owner.id})`} - - showTransferModel(targetComponent,"业主","retailStoreMember",RetailStoreMemberCouponService.requestCandidateOwner, - RetailStoreMemberCouponService.transferToAnotherOwner,"anotherOwnerId",retailStoreMemberCoupon.owner?retailStoreMemberCoupon.owner.id:"")} - style={{fontSize: 20,color:"red"}} /> {retailStoreMemberCoupon.number} { moment(retailStoreMemberCoupon.lastUpdateTime).format('YYYY-MM-DD')} - {buildTransferModal(retailStoreMemberCoupon,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.createform.js b/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.createform.js index ec9e78288..4bd4928f9 100644 --- a/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.createform.js +++ b/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.createform.js @@ -19,7 +19,7 @@ const testValues = {}; const testValues = { name: '优惠券', number: 'CP00001', - ownerId: 'RSM000001', + ownerId: 'RSM00000001', } */ diff --git a/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.dashboard.js b/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.dashboard.js index dfba896a5..543ddd65b 100644 --- a/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.dashboard.js +++ b/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(retailStoreMemberCoupon)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (retailStoreMemberCoupon) =>defaultSettingListOf(retailStoreMemberCoupon, optionList) const internalLargeTextOf = (retailStoreMemberCoupon) =>{ @@ -145,6 +145,8 @@ class RetailStoreMemberCouponDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.permission.js b/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.permission.js index 476690bca..ad1e2f0b5 100644 --- a/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.permission.js +++ b/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreMemberCoupon.preference.less' +import styles from './RetailStoreMemberCoupon.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.preference.js b/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.preference.js deleted file mode 100644 index 5186a0ee3..000000000 --- a/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.preference.js +++ /dev/null @@ -1,357 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreMemberCoupon.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (retailStoreMemberCoupon) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (retailStoreMemberCoupon) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (retailStoreMemberCoupon) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {RetailStoreMemberCouponService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = RetailStoreMemberCouponService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (retailStoreMemberCoupon,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=retailStoreMemberCoupon.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_retailStoreMemberCoupon/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (retailStoreMemberCoupon,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(retailStoreMemberCoupon,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (retailStoreMemberCoupon) =>{ - return null -} -const internalRenderExtraFooter = (retailStoreMemberCoupon) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (retailStoreMemberCoupon,targetComponent) =>{ - const userContext = null - return ( - -{retailStoreMemberCoupon.id} -{retailStoreMemberCoupon.name} -{retailStoreMemberCoupon.owner==null?appLocaleName(userContext,"NotAssigned"):retailStoreMemberCoupon.owner.displayName} - - showTransferModel(targetComponent,"业主","retailStoreMember","requestCandidateOwner", - "transferToAnotherOwner","anotherOwnerId",retailStoreMemberCoupon.owner?retailStoreMemberCoupon.owner.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{retailStoreMemberCoupon.number} -{ moment(retailStoreMemberCoupon.lastUpdateTime).format('YYYY-MM-DD')} - - {buildTransferModal(retailStoreMemberCoupon,targetComponent)} - - ) - -} - - -const renderPermissionSetting = retailStoreMemberCoupon => { - const {RetailStoreMemberCouponBase} = GlobalComponents - return - - -} - - -class RetailStoreMemberCouponPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const retailStoreMemberCoupon = this.props.retailStoreMemberCoupon; - const { id,displayName, } = retailStoreMemberCoupon - - - - const cardsData = {cardsName:"生超会员优惠券",cardsFor: "retailStoreMemberCoupon",cardsSource: retailStoreMemberCoupon, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - retailStoreMemberCoupon: state._retailStoreMemberCoupon, -}))(Form.create()(RetailStoreMemberCouponPreference)) - diff --git a/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.preference.less b/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.profile.js b/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.profile.js index 3f5d0dc5d..be3950a56 100644 --- a/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.profile.js +++ b/bizui/src/bizcomponents/retailstoremembercoupon/RetailStoreMemberCoupon.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreMemberCoupon.preference.less' +import styles from './RetailStoreMemberCoupon.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,18 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (retailStoreMemberCoupon,targetComponent) =>{ - const userContext = null - return ( - -{retailStoreMemberCoupon.id} -{retailStoreMemberCoupon.name} -{retailStoreMemberCoupon.number} -{ moment(retailStoreMemberCoupon.lastUpdateTime).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.RetailStoreMemberCouponBase.renderItemOfList(item, targetComponents) + } @@ -65,13 +58,14 @@ class RetailStoreMemberCouponProfile extends Component { const cardsData = {cardsName:"生超会员优惠券",cardsFor: "retailStoreMemberCoupon",cardsSource: retailStoreMemberCoupon, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -81,7 +75,7 @@ class RetailStoreMemberCouponProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.associateform.js b/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.associateform.js index 921d8f5a5..c73b76a5d 100644 --- a/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.associateform.js +++ b/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.associateform.js @@ -20,8 +20,8 @@ const testValues = {}; const testValues = { name: '礼品卡', number: 'CP00001', - remain: '167.36', - ownerId: 'RSM000001', + remain: '165.93', + ownerId: 'RSM00000001', } */ diff --git a/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.base.js b/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.base.js index b6ee095d0..524fa52a1 100644 --- a/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.base.js +++ b/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -54,27 +55,27 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({retailStoreMemberGiftCard,targetComponent})=>{ +const renderItemOfList=(retailStoreMemberGiftCard,targetComponent)=>{ - const {RetailStoreMemberGiftCardService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {retailStoreMemberGiftCard.id} {retailStoreMemberGiftCard.name} {retailStoreMemberGiftCard.owner==null?appLocaleName(userContext,"NotAssigned"):`${retailStoreMemberGiftCard.owner.displayName}(${retailStoreMemberGiftCard.owner.id})`} - - showTransferModel(targetComponent,"业主","retailStoreMember",RetailStoreMemberGiftCardService.requestCandidateOwner, - RetailStoreMemberGiftCardService.transferToAnotherOwner,"anotherOwnerId",retailStoreMemberGiftCard.owner?retailStoreMemberGiftCard.owner.id:"")} - style={{fontSize: 20,color:"red"}} /> {retailStoreMemberGiftCard.number} {retailStoreMemberGiftCard.remain} - {buildTransferModal(retailStoreMemberGiftCard,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.createform.js b/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.createform.js index 825eb00a0..990402a8c 100644 --- a/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.createform.js +++ b/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.createform.js @@ -19,8 +19,8 @@ const testValues = {}; const testValues = { name: '礼品卡', number: 'CP00001', - remain: '174.75', - ownerId: 'RSM000001', + remain: '185.23', + ownerId: 'RSM00000001', } */ diff --git a/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.dashboard.js b/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.dashboard.js index 249dbddf7..6a82cb796 100644 --- a/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.dashboard.js +++ b/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(retailStoreMemberGiftCard)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (retailStoreMemberGiftCard) =>defaultSettingListOf(retailStoreMemberGiftCard, optionList) const internalLargeTextOf = (retailStoreMemberGiftCard) =>{ @@ -131,7 +131,7 @@ class RetailStoreMemberGiftCardDashboard extends Component { const cardsData = {cardsName:"零售店会员礼品卡",cardsFor: "retailStoreMemberGiftCard", cardsSource: this.props.retailStoreMemberGiftCard,returnURL,displayName, subItems: [ -{name: 'retailStoreMemberGiftCardConsumeRecordList', displayName:'零售商店会员卡消费记录',type:'retailStoreMemberGiftCardConsumeRecord',count:retailStoreMemberGiftCardConsumeRecordCount,addFunction: true, role: 'retailStoreMemberGiftCardConsumeRecord', metaInfo: retailStoreMemberGiftCardConsumeRecordListMetaInfo}, +{name: 'retailStoreMemberGiftCardConsumeRecordList', displayName:'零售商店会员卡消费记录',type:'retailStoreMemberGiftCardConsumeRecord',count:retailStoreMemberGiftCardConsumeRecordCount,addFunction: true, role: 'retailStoreMemberGiftCardConsumeRecord', metaInfo: retailStoreMemberGiftCardConsumeRecordListMetaInfo, renderItem: GlobalComponents.RetailStoreMemberGiftCardConsumeRecordBase.renderItemOfList}, ], }; @@ -146,6 +146,8 @@ class RetailStoreMemberGiftCardDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.permission.js b/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.permission.js index 04aa48e53..3e287545a 100644 --- a/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.permission.js +++ b/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreMemberGiftCard.preference.less' +import styles from './RetailStoreMemberGiftCard.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.preference.js b/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.preference.js deleted file mode 100644 index ad66387f5..000000000 --- a/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.preference.js +++ /dev/null @@ -1,357 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreMemberGiftCard.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (retailStoreMemberGiftCard) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (retailStoreMemberGiftCard) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (retailStoreMemberGiftCard) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {RetailStoreMemberGiftCardService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = RetailStoreMemberGiftCardService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (retailStoreMemberGiftCard,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=retailStoreMemberGiftCard.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_retailStoreMemberGiftCard/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (retailStoreMemberGiftCard,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(retailStoreMemberGiftCard,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (retailStoreMemberGiftCard) =>{ - return null -} -const internalRenderExtraFooter = (retailStoreMemberGiftCard) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (retailStoreMemberGiftCard,targetComponent) =>{ - const userContext = null - return ( - -{retailStoreMemberGiftCard.id} -{retailStoreMemberGiftCard.name} -{retailStoreMemberGiftCard.owner==null?appLocaleName(userContext,"NotAssigned"):retailStoreMemberGiftCard.owner.displayName} - - showTransferModel(targetComponent,"业主","retailStoreMember","requestCandidateOwner", - "transferToAnotherOwner","anotherOwnerId",retailStoreMemberGiftCard.owner?retailStoreMemberGiftCard.owner.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{retailStoreMemberGiftCard.number} -{retailStoreMemberGiftCard.remain} - - {buildTransferModal(retailStoreMemberGiftCard,targetComponent)} - - ) - -} - - -const renderPermissionSetting = retailStoreMemberGiftCard => { - const {RetailStoreMemberGiftCardBase} = GlobalComponents - return - - -} - - -class RetailStoreMemberGiftCardPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const retailStoreMemberGiftCard = this.props.retailStoreMemberGiftCard; - const { id,displayName, retailStoreMemberGiftCardConsumeRecordCount } = retailStoreMemberGiftCard - - - - const cardsData = {cardsName:"零售店会员礼品卡",cardsFor: "retailStoreMemberGiftCard",cardsSource: retailStoreMemberGiftCard, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - retailStoreMemberGiftCard: state._retailStoreMemberGiftCard, -}))(Form.create()(RetailStoreMemberGiftCardPreference)) - diff --git a/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.preference.less b/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.profile.js b/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.profile.js index 98c8157df..be94fdeba 100644 --- a/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.profile.js +++ b/bizui/src/bizcomponents/retailstoremembergiftcard/RetailStoreMemberGiftCard.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreMemberGiftCard.preference.less' +import styles from './RetailStoreMemberGiftCard.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,18 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (retailStoreMemberGiftCard,targetComponent) =>{ - const userContext = null - return ( - -{retailStoreMemberGiftCard.id} -{retailStoreMemberGiftCard.name} -{retailStoreMemberGiftCard.number} -{retailStoreMemberGiftCard.remain} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.RetailStoreMemberGiftCardBase.renderItemOfList(item, targetComponents) + } @@ -65,13 +58,14 @@ class RetailStoreMemberGiftCardProfile extends Component { const cardsData = {cardsName:"零售店会员礼品卡",cardsFor: "retailStoreMemberGiftCard",cardsSource: retailStoreMemberGiftCard, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -81,7 +75,7 @@ class RetailStoreMemberGiftCardProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.associateform.js b/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.associateform.js index d8a116d45..803263ece 100644 --- a/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.associateform.js +++ b/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.associateform.js @@ -18,11 +18,11 @@ const { TextArea } = Input const testValues = {}; /* const testValues = { - occureTime: '2016-10-29', + occureTime: '2018-10-14', number: 'GF00001', - amount: '20.02', - ownerId: 'RSMGC000001', - bizOrderId: 'CO000001', + amount: '19.71', + ownerId: 'RSMGC00000001', + bizOrderId: 'CO00000001', } */ diff --git a/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.base.js b/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.base.js index 519b4eea1..446a6d6fb 100644 --- a/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.base.js +++ b/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -55,33 +56,29 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({retailStoreMemberGiftCardConsumeRecord,targetComponent})=>{ +const renderItemOfList=(retailStoreMemberGiftCardConsumeRecord,targetComponent)=>{ - const {RetailStoreMemberGiftCardConsumeRecordService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {retailStoreMemberGiftCardConsumeRecord.id} { moment(retailStoreMemberGiftCardConsumeRecord.occureTime).format('YYYY-MM-DD')} {retailStoreMemberGiftCardConsumeRecord.owner==null?appLocaleName(userContext,"NotAssigned"):`${retailStoreMemberGiftCardConsumeRecord.owner.displayName}(${retailStoreMemberGiftCardConsumeRecord.owner.id})`} - - showTransferModel(targetComponent,"业主","retailStoreMemberGiftCard",RetailStoreMemberGiftCardConsumeRecordService.requestCandidateOwner, - RetailStoreMemberGiftCardConsumeRecordService.transferToAnotherOwner,"anotherOwnerId",retailStoreMemberGiftCardConsumeRecord.owner?retailStoreMemberGiftCardConsumeRecord.owner.id:"")} - style={{fontSize: 20,color:"red"}} /> {retailStoreMemberGiftCardConsumeRecord.bizOrder==null?appLocaleName(userContext,"NotAssigned"):`${retailStoreMemberGiftCardConsumeRecord.bizOrder.displayName}(${retailStoreMemberGiftCardConsumeRecord.bizOrder.id})`} - - showTransferModel(targetComponent,"订单","consumerOrder",RetailStoreMemberGiftCardConsumeRecordService.requestCandidateBizOrder, - RetailStoreMemberGiftCardConsumeRecordService.transferToAnotherBizOrder,"anotherBizOrderId",retailStoreMemberGiftCardConsumeRecord.bizOrder?retailStoreMemberGiftCardConsumeRecord.bizOrder.id:"")} - style={{fontSize: 20,color:"red"}} /> {retailStoreMemberGiftCardConsumeRecord.number} {retailStoreMemberGiftCardConsumeRecord.amount} - {buildTransferModal(retailStoreMemberGiftCardConsumeRecord,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.createform.js b/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.createform.js index 0ec601f19..95cd4de42 100644 --- a/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.createform.js +++ b/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.createform.js @@ -17,11 +17,11 @@ const { TextArea } = Input const testValues = {}; /* const testValues = { - occureTime: '2016-05-28', + occureTime: '2018-03-27', number: 'GF00001', - amount: '20.15', - ownerId: 'RSMGC000001', - bizOrderId: 'CO000001', + amount: '15.83', + ownerId: 'RSMGC00000001', + bizOrderId: 'CO00000001', } */ diff --git a/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.dashboard.js b/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.dashboard.js index 6a43404a6..52281be7d 100644 --- a/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.dashboard.js +++ b/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(retailStoreMemberGiftCardConsumeRecord)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (retailStoreMemberGiftCardConsumeRecord) =>defaultSettingListOf(retailStoreMemberGiftCardConsumeRecord, optionList) const internalLargeTextOf = (retailStoreMemberGiftCardConsumeRecord) =>{ @@ -151,6 +151,8 @@ class RetailStoreMemberGiftCardConsumeRecordDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.permission.js b/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.permission.js index 6af7c81ce..fe2155be2 100644 --- a/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.permission.js +++ b/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreMemberGiftCardConsumeRecord.preference.less' +import styles from './RetailStoreMemberGiftCardConsumeRecord.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.preference.js b/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.preference.js deleted file mode 100644 index 8cafdd2e3..000000000 --- a/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.preference.js +++ /dev/null @@ -1,363 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreMemberGiftCardConsumeRecord.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (retailStoreMemberGiftCardConsumeRecord) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (retailStoreMemberGiftCardConsumeRecord) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (retailStoreMemberGiftCardConsumeRecord) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {RetailStoreMemberGiftCardConsumeRecordService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = RetailStoreMemberGiftCardConsumeRecordService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (retailStoreMemberGiftCardConsumeRecord,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=retailStoreMemberGiftCardConsumeRecord.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_retailStoreMemberGiftCardConsumeRecord/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (retailStoreMemberGiftCardConsumeRecord,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(retailStoreMemberGiftCardConsumeRecord,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (retailStoreMemberGiftCardConsumeRecord) =>{ - return null -} -const internalRenderExtraFooter = (retailStoreMemberGiftCardConsumeRecord) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (retailStoreMemberGiftCardConsumeRecord,targetComponent) =>{ - const userContext = null - return ( - -{retailStoreMemberGiftCardConsumeRecord.id} -{ moment(retailStoreMemberGiftCardConsumeRecord.occureTime).format('YYYY-MM-DD')} -{retailStoreMemberGiftCardConsumeRecord.owner==null?appLocaleName(userContext,"NotAssigned"):retailStoreMemberGiftCardConsumeRecord.owner.displayName} - - showTransferModel(targetComponent,"业主","retailStoreMemberGiftCard","requestCandidateOwner", - "transferToAnotherOwner","anotherOwnerId",retailStoreMemberGiftCardConsumeRecord.owner?retailStoreMemberGiftCardConsumeRecord.owner.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{retailStoreMemberGiftCardConsumeRecord.bizOrder==null?appLocaleName(userContext,"NotAssigned"):retailStoreMemberGiftCardConsumeRecord.bizOrder.displayName} - - showTransferModel(targetComponent,"订单","consumerOrder","requestCandidateBizOrder", - "transferToAnotherBizOrder","anotherBizOrderId",retailStoreMemberGiftCardConsumeRecord.bizOrder?retailStoreMemberGiftCardConsumeRecord.bizOrder.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{retailStoreMemberGiftCardConsumeRecord.number} -{retailStoreMemberGiftCardConsumeRecord.amount} - - {buildTransferModal(retailStoreMemberGiftCardConsumeRecord,targetComponent)} - - ) - -} - - -const renderPermissionSetting = retailStoreMemberGiftCardConsumeRecord => { - const {RetailStoreMemberGiftCardConsumeRecordBase} = GlobalComponents - return - - -} - - -class RetailStoreMemberGiftCardConsumeRecordPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const retailStoreMemberGiftCardConsumeRecord = this.props.retailStoreMemberGiftCardConsumeRecord; - const { id,displayName, } = retailStoreMemberGiftCardConsumeRecord - - - - const cardsData = {cardsName:"零售商店会员卡消费记录",cardsFor: "retailStoreMemberGiftCardConsumeRecord",cardsSource: retailStoreMemberGiftCardConsumeRecord, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - retailStoreMemberGiftCardConsumeRecord: state._retailStoreMemberGiftCardConsumeRecord, -}))(Form.create()(RetailStoreMemberGiftCardConsumeRecordPreference)) - diff --git a/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.preference.less b/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.profile.js b/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.profile.js index ee083662d..469c92763 100644 --- a/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.profile.js +++ b/bizui/src/bizcomponents/retailstoremembergiftcardconsumerecord/RetailStoreMemberGiftCardConsumeRecord.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreMemberGiftCardConsumeRecord.preference.less' +import styles from './RetailStoreMemberGiftCardConsumeRecord.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,18 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (retailStoreMemberGiftCardConsumeRecord,targetComponent) =>{ - const userContext = null - return ( - -{retailStoreMemberGiftCardConsumeRecord.id} -{ moment(retailStoreMemberGiftCardConsumeRecord.occureTime).format('YYYY-MM-DD')} -{retailStoreMemberGiftCardConsumeRecord.number} -{retailStoreMemberGiftCardConsumeRecord.amount} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.RetailStoreMemberGiftCardConsumeRecordBase.renderItemOfList(item, targetComponents) + } @@ -65,13 +58,14 @@ class RetailStoreMemberGiftCardConsumeRecordProfile extends Component { const cardsData = {cardsName:"零售商店会员卡消费记录",cardsFor: "retailStoreMemberGiftCardConsumeRecord",cardsSource: retailStoreMemberGiftCardConsumeRecord, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -81,7 +75,7 @@ class RetailStoreMemberGiftCardConsumeRecordProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.base.js b/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.base.js index 470da6acd..3dd5e96a8 100644 --- a/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.base.js +++ b/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -48,19 +49,23 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({retailStoreOpening,targetComponent})=>{ +const renderItemOfList=(retailStoreOpening,targetComponent)=>{ - const {RetailStoreOpeningService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {retailStoreOpening.id} {retailStoreOpening.comment} - {buildTransferModal(retailStoreOpening,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.dashboard.js b/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.dashboard.js index af0ae343e..18d2ee148 100644 --- a/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.dashboard.js +++ b/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(retailStoreOpening)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (retailStoreOpening) =>defaultSettingListOf(retailStoreOpening, optionList) const internalLargeTextOf = (retailStoreOpening) =>{ @@ -123,7 +123,7 @@ class RetailStoreOpeningDashboard extends Component { const cardsData = {cardsName:"生超开业",cardsFor: "retailStoreOpening", cardsSource: this.props.retailStoreOpening,returnURL,displayName, subItems: [ -{name: 'retailStoreList', displayName:'双链小超',type:'retailStore',count:retailStoreCount,addFunction: true, role: 'retailStore', metaInfo: retailStoreListMetaInfo}, +{name: 'retailStoreList', displayName:'双链小超',type:'retailStore',count:retailStoreCount,addFunction: true, role: 'retailStore', metaInfo: retailStoreListMetaInfo, renderItem: GlobalComponents.RetailStoreBase.renderItemOfList}, ], }; @@ -138,6 +138,8 @@ class RetailStoreOpeningDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.permission.js b/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.permission.js index fc8b0bd1d..5ae0da3c7 100644 --- a/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.permission.js +++ b/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreOpening.preference.less' +import styles from './RetailStoreOpening.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.preference.js b/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.preference.js deleted file mode 100644 index 5c396fbfa..000000000 --- a/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.preference.js +++ /dev/null @@ -1,349 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreOpening.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (retailStoreOpening) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (retailStoreOpening) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (retailStoreOpening) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {RetailStoreOpeningService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = RetailStoreOpeningService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (retailStoreOpening,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=retailStoreOpening.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_retailStoreOpening/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (retailStoreOpening,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(retailStoreOpening,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (retailStoreOpening) =>{ - return null -} -const internalRenderExtraFooter = (retailStoreOpening) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (retailStoreOpening,targetComponent) =>{ - const userContext = null - return ( - -{retailStoreOpening.id} -{retailStoreOpening.comment} - - {buildTransferModal(retailStoreOpening,targetComponent)} - - ) - -} - - -const renderPermissionSetting = retailStoreOpening => { - const {RetailStoreOpeningBase} = GlobalComponents - return - - -} - - -class RetailStoreOpeningPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const retailStoreOpening = this.props.retailStoreOpening; - const { id,displayName, retailStoreCount } = retailStoreOpening - - - - const cardsData = {cardsName:"生超开业",cardsFor: "retailStoreOpening",cardsSource: retailStoreOpening, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - retailStoreOpening: state._retailStoreOpening, -}))(Form.create()(RetailStoreOpeningPreference)) - diff --git a/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.preference.less b/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.profile.js b/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.profile.js index d7d492743..2b1a0af75 100644 --- a/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.profile.js +++ b/bizui/src/bizcomponents/retailstoreopening/RetailStoreOpening.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreOpening.preference.less' +import styles from './RetailStoreOpening.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,16 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (retailStoreOpening,targetComponent) =>{ - const userContext = null - return ( - -{retailStoreOpening.id} -{retailStoreOpening.comment} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.RetailStoreOpeningBase.renderItemOfList(item, targetComponents) + } @@ -63,13 +58,14 @@ class RetailStoreOpeningProfile extends Component { const cardsData = {cardsName:"生超开业",cardsFor: "retailStoreOpening",cardsSource: retailStoreOpening, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -79,7 +75,7 @@ class RetailStoreOpeningProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.associateform.js b/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.associateform.js index 7a61e9d1e..9838f86e3 100644 --- a/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.associateform.js +++ b/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.associateform.js @@ -19,9 +19,9 @@ const testValues = {}; /* const testValues = { title: '双链小超给双链供应链下的订单', - totalAmount: '2480072448.00', - buyerId: 'RS000001', - sellerId: 'RSCC000001', + totalAmount: '2225322496.00', + buyerId: 'RS00000001', + sellerId: 'RSCC00000001', } */ diff --git a/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.base.js b/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.base.js index 6e5bb2ddd..3e94eeec1 100644 --- a/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.base.js +++ b/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -46,11 +47,11 @@ const fieldLabels = { title: '头衔', totalAmount: '总金额', confirmation: '确认', - approval: '验收', - processing: '处理', - picking: '捡货', - shipment: '装运', - delivery: '送货', + approval: '批准', + processing: '过程', + picking: '选择', + shipment: '船', + delivery: '交付', lastUpdateTime: '最后更新时间', currentStatus: '当前状态', @@ -73,28 +74,28 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({retailStoreOrder,targetComponent})=>{ +const renderItemOfList=(retailStoreOrder,targetComponent)=>{ - const {RetailStoreOrderService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {retailStoreOrder.id} {retailStoreOrder.buyer==null?appLocaleName(userContext,"NotAssigned"):`${retailStoreOrder.buyer.displayName}(${retailStoreOrder.buyer.id})`} - - showTransferModel(targetComponent,"买方","retailStore",RetailStoreOrderService.requestCandidateBuyer, - RetailStoreOrderService.transferToAnotherBuyer,"anotherBuyerId",retailStoreOrder.buyer?retailStoreOrder.buyer.id:"")} - style={{fontSize: 20,color:"red"}} /> {retailStoreOrder.title} {retailStoreOrder.totalAmount} { moment(retailStoreOrder.lastUpdateTime).format('YYYY-MM-DD')} {retailStoreOrder.currentStatus} - {buildTransferModal(retailStoreOrder,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.createform.js b/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.createform.js index 750fb82a8..ff9f389d9 100644 --- a/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.createform.js +++ b/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.createform.js @@ -18,9 +18,9 @@ const testValues = {}; /* const testValues = { title: '双链小超给双链供应链下的订单', - totalAmount: '2704005120.00', - buyerId: 'RS000001', - sellerId: 'RSCC000001', + totalAmount: '2652968448.00', + buyerId: 'RS00000001', + sellerId: 'RSCC00000001', } */ diff --git a/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.dashboard.js b/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.dashboard.js index e781ae317..49e19768c 100644 --- a/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.dashboard.js +++ b/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(retailStoreOrder)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (retailStoreOrder) =>defaultSettingListOf(retailStoreOrder, optionList) const internalLargeTextOf = (retailStoreOrder) =>{ @@ -132,10 +132,10 @@ class RetailStoreOrderDashboard extends Component { const cardsData = {cardsName:"生超的订单",cardsFor: "retailStoreOrder", cardsSource: this.props.retailStoreOrder,returnURL,displayName, subItems: [ -{name: 'retailStoreOrderLineItemList', displayName:'双链小超订单行项目',type:'retailStoreOrderLineItem',count:retailStoreOrderLineItemCount,addFunction: true, role: 'retailStoreOrderLineItem', metaInfo: retailStoreOrderLineItemListMetaInfo}, -{name: 'retailStoreOrderShippingGroupList', displayName:'生超订单送货分组',type:'retailStoreOrderShippingGroup',count:retailStoreOrderShippingGroupCount,addFunction: true, role: 'retailStoreOrderShippingGroup', metaInfo: retailStoreOrderShippingGroupListMetaInfo}, -{name: 'retailStoreOrderPaymentGroupList', displayName:'生超订单付款组',type:'retailStoreOrderPaymentGroup',count:retailStoreOrderPaymentGroupCount,addFunction: true, role: 'retailStoreOrderPaymentGroup', metaInfo: retailStoreOrderPaymentGroupListMetaInfo}, -{name: 'goodsList', displayName:'货物',type:'goods',count:goodsCount,addFunction: true, role: 'goods', metaInfo: goodsListMetaInfo}, +{name: 'retailStoreOrderLineItemList', displayName:'双链小超订单行项目',type:'retailStoreOrderLineItem',count:retailStoreOrderLineItemCount,addFunction: true, role: 'retailStoreOrderLineItem', metaInfo: retailStoreOrderLineItemListMetaInfo, renderItem: GlobalComponents.RetailStoreOrderLineItemBase.renderItemOfList}, +{name: 'retailStoreOrderShippingGroupList', displayName:'生超订单送货分组',type:'retailStoreOrderShippingGroup',count:retailStoreOrderShippingGroupCount,addFunction: true, role: 'retailStoreOrderShippingGroup', metaInfo: retailStoreOrderShippingGroupListMetaInfo, renderItem: GlobalComponents.RetailStoreOrderShippingGroupBase.renderItemOfList}, +{name: 'retailStoreOrderPaymentGroupList', displayName:'生超订单付款组',type:'retailStoreOrderPaymentGroup',count:retailStoreOrderPaymentGroupCount,addFunction: true, role: 'retailStoreOrderPaymentGroup', metaInfo: retailStoreOrderPaymentGroupListMetaInfo, renderItem: GlobalComponents.RetailStoreOrderPaymentGroupBase.renderItemOfList}, +{name: 'goodsList', displayName:'货物',type:'goods',count:goodsCount,addFunction: true, role: 'goods', metaInfo: goodsListMetaInfo, renderItem: GlobalComponents.GoodsBase.renderItemOfList}, ], }; @@ -150,6 +150,8 @@ class RetailStoreOrderDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.permission.js b/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.permission.js index eabae0784..d4e7f3eef 100644 --- a/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.permission.js +++ b/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreOrder.preference.less' +import styles from './RetailStoreOrder.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.preference.js b/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.preference.js deleted file mode 100644 index eef6761be..000000000 --- a/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.preference.js +++ /dev/null @@ -1,358 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreOrder.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (retailStoreOrder) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (retailStoreOrder) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (retailStoreOrder) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {RetailStoreOrderService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = RetailStoreOrderService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (retailStoreOrder,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=retailStoreOrder.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_retailStoreOrder/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (retailStoreOrder,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(retailStoreOrder,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (retailStoreOrder) =>{ - return null -} -const internalRenderExtraFooter = (retailStoreOrder) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (retailStoreOrder,targetComponent) =>{ - const userContext = null - return ( - -{retailStoreOrder.id} -{retailStoreOrder.buyer==null?appLocaleName(userContext,"NotAssigned"):retailStoreOrder.buyer.displayName} - - showTransferModel(targetComponent,"买方","retailStore","requestCandidateBuyer", - "transferToAnotherBuyer","anotherBuyerId",retailStoreOrder.buyer?retailStoreOrder.buyer.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{retailStoreOrder.title} -{retailStoreOrder.totalAmount} -{ moment(retailStoreOrder.lastUpdateTime).format('YYYY-MM-DD')} -{retailStoreOrder.currentStatus} - - {buildTransferModal(retailStoreOrder,targetComponent)} - - ) - -} - - -const renderPermissionSetting = retailStoreOrder => { - const {RetailStoreOrderBase} = GlobalComponents - return - - -} - - -class RetailStoreOrderPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const retailStoreOrder = this.props.retailStoreOrder; - const { id,displayName, retailStoreOrderLineItemCount, retailStoreOrderShippingGroupCount, retailStoreOrderPaymentGroupCount, goodsCount } = retailStoreOrder - - - - const cardsData = {cardsName:"生超的订单",cardsFor: "retailStoreOrder",cardsSource: retailStoreOrder, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - retailStoreOrder: state._retailStoreOrder, -}))(Form.create()(RetailStoreOrderPreference)) - diff --git a/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.preference.less b/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.profile.js b/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.profile.js index 6e0a8e406..c233c3ec3 100644 --- a/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.profile.js +++ b/bizui/src/bizcomponents/retailstoreorder/RetailStoreOrder.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreOrder.preference.less' +import styles from './RetailStoreOrder.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,19 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (retailStoreOrder,targetComponent) =>{ - const userContext = null - return ( - -{retailStoreOrder.id} -{retailStoreOrder.title} -{retailStoreOrder.totalAmount} -{ moment(retailStoreOrder.lastUpdateTime).format('YYYY-MM-DD')} -{retailStoreOrder.currentStatus} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.RetailStoreOrderBase.renderItemOfList(item, targetComponents) + } @@ -66,13 +58,14 @@ class RetailStoreOrderProfile extends Component { const cardsData = {cardsName:"生超的订单",cardsFor: "retailStoreOrder",cardsSource: retailStoreOrder, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -82,7 +75,7 @@ class RetailStoreOrderProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.associateform.js b/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.associateform.js index f82d409e7..3b2ff594b 100644 --- a/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.associateform.js +++ b/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { who: '批准者', - approveTime: '2018-02-22', + approveTime: '2017-10-26', } */ diff --git a/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.base.js b/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.base.js index 05be3dafc..c2076e387 100644 --- a/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.base.js +++ b/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -50,20 +51,24 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({retailStoreOrderApproval,targetComponent})=>{ +const renderItemOfList=(retailStoreOrderApproval,targetComponent)=>{ - const {RetailStoreOrderApprovalService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {retailStoreOrderApproval.id} {retailStoreOrderApproval.who} { moment(retailStoreOrderApproval.approveTime).format('YYYY-MM-DD')} - {buildTransferModal(retailStoreOrderApproval,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.createform.js b/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.createform.js index e965624c2..ef5de9c83 100644 --- a/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.createform.js +++ b/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { who: '批准者', - approveTime: '2017-06-02', + approveTime: '2017-08-22', } */ diff --git a/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.dashboard.js b/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.dashboard.js index d090b0398..29980fdc4 100644 --- a/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.dashboard.js +++ b/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(retailStoreOrderApproval)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (retailStoreOrderApproval) =>defaultSettingListOf(retailStoreOrderApproval, optionList) const internalLargeTextOf = (retailStoreOrderApproval) =>{ @@ -124,7 +124,7 @@ class RetailStoreOrderApprovalDashboard extends Component { const cardsData = {cardsName:"生超订单批准",cardsFor: "retailStoreOrderApproval", cardsSource: this.props.retailStoreOrderApproval,returnURL,displayName, subItems: [ -{name: 'retailStoreOrderList', displayName:'生超的订单',type:'retailStoreOrder',count:retailStoreOrderCount,addFunction: true, role: 'retailStoreOrder', metaInfo: retailStoreOrderListMetaInfo}, +{name: 'retailStoreOrderList', displayName:'生超的订单',type:'retailStoreOrder',count:retailStoreOrderCount,addFunction: true, role: 'retailStoreOrder', metaInfo: retailStoreOrderListMetaInfo, renderItem: GlobalComponents.RetailStoreOrderBase.renderItemOfList}, ], }; @@ -139,6 +139,8 @@ class RetailStoreOrderApprovalDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.permission.js b/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.permission.js index 938435f4e..56b8cf73b 100644 --- a/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.permission.js +++ b/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreOrderApproval.preference.less' +import styles from './RetailStoreOrderApproval.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.preference.js b/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.preference.js deleted file mode 100644 index f37d6bef4..000000000 --- a/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.preference.js +++ /dev/null @@ -1,350 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreOrderApproval.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (retailStoreOrderApproval) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (retailStoreOrderApproval) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (retailStoreOrderApproval) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {RetailStoreOrderApprovalService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = RetailStoreOrderApprovalService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (retailStoreOrderApproval,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=retailStoreOrderApproval.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_retailStoreOrderApproval/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (retailStoreOrderApproval,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(retailStoreOrderApproval,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (retailStoreOrderApproval) =>{ - return null -} -const internalRenderExtraFooter = (retailStoreOrderApproval) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (retailStoreOrderApproval,targetComponent) =>{ - const userContext = null - return ( - -{retailStoreOrderApproval.id} -{retailStoreOrderApproval.who} -{ moment(retailStoreOrderApproval.approveTime).format('YYYY-MM-DD')} - - {buildTransferModal(retailStoreOrderApproval,targetComponent)} - - ) - -} - - -const renderPermissionSetting = retailStoreOrderApproval => { - const {RetailStoreOrderApprovalBase} = GlobalComponents - return - - -} - - -class RetailStoreOrderApprovalPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const retailStoreOrderApproval = this.props.retailStoreOrderApproval; - const { id,displayName, retailStoreOrderCount } = retailStoreOrderApproval - - - - const cardsData = {cardsName:"生超订单批准",cardsFor: "retailStoreOrderApproval",cardsSource: retailStoreOrderApproval, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - retailStoreOrderApproval: state._retailStoreOrderApproval, -}))(Form.create()(RetailStoreOrderApprovalPreference)) - diff --git a/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.preference.less b/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.profile.js b/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.profile.js index 528975280..cbb276f8b 100644 --- a/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.profile.js +++ b/bizui/src/bizcomponents/retailstoreorderapproval/RetailStoreOrderApproval.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreOrderApproval.preference.less' +import styles from './RetailStoreOrderApproval.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,17 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (retailStoreOrderApproval,targetComponent) =>{ - const userContext = null - return ( - -{retailStoreOrderApproval.id} -{retailStoreOrderApproval.who} -{ moment(retailStoreOrderApproval.approveTime).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.RetailStoreOrderApprovalBase.renderItemOfList(item, targetComponents) + } @@ -64,13 +58,14 @@ class RetailStoreOrderApprovalProfile extends Component { const cardsData = {cardsName:"生超订单批准",cardsFor: "retailStoreOrderApproval",cardsSource: retailStoreOrderApproval, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -80,7 +75,7 @@ class RetailStoreOrderApprovalProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.associateform.js b/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.associateform.js index d6da8957f..9ead9b2e5 100644 --- a/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.associateform.js +++ b/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { who: '确认者', - confirmTime: '2018-06-23', + confirmTime: '2016-10-30', } */ diff --git a/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.base.js b/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.base.js index 7b45009b8..54b3f74b9 100644 --- a/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.base.js +++ b/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -50,20 +51,24 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({retailStoreOrderConfirmation,targetComponent})=>{ +const renderItemOfList=(retailStoreOrderConfirmation,targetComponent)=>{ - const {RetailStoreOrderConfirmationService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {retailStoreOrderConfirmation.id} {retailStoreOrderConfirmation.who} { moment(retailStoreOrderConfirmation.confirmTime).format('YYYY-MM-DD')} - {buildTransferModal(retailStoreOrderConfirmation,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.createform.js b/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.createform.js index 320354883..aa401b19f 100644 --- a/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.createform.js +++ b/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { who: '确认者', - confirmTime: '2016-09-07', + confirmTime: '2019-02-25', } */ diff --git a/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.dashboard.js b/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.dashboard.js index 9c1e7bab9..bc072c5ea 100644 --- a/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.dashboard.js +++ b/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(retailStoreOrderConfirmation)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (retailStoreOrderConfirmation) =>defaultSettingListOf(retailStoreOrderConfirmation, optionList) const internalLargeTextOf = (retailStoreOrderConfirmation) =>{ @@ -124,7 +124,7 @@ class RetailStoreOrderConfirmationDashboard extends Component { const cardsData = {cardsName:"生超订单确认",cardsFor: "retailStoreOrderConfirmation", cardsSource: this.props.retailStoreOrderConfirmation,returnURL,displayName, subItems: [ -{name: 'retailStoreOrderList', displayName:'生超的订单',type:'retailStoreOrder',count:retailStoreOrderCount,addFunction: true, role: 'retailStoreOrder', metaInfo: retailStoreOrderListMetaInfo}, +{name: 'retailStoreOrderList', displayName:'生超的订单',type:'retailStoreOrder',count:retailStoreOrderCount,addFunction: true, role: 'retailStoreOrder', metaInfo: retailStoreOrderListMetaInfo, renderItem: GlobalComponents.RetailStoreOrderBase.renderItemOfList}, ], }; @@ -139,6 +139,8 @@ class RetailStoreOrderConfirmationDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.permission.js b/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.permission.js index 95b4e78e2..394b4c2b5 100644 --- a/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.permission.js +++ b/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreOrderConfirmation.preference.less' +import styles from './RetailStoreOrderConfirmation.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.preference.js b/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.preference.js deleted file mode 100644 index f488f92c0..000000000 --- a/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.preference.js +++ /dev/null @@ -1,350 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreOrderConfirmation.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (retailStoreOrderConfirmation) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (retailStoreOrderConfirmation) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (retailStoreOrderConfirmation) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {RetailStoreOrderConfirmationService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = RetailStoreOrderConfirmationService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (retailStoreOrderConfirmation,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=retailStoreOrderConfirmation.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_retailStoreOrderConfirmation/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (retailStoreOrderConfirmation,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(retailStoreOrderConfirmation,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (retailStoreOrderConfirmation) =>{ - return null -} -const internalRenderExtraFooter = (retailStoreOrderConfirmation) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (retailStoreOrderConfirmation,targetComponent) =>{ - const userContext = null - return ( - -{retailStoreOrderConfirmation.id} -{retailStoreOrderConfirmation.who} -{ moment(retailStoreOrderConfirmation.confirmTime).format('YYYY-MM-DD')} - - {buildTransferModal(retailStoreOrderConfirmation,targetComponent)} - - ) - -} - - -const renderPermissionSetting = retailStoreOrderConfirmation => { - const {RetailStoreOrderConfirmationBase} = GlobalComponents - return - - -} - - -class RetailStoreOrderConfirmationPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const retailStoreOrderConfirmation = this.props.retailStoreOrderConfirmation; - const { id,displayName, retailStoreOrderCount } = retailStoreOrderConfirmation - - - - const cardsData = {cardsName:"生超订单确认",cardsFor: "retailStoreOrderConfirmation",cardsSource: retailStoreOrderConfirmation, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - retailStoreOrderConfirmation: state._retailStoreOrderConfirmation, -}))(Form.create()(RetailStoreOrderConfirmationPreference)) - diff --git a/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.preference.less b/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.profile.js b/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.profile.js index f33595d10..41614b754 100644 --- a/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.profile.js +++ b/bizui/src/bizcomponents/retailstoreorderconfirmation/RetailStoreOrderConfirmation.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreOrderConfirmation.preference.less' +import styles from './RetailStoreOrderConfirmation.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,17 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (retailStoreOrderConfirmation,targetComponent) =>{ - const userContext = null - return ( - -{retailStoreOrderConfirmation.id} -{retailStoreOrderConfirmation.who} -{ moment(retailStoreOrderConfirmation.confirmTime).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.RetailStoreOrderConfirmationBase.renderItemOfList(item, targetComponents) + } @@ -64,13 +58,14 @@ class RetailStoreOrderConfirmationProfile extends Component { const cardsData = {cardsName:"生超订单确认",cardsFor: "retailStoreOrderConfirmation",cardsSource: retailStoreOrderConfirmation, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -80,7 +75,7 @@ class RetailStoreOrderConfirmationProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.associateform.js b/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.associateform.js index 8080716cf..ab8fbb072 100644 --- a/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.associateform.js +++ b/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { who: '送货者', - deliveryTime: '2018-02-27', + deliveryTime: '2017-06-25', } */ diff --git a/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.base.js b/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.base.js index 33549ac0f..e0feecc4b 100644 --- a/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.base.js +++ b/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -50,20 +51,24 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({retailStoreOrderDelivery,targetComponent})=>{ +const renderItemOfList=(retailStoreOrderDelivery,targetComponent)=>{ - const {RetailStoreOrderDeliveryService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {retailStoreOrderDelivery.id} {retailStoreOrderDelivery.who} { moment(retailStoreOrderDelivery.deliveryTime).format('YYYY-MM-DD')} - {buildTransferModal(retailStoreOrderDelivery,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.createform.js b/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.createform.js index 7ca2222c4..96e2238ac 100644 --- a/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.createform.js +++ b/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { who: '送货者', - deliveryTime: '2018-06-12', + deliveryTime: '2016-11-08', } */ diff --git a/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.dashboard.js b/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.dashboard.js index f2d30fa21..4a982aca3 100644 --- a/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.dashboard.js +++ b/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(retailStoreOrderDelivery)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (retailStoreOrderDelivery) =>defaultSettingListOf(retailStoreOrderDelivery, optionList) const internalLargeTextOf = (retailStoreOrderDelivery) =>{ @@ -124,7 +124,7 @@ class RetailStoreOrderDeliveryDashboard extends Component { const cardsData = {cardsName:"生超订单交付",cardsFor: "retailStoreOrderDelivery", cardsSource: this.props.retailStoreOrderDelivery,returnURL,displayName, subItems: [ -{name: 'retailStoreOrderList', displayName:'生超的订单',type:'retailStoreOrder',count:retailStoreOrderCount,addFunction: true, role: 'retailStoreOrder', metaInfo: retailStoreOrderListMetaInfo}, +{name: 'retailStoreOrderList', displayName:'生超的订单',type:'retailStoreOrder',count:retailStoreOrderCount,addFunction: true, role: 'retailStoreOrder', metaInfo: retailStoreOrderListMetaInfo, renderItem: GlobalComponents.RetailStoreOrderBase.renderItemOfList}, ], }; @@ -139,6 +139,8 @@ class RetailStoreOrderDeliveryDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.permission.js b/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.permission.js index 4868f76b2..a8a3ac42c 100644 --- a/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.permission.js +++ b/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreOrderDelivery.preference.less' +import styles from './RetailStoreOrderDelivery.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.preference.js b/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.preference.js deleted file mode 100644 index e6dec6668..000000000 --- a/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.preference.js +++ /dev/null @@ -1,350 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreOrderDelivery.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (retailStoreOrderDelivery) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (retailStoreOrderDelivery) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (retailStoreOrderDelivery) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {RetailStoreOrderDeliveryService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = RetailStoreOrderDeliveryService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (retailStoreOrderDelivery,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=retailStoreOrderDelivery.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_retailStoreOrderDelivery/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (retailStoreOrderDelivery,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(retailStoreOrderDelivery,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (retailStoreOrderDelivery) =>{ - return null -} -const internalRenderExtraFooter = (retailStoreOrderDelivery) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (retailStoreOrderDelivery,targetComponent) =>{ - const userContext = null - return ( - -{retailStoreOrderDelivery.id} -{retailStoreOrderDelivery.who} -{ moment(retailStoreOrderDelivery.deliveryTime).format('YYYY-MM-DD')} - - {buildTransferModal(retailStoreOrderDelivery,targetComponent)} - - ) - -} - - -const renderPermissionSetting = retailStoreOrderDelivery => { - const {RetailStoreOrderDeliveryBase} = GlobalComponents - return - - -} - - -class RetailStoreOrderDeliveryPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const retailStoreOrderDelivery = this.props.retailStoreOrderDelivery; - const { id,displayName, retailStoreOrderCount } = retailStoreOrderDelivery - - - - const cardsData = {cardsName:"生超订单交付",cardsFor: "retailStoreOrderDelivery",cardsSource: retailStoreOrderDelivery, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - retailStoreOrderDelivery: state._retailStoreOrderDelivery, -}))(Form.create()(RetailStoreOrderDeliveryPreference)) - diff --git a/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.preference.less b/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.profile.js b/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.profile.js index a66699750..f0f55b4eb 100644 --- a/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.profile.js +++ b/bizui/src/bizcomponents/retailstoreorderdelivery/RetailStoreOrderDelivery.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreOrderDelivery.preference.less' +import styles from './RetailStoreOrderDelivery.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,17 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (retailStoreOrderDelivery,targetComponent) =>{ - const userContext = null - return ( - -{retailStoreOrderDelivery.id} -{retailStoreOrderDelivery.who} -{ moment(retailStoreOrderDelivery.deliveryTime).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.RetailStoreOrderDeliveryBase.renderItemOfList(item, targetComponents) + } @@ -64,13 +58,14 @@ class RetailStoreOrderDeliveryProfile extends Component { const cardsData = {cardsName:"生超订单交付",cardsFor: "retailStoreOrderDelivery",cardsSource: retailStoreOrderDelivery, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -80,7 +75,7 @@ class RetailStoreOrderDeliveryProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.associateform.js b/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.associateform.js index ce9608694..86f5e87e0 100644 --- a/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.associateform.js +++ b/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.associateform.js @@ -20,10 +20,10 @@ const testValues = {}; const testValues = { skuId: 'SKU', skuName: '大瓶可乐', - amount: '3.63', - quantity: '9605', + amount: '3.12', + quantity: '7039', unitOfMeasurement: '件', - bizOrderId: 'RSO000001', + bizOrderId: 'RSO00000001', } */ diff --git a/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.base.js b/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.base.js index e3a043c21..a3fce8046 100644 --- a/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.base.js +++ b/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -57,20 +58,18 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({retailStoreOrderLineItem,targetComponent})=>{ +const renderItemOfList=(retailStoreOrderLineItem,targetComponent)=>{ - const {RetailStoreOrderLineItemService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {retailStoreOrderLineItem.id} {retailStoreOrderLineItem.bizOrder==null?appLocaleName(userContext,"NotAssigned"):`${retailStoreOrderLineItem.bizOrder.displayName}(${retailStoreOrderLineItem.bizOrder.id})`} - - showTransferModel(targetComponent,"订单","retailStoreOrder",RetailStoreOrderLineItemService.requestCandidateBizOrder, - RetailStoreOrderLineItemService.transferToAnotherBizOrder,"anotherBizOrderId",retailStoreOrderLineItem.bizOrder?retailStoreOrderLineItem.bizOrder.id:"")} - style={{fontSize: 20,color:"red"}} /> {retailStoreOrderLineItem.skuId} {retailStoreOrderLineItem.skuName} @@ -78,8 +77,10 @@ const renderItemOfList=({retailStoreOrderLineItem,targetComponent})=>{ {retailStoreOrderLineItem.quantity} {retailStoreOrderLineItem.unitOfMeasurement} - {buildTransferModal(retailStoreOrderLineItem,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.createform.js b/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.createform.js index 1e24736b4..b67aa6cd1 100644 --- a/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.createform.js +++ b/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.createform.js @@ -19,10 +19,10 @@ const testValues = {}; const testValues = { skuId: 'SKU', skuName: '大瓶可乐', - amount: '3.27', - quantity: '9258', + amount: '3.30', + quantity: '9802', unitOfMeasurement: '件', - bizOrderId: 'RSO000001', + bizOrderId: 'RSO00000001', } */ diff --git a/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.dashboard.js b/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.dashboard.js index bc093c144..d96d27331 100644 --- a/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.dashboard.js +++ b/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(retailStoreOrderLineItem)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (retailStoreOrderLineItem) =>defaultSettingListOf(retailStoreOrderLineItem, optionList) const internalLargeTextOf = (retailStoreOrderLineItem) =>{ @@ -147,6 +147,8 @@ class RetailStoreOrderLineItemDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.permission.js b/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.permission.js index 2d51d372e..aea1bc21e 100644 --- a/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.permission.js +++ b/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreOrderLineItem.preference.less' +import styles from './RetailStoreOrderLineItem.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.preference.js b/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.preference.js deleted file mode 100644 index 5b0cab6ff..000000000 --- a/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.preference.js +++ /dev/null @@ -1,359 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreOrderLineItem.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (retailStoreOrderLineItem) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (retailStoreOrderLineItem) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (retailStoreOrderLineItem) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {RetailStoreOrderLineItemService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = RetailStoreOrderLineItemService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (retailStoreOrderLineItem,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=retailStoreOrderLineItem.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_retailStoreOrderLineItem/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (retailStoreOrderLineItem,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(retailStoreOrderLineItem,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (retailStoreOrderLineItem) =>{ - return null -} -const internalRenderExtraFooter = (retailStoreOrderLineItem) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (retailStoreOrderLineItem,targetComponent) =>{ - const userContext = null - return ( - -{retailStoreOrderLineItem.id} -{retailStoreOrderLineItem.bizOrder==null?appLocaleName(userContext,"NotAssigned"):retailStoreOrderLineItem.bizOrder.displayName} - - showTransferModel(targetComponent,"订单","retailStoreOrder","requestCandidateBizOrder", - "transferToAnotherBizOrder","anotherBizOrderId",retailStoreOrderLineItem.bizOrder?retailStoreOrderLineItem.bizOrder.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{retailStoreOrderLineItem.skuId} -{retailStoreOrderLineItem.skuName} -{retailStoreOrderLineItem.amount} -{retailStoreOrderLineItem.quantity} -{retailStoreOrderLineItem.unitOfMeasurement} - - {buildTransferModal(retailStoreOrderLineItem,targetComponent)} - - ) - -} - - -const renderPermissionSetting = retailStoreOrderLineItem => { - const {RetailStoreOrderLineItemBase} = GlobalComponents - return - - -} - - -class RetailStoreOrderLineItemPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const retailStoreOrderLineItem = this.props.retailStoreOrderLineItem; - const { id,displayName, } = retailStoreOrderLineItem - - - - const cardsData = {cardsName:"双链小超订单行项目",cardsFor: "retailStoreOrderLineItem",cardsSource: retailStoreOrderLineItem, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - retailStoreOrderLineItem: state._retailStoreOrderLineItem, -}))(Form.create()(RetailStoreOrderLineItemPreference)) - diff --git a/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.preference.less b/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.profile.js b/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.profile.js index 147e14f74..5a8495057 100644 --- a/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.profile.js +++ b/bizui/src/bizcomponents/retailstoreorderlineitem/RetailStoreOrderLineItem.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreOrderLineItem.preference.less' +import styles from './RetailStoreOrderLineItem.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,20 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (retailStoreOrderLineItem,targetComponent) =>{ - const userContext = null - return ( - -{retailStoreOrderLineItem.id} -{retailStoreOrderLineItem.skuId} -{retailStoreOrderLineItem.skuName} -{retailStoreOrderLineItem.amount} -{retailStoreOrderLineItem.quantity} -{retailStoreOrderLineItem.unitOfMeasurement} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.RetailStoreOrderLineItemBase.renderItemOfList(item, targetComponents) + } @@ -67,13 +58,14 @@ class RetailStoreOrderLineItemProfile extends Component { const cardsData = {cardsName:"双链小超订单行项目",cardsFor: "retailStoreOrderLineItem",cardsSource: retailStoreOrderLineItem, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -83,7 +75,7 @@ class RetailStoreOrderLineItemProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.associateform.js b/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.associateform.js index f3baf090c..94edebc2d 100644 --- a/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.associateform.js +++ b/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.associateform.js @@ -20,7 +20,7 @@ const testValues = {}; const testValues = { name: '付款办法', cardNumber: '4111 1111 1111 - ', - bizOrderId: 'RSO000001', + bizOrderId: 'RSO00000001', } */ diff --git a/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.base.js b/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.base.js index 9a36fc2f3..b8b139031 100644 --- a/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.base.js +++ b/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -51,26 +52,26 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({retailStoreOrderPaymentGroup,targetComponent})=>{ +const renderItemOfList=(retailStoreOrderPaymentGroup,targetComponent)=>{ - const {RetailStoreOrderPaymentGroupService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {retailStoreOrderPaymentGroup.id} {retailStoreOrderPaymentGroup.name} {retailStoreOrderPaymentGroup.bizOrder==null?appLocaleName(userContext,"NotAssigned"):`${retailStoreOrderPaymentGroup.bizOrder.displayName}(${retailStoreOrderPaymentGroup.bizOrder.id})`} - - showTransferModel(targetComponent,"订单","retailStoreOrder",RetailStoreOrderPaymentGroupService.requestCandidateBizOrder, - RetailStoreOrderPaymentGroupService.transferToAnotherBizOrder,"anotherBizOrderId",retailStoreOrderPaymentGroup.bizOrder?retailStoreOrderPaymentGroup.bizOrder.id:"")} - style={{fontSize: 20,color:"red"}} /> {retailStoreOrderPaymentGroup.cardNumber} - {buildTransferModal(retailStoreOrderPaymentGroup,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.createform.js b/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.createform.js index d91ce33d8..56a5785c8 100644 --- a/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.createform.js +++ b/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.createform.js @@ -19,7 +19,7 @@ const testValues = {}; const testValues = { name: '付款办法', cardNumber: '4111 1111 1111 - ', - bizOrderId: 'RSO000001', + bizOrderId: 'RSO00000001', } */ diff --git a/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.dashboard.js b/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.dashboard.js index ec958e245..6392c1a51 100644 --- a/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.dashboard.js +++ b/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(retailStoreOrderPaymentGroup)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (retailStoreOrderPaymentGroup) =>defaultSettingListOf(retailStoreOrderPaymentGroup, optionList) const internalLargeTextOf = (retailStoreOrderPaymentGroup) =>{ @@ -144,6 +144,8 @@ class RetailStoreOrderPaymentGroupDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.permission.js b/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.permission.js index 761cd37d5..22c7a2b93 100644 --- a/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.permission.js +++ b/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreOrderPaymentGroup.preference.less' +import styles from './RetailStoreOrderPaymentGroup.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.preference.js b/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.preference.js deleted file mode 100644 index 21f5c4352..000000000 --- a/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.preference.js +++ /dev/null @@ -1,356 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreOrderPaymentGroup.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (retailStoreOrderPaymentGroup) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (retailStoreOrderPaymentGroup) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (retailStoreOrderPaymentGroup) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {RetailStoreOrderPaymentGroupService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = RetailStoreOrderPaymentGroupService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (retailStoreOrderPaymentGroup,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=retailStoreOrderPaymentGroup.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_retailStoreOrderPaymentGroup/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (retailStoreOrderPaymentGroup,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(retailStoreOrderPaymentGroup,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (retailStoreOrderPaymentGroup) =>{ - return null -} -const internalRenderExtraFooter = (retailStoreOrderPaymentGroup) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (retailStoreOrderPaymentGroup,targetComponent) =>{ - const userContext = null - return ( - -{retailStoreOrderPaymentGroup.id} -{retailStoreOrderPaymentGroup.name} -{retailStoreOrderPaymentGroup.bizOrder==null?appLocaleName(userContext,"NotAssigned"):retailStoreOrderPaymentGroup.bizOrder.displayName} - - showTransferModel(targetComponent,"订单","retailStoreOrder","requestCandidateBizOrder", - "transferToAnotherBizOrder","anotherBizOrderId",retailStoreOrderPaymentGroup.bizOrder?retailStoreOrderPaymentGroup.bizOrder.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{retailStoreOrderPaymentGroup.cardNumber} - - {buildTransferModal(retailStoreOrderPaymentGroup,targetComponent)} - - ) - -} - - -const renderPermissionSetting = retailStoreOrderPaymentGroup => { - const {RetailStoreOrderPaymentGroupBase} = GlobalComponents - return - - -} - - -class RetailStoreOrderPaymentGroupPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const retailStoreOrderPaymentGroup = this.props.retailStoreOrderPaymentGroup; - const { id,displayName, } = retailStoreOrderPaymentGroup - - - - const cardsData = {cardsName:"生超订单付款组",cardsFor: "retailStoreOrderPaymentGroup",cardsSource: retailStoreOrderPaymentGroup, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - retailStoreOrderPaymentGroup: state._retailStoreOrderPaymentGroup, -}))(Form.create()(RetailStoreOrderPaymentGroupPreference)) - diff --git a/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.preference.less b/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.profile.js b/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.profile.js index 1670b30e4..5e28738ab 100644 --- a/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.profile.js +++ b/bizui/src/bizcomponents/retailstoreorderpaymentgroup/RetailStoreOrderPaymentGroup.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreOrderPaymentGroup.preference.less' +import styles from './RetailStoreOrderPaymentGroup.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,17 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (retailStoreOrderPaymentGroup,targetComponent) =>{ - const userContext = null - return ( - -{retailStoreOrderPaymentGroup.id} -{retailStoreOrderPaymentGroup.name} -{retailStoreOrderPaymentGroup.cardNumber} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.RetailStoreOrderPaymentGroupBase.renderItemOfList(item, targetComponents) + } @@ -64,13 +58,14 @@ class RetailStoreOrderPaymentGroupProfile extends Component { const cardsData = {cardsName:"生超订单付款组",cardsFor: "retailStoreOrderPaymentGroup",cardsSource: retailStoreOrderPaymentGroup, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -80,7 +75,7 @@ class RetailStoreOrderPaymentGroupProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.associateform.js b/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.associateform.js index e9428dc39..31c9abf48 100644 --- a/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.associateform.js +++ b/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { who: '处理者', - processTime: '2018-09-01', + processTime: '2018-05-09', } */ diff --git a/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.base.js b/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.base.js index ce828b815..2eb4b89a5 100644 --- a/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.base.js +++ b/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -50,20 +51,24 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({retailStoreOrderPicking,targetComponent})=>{ +const renderItemOfList=(retailStoreOrderPicking,targetComponent)=>{ - const {RetailStoreOrderPickingService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {retailStoreOrderPicking.id} {retailStoreOrderPicking.who} { moment(retailStoreOrderPicking.processTime).format('YYYY-MM-DD')} - {buildTransferModal(retailStoreOrderPicking,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.createform.js b/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.createform.js index ddcaa4c95..58ca6ce7f 100644 --- a/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.createform.js +++ b/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { who: '处理者', - processTime: '2016-07-27', + processTime: '2018-09-15', } */ diff --git a/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.dashboard.js b/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.dashboard.js index 211591f42..9bb8f4229 100644 --- a/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.dashboard.js +++ b/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(retailStoreOrderPicking)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (retailStoreOrderPicking) =>defaultSettingListOf(retailStoreOrderPicking, optionList) const internalLargeTextOf = (retailStoreOrderPicking) =>{ @@ -124,7 +124,7 @@ class RetailStoreOrderPickingDashboard extends Component { const cardsData = {cardsName:"生超订单拣货",cardsFor: "retailStoreOrderPicking", cardsSource: this.props.retailStoreOrderPicking,returnURL,displayName, subItems: [ -{name: 'retailStoreOrderList', displayName:'生超的订单',type:'retailStoreOrder',count:retailStoreOrderCount,addFunction: true, role: 'retailStoreOrder', metaInfo: retailStoreOrderListMetaInfo}, +{name: 'retailStoreOrderList', displayName:'生超的订单',type:'retailStoreOrder',count:retailStoreOrderCount,addFunction: true, role: 'retailStoreOrder', metaInfo: retailStoreOrderListMetaInfo, renderItem: GlobalComponents.RetailStoreOrderBase.renderItemOfList}, ], }; @@ -139,6 +139,8 @@ class RetailStoreOrderPickingDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.permission.js b/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.permission.js index 1e20f9df8..aa551abd3 100644 --- a/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.permission.js +++ b/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreOrderPicking.preference.less' +import styles from './RetailStoreOrderPicking.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.preference.js b/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.preference.js deleted file mode 100644 index 6ae6eb56c..000000000 --- a/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.preference.js +++ /dev/null @@ -1,350 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreOrderPicking.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (retailStoreOrderPicking) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (retailStoreOrderPicking) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (retailStoreOrderPicking) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {RetailStoreOrderPickingService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = RetailStoreOrderPickingService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (retailStoreOrderPicking,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=retailStoreOrderPicking.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_retailStoreOrderPicking/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (retailStoreOrderPicking,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(retailStoreOrderPicking,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (retailStoreOrderPicking) =>{ - return null -} -const internalRenderExtraFooter = (retailStoreOrderPicking) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (retailStoreOrderPicking,targetComponent) =>{ - const userContext = null - return ( - -{retailStoreOrderPicking.id} -{retailStoreOrderPicking.who} -{ moment(retailStoreOrderPicking.processTime).format('YYYY-MM-DD')} - - {buildTransferModal(retailStoreOrderPicking,targetComponent)} - - ) - -} - - -const renderPermissionSetting = retailStoreOrderPicking => { - const {RetailStoreOrderPickingBase} = GlobalComponents - return - - -} - - -class RetailStoreOrderPickingPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const retailStoreOrderPicking = this.props.retailStoreOrderPicking; - const { id,displayName, retailStoreOrderCount } = retailStoreOrderPicking - - - - const cardsData = {cardsName:"生超订单拣货",cardsFor: "retailStoreOrderPicking",cardsSource: retailStoreOrderPicking, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - retailStoreOrderPicking: state._retailStoreOrderPicking, -}))(Form.create()(RetailStoreOrderPickingPreference)) - diff --git a/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.preference.less b/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.profile.js b/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.profile.js index ce583aa01..2e410038e 100644 --- a/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.profile.js +++ b/bizui/src/bizcomponents/retailstoreorderpicking/RetailStoreOrderPicking.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreOrderPicking.preference.less' +import styles from './RetailStoreOrderPicking.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,17 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (retailStoreOrderPicking,targetComponent) =>{ - const userContext = null - return ( - -{retailStoreOrderPicking.id} -{retailStoreOrderPicking.who} -{ moment(retailStoreOrderPicking.processTime).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.RetailStoreOrderPickingBase.renderItemOfList(item, targetComponents) + } @@ -64,13 +58,14 @@ class RetailStoreOrderPickingProfile extends Component { const cardsData = {cardsName:"生超订单拣货",cardsFor: "retailStoreOrderPicking",cardsSource: retailStoreOrderPicking, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -80,7 +75,7 @@ class RetailStoreOrderPickingProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.associateform.js b/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.associateform.js index d119784b6..c403a1e8f 100644 --- a/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.associateform.js +++ b/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { who: '处理者', - processTime: '2018-08-28', + processTime: '2017-07-09', } */ diff --git a/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.base.js b/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.base.js index a862cbd2b..1006070b0 100644 --- a/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.base.js +++ b/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -50,20 +51,24 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({retailStoreOrderProcessing,targetComponent})=>{ +const renderItemOfList=(retailStoreOrderProcessing,targetComponent)=>{ - const {RetailStoreOrderProcessingService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {retailStoreOrderProcessing.id} {retailStoreOrderProcessing.who} { moment(retailStoreOrderProcessing.processTime).format('YYYY-MM-DD')} - {buildTransferModal(retailStoreOrderProcessing,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.createform.js b/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.createform.js index af3298cbb..0f7da3578 100644 --- a/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.createform.js +++ b/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { who: '处理者', - processTime: '2018-03-26', + processTime: '2017-04-07', } */ diff --git a/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.dashboard.js b/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.dashboard.js index d5a7afd83..447b5429c 100644 --- a/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.dashboard.js +++ b/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(retailStoreOrderProcessing)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (retailStoreOrderProcessing) =>defaultSettingListOf(retailStoreOrderProcessing, optionList) const internalLargeTextOf = (retailStoreOrderProcessing) =>{ @@ -124,7 +124,7 @@ class RetailStoreOrderProcessingDashboard extends Component { const cardsData = {cardsName:"生超订单处理",cardsFor: "retailStoreOrderProcessing", cardsSource: this.props.retailStoreOrderProcessing,returnURL,displayName, subItems: [ -{name: 'retailStoreOrderList', displayName:'生超的订单',type:'retailStoreOrder',count:retailStoreOrderCount,addFunction: true, role: 'retailStoreOrder', metaInfo: retailStoreOrderListMetaInfo}, +{name: 'retailStoreOrderList', displayName:'生超的订单',type:'retailStoreOrder',count:retailStoreOrderCount,addFunction: true, role: 'retailStoreOrder', metaInfo: retailStoreOrderListMetaInfo, renderItem: GlobalComponents.RetailStoreOrderBase.renderItemOfList}, ], }; @@ -139,6 +139,8 @@ class RetailStoreOrderProcessingDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.permission.js b/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.permission.js index 9c89344f3..b4275dc58 100644 --- a/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.permission.js +++ b/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreOrderProcessing.preference.less' +import styles from './RetailStoreOrderProcessing.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.preference.js b/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.preference.js deleted file mode 100644 index 882aa0173..000000000 --- a/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.preference.js +++ /dev/null @@ -1,350 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreOrderProcessing.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (retailStoreOrderProcessing) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (retailStoreOrderProcessing) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (retailStoreOrderProcessing) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {RetailStoreOrderProcessingService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = RetailStoreOrderProcessingService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (retailStoreOrderProcessing,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=retailStoreOrderProcessing.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_retailStoreOrderProcessing/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (retailStoreOrderProcessing,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(retailStoreOrderProcessing,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (retailStoreOrderProcessing) =>{ - return null -} -const internalRenderExtraFooter = (retailStoreOrderProcessing) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (retailStoreOrderProcessing,targetComponent) =>{ - const userContext = null - return ( - -{retailStoreOrderProcessing.id} -{retailStoreOrderProcessing.who} -{ moment(retailStoreOrderProcessing.processTime).format('YYYY-MM-DD')} - - {buildTransferModal(retailStoreOrderProcessing,targetComponent)} - - ) - -} - - -const renderPermissionSetting = retailStoreOrderProcessing => { - const {RetailStoreOrderProcessingBase} = GlobalComponents - return - - -} - - -class RetailStoreOrderProcessingPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const retailStoreOrderProcessing = this.props.retailStoreOrderProcessing; - const { id,displayName, retailStoreOrderCount } = retailStoreOrderProcessing - - - - const cardsData = {cardsName:"生超订单处理",cardsFor: "retailStoreOrderProcessing",cardsSource: retailStoreOrderProcessing, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - retailStoreOrderProcessing: state._retailStoreOrderProcessing, -}))(Form.create()(RetailStoreOrderProcessingPreference)) - diff --git a/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.preference.less b/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.profile.js b/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.profile.js index b165eed79..1dc4e664b 100644 --- a/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.profile.js +++ b/bizui/src/bizcomponents/retailstoreorderprocessing/RetailStoreOrderProcessing.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreOrderProcessing.preference.less' +import styles from './RetailStoreOrderProcessing.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,17 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (retailStoreOrderProcessing,targetComponent) =>{ - const userContext = null - return ( - -{retailStoreOrderProcessing.id} -{retailStoreOrderProcessing.who} -{ moment(retailStoreOrderProcessing.processTime).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.RetailStoreOrderProcessingBase.renderItemOfList(item, targetComponents) + } @@ -64,13 +58,14 @@ class RetailStoreOrderProcessingProfile extends Component { const cardsData = {cardsName:"生超订单处理",cardsFor: "retailStoreOrderProcessing",cardsSource: retailStoreOrderProcessing, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -80,7 +75,7 @@ class RetailStoreOrderProcessingProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.associateform.js b/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.associateform.js index 879c127df..95e0c117b 100644 --- a/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.associateform.js +++ b/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { who: '运货者', - shipTime: '2018-11-12', + shipTime: '2018-07-07', } */ diff --git a/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.base.js b/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.base.js index f36f71943..de8b7275d 100644 --- a/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.base.js +++ b/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -50,20 +51,24 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({retailStoreOrderShipment,targetComponent})=>{ +const renderItemOfList=(retailStoreOrderShipment,targetComponent)=>{ - const {RetailStoreOrderShipmentService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {retailStoreOrderShipment.id} {retailStoreOrderShipment.who} { moment(retailStoreOrderShipment.shipTime).format('YYYY-MM-DD')} - {buildTransferModal(retailStoreOrderShipment,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.createform.js b/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.createform.js index d58728c84..85e24bac4 100644 --- a/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.createform.js +++ b/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { who: '运货者', - shipTime: '2016-12-23', + shipTime: '2017-08-19', } */ diff --git a/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.dashboard.js b/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.dashboard.js index d03eea1bb..d80505824 100644 --- a/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.dashboard.js +++ b/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(retailStoreOrderShipment)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (retailStoreOrderShipment) =>defaultSettingListOf(retailStoreOrderShipment, optionList) const internalLargeTextOf = (retailStoreOrderShipment) =>{ @@ -124,7 +124,7 @@ class RetailStoreOrderShipmentDashboard extends Component { const cardsData = {cardsName:"生超订单出货",cardsFor: "retailStoreOrderShipment", cardsSource: this.props.retailStoreOrderShipment,returnURL,displayName, subItems: [ -{name: 'retailStoreOrderList', displayName:'生超的订单',type:'retailStoreOrder',count:retailStoreOrderCount,addFunction: true, role: 'retailStoreOrder', metaInfo: retailStoreOrderListMetaInfo}, +{name: 'retailStoreOrderList', displayName:'生超的订单',type:'retailStoreOrder',count:retailStoreOrderCount,addFunction: true, role: 'retailStoreOrder', metaInfo: retailStoreOrderListMetaInfo, renderItem: GlobalComponents.RetailStoreOrderBase.renderItemOfList}, ], }; @@ -139,6 +139,8 @@ class RetailStoreOrderShipmentDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.permission.js b/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.permission.js index 0d50477b9..3164a4625 100644 --- a/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.permission.js +++ b/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreOrderShipment.preference.less' +import styles from './RetailStoreOrderShipment.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.preference.js b/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.preference.js deleted file mode 100644 index f25b7842a..000000000 --- a/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.preference.js +++ /dev/null @@ -1,350 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreOrderShipment.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (retailStoreOrderShipment) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (retailStoreOrderShipment) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (retailStoreOrderShipment) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {RetailStoreOrderShipmentService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = RetailStoreOrderShipmentService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (retailStoreOrderShipment,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=retailStoreOrderShipment.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_retailStoreOrderShipment/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (retailStoreOrderShipment,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(retailStoreOrderShipment,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (retailStoreOrderShipment) =>{ - return null -} -const internalRenderExtraFooter = (retailStoreOrderShipment) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (retailStoreOrderShipment,targetComponent) =>{ - const userContext = null - return ( - -{retailStoreOrderShipment.id} -{retailStoreOrderShipment.who} -{ moment(retailStoreOrderShipment.shipTime).format('YYYY-MM-DD')} - - {buildTransferModal(retailStoreOrderShipment,targetComponent)} - - ) - -} - - -const renderPermissionSetting = retailStoreOrderShipment => { - const {RetailStoreOrderShipmentBase} = GlobalComponents - return - - -} - - -class RetailStoreOrderShipmentPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const retailStoreOrderShipment = this.props.retailStoreOrderShipment; - const { id,displayName, retailStoreOrderCount } = retailStoreOrderShipment - - - - const cardsData = {cardsName:"生超订单出货",cardsFor: "retailStoreOrderShipment",cardsSource: retailStoreOrderShipment, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - retailStoreOrderShipment: state._retailStoreOrderShipment, -}))(Form.create()(RetailStoreOrderShipmentPreference)) - diff --git a/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.preference.less b/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.profile.js b/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.profile.js index 5e2647a0f..50ad8e5db 100644 --- a/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.profile.js +++ b/bizui/src/bizcomponents/retailstoreordershipment/RetailStoreOrderShipment.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreOrderShipment.preference.less' +import styles from './RetailStoreOrderShipment.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,17 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (retailStoreOrderShipment,targetComponent) =>{ - const userContext = null - return ( - -{retailStoreOrderShipment.id} -{retailStoreOrderShipment.who} -{ moment(retailStoreOrderShipment.shipTime).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.RetailStoreOrderShipmentBase.renderItemOfList(item, targetComponents) + } @@ -64,13 +58,14 @@ class RetailStoreOrderShipmentProfile extends Component { const cardsData = {cardsName:"生超订单出货",cardsFor: "retailStoreOrderShipment",cardsSource: retailStoreOrderShipment, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -80,7 +75,7 @@ class RetailStoreOrderShipmentProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.associateform.js b/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.associateform.js index 41a5e3d76..fc1ee47dd 100644 --- a/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.associateform.js +++ b/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.associateform.js @@ -19,8 +19,8 @@ const testValues = {}; /* const testValues = { name: '送货到双链中和社区店', - amount: '4.42', - bizOrderId: 'RSO000001', + amount: '5.04', + bizOrderId: 'RSO00000001', } */ diff --git a/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.base.js b/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.base.js index de7b89b47..083341127 100644 --- a/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.base.js +++ b/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -51,26 +52,26 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({retailStoreOrderShippingGroup,targetComponent})=>{ +const renderItemOfList=(retailStoreOrderShippingGroup,targetComponent)=>{ - const {RetailStoreOrderShippingGroupService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {retailStoreOrderShippingGroup.id} {retailStoreOrderShippingGroup.name} {retailStoreOrderShippingGroup.bizOrder==null?appLocaleName(userContext,"NotAssigned"):`${retailStoreOrderShippingGroup.bizOrder.displayName}(${retailStoreOrderShippingGroup.bizOrder.id})`} - - showTransferModel(targetComponent,"订单","retailStoreOrder",RetailStoreOrderShippingGroupService.requestCandidateBizOrder, - RetailStoreOrderShippingGroupService.transferToAnotherBizOrder,"anotherBizOrderId",retailStoreOrderShippingGroup.bizOrder?retailStoreOrderShippingGroup.bizOrder.id:"")} - style={{fontSize: 20,color:"red"}} /> {retailStoreOrderShippingGroup.amount} - {buildTransferModal(retailStoreOrderShippingGroup,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.createform.js b/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.createform.js index a7fb9384e..7d1d51723 100644 --- a/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.createform.js +++ b/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.createform.js @@ -18,8 +18,8 @@ const testValues = {}; /* const testValues = { name: '送货到双链中和社区店', - amount: '5.84', - bizOrderId: 'RSO000001', + amount: '4.81', + bizOrderId: 'RSO00000001', } */ diff --git a/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.dashboard.js b/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.dashboard.js index d01dbe827..a6f502361 100644 --- a/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.dashboard.js +++ b/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(retailStoreOrderShippingGroup)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (retailStoreOrderShippingGroup) =>defaultSettingListOf(retailStoreOrderShippingGroup, optionList) const internalLargeTextOf = (retailStoreOrderShippingGroup) =>{ @@ -144,6 +144,8 @@ class RetailStoreOrderShippingGroupDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.permission.js b/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.permission.js index b80fa854b..7c9e09056 100644 --- a/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.permission.js +++ b/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreOrderShippingGroup.preference.less' +import styles from './RetailStoreOrderShippingGroup.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.preference.js b/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.preference.js deleted file mode 100644 index 9edc3b2e0..000000000 --- a/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.preference.js +++ /dev/null @@ -1,356 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreOrderShippingGroup.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (retailStoreOrderShippingGroup) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (retailStoreOrderShippingGroup) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (retailStoreOrderShippingGroup) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {RetailStoreOrderShippingGroupService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = RetailStoreOrderShippingGroupService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (retailStoreOrderShippingGroup,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=retailStoreOrderShippingGroup.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_retailStoreOrderShippingGroup/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (retailStoreOrderShippingGroup,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(retailStoreOrderShippingGroup,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (retailStoreOrderShippingGroup) =>{ - return null -} -const internalRenderExtraFooter = (retailStoreOrderShippingGroup) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (retailStoreOrderShippingGroup,targetComponent) =>{ - const userContext = null - return ( - -{retailStoreOrderShippingGroup.id} -{retailStoreOrderShippingGroup.name} -{retailStoreOrderShippingGroup.bizOrder==null?appLocaleName(userContext,"NotAssigned"):retailStoreOrderShippingGroup.bizOrder.displayName} - - showTransferModel(targetComponent,"订单","retailStoreOrder","requestCandidateBizOrder", - "transferToAnotherBizOrder","anotherBizOrderId",retailStoreOrderShippingGroup.bizOrder?retailStoreOrderShippingGroup.bizOrder.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{retailStoreOrderShippingGroup.amount} - - {buildTransferModal(retailStoreOrderShippingGroup,targetComponent)} - - ) - -} - - -const renderPermissionSetting = retailStoreOrderShippingGroup => { - const {RetailStoreOrderShippingGroupBase} = GlobalComponents - return - - -} - - -class RetailStoreOrderShippingGroupPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const retailStoreOrderShippingGroup = this.props.retailStoreOrderShippingGroup; - const { id,displayName, } = retailStoreOrderShippingGroup - - - - const cardsData = {cardsName:"生超订单送货分组",cardsFor: "retailStoreOrderShippingGroup",cardsSource: retailStoreOrderShippingGroup, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - retailStoreOrderShippingGroup: state._retailStoreOrderShippingGroup, -}))(Form.create()(RetailStoreOrderShippingGroupPreference)) - diff --git a/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.preference.less b/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.profile.js b/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.profile.js index 59065d58f..312968186 100644 --- a/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.profile.js +++ b/bizui/src/bizcomponents/retailstoreordershippinggroup/RetailStoreOrderShippingGroup.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreOrderShippingGroup.preference.less' +import styles from './RetailStoreOrderShippingGroup.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,17 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (retailStoreOrderShippingGroup,targetComponent) =>{ - const userContext = null - return ( - -{retailStoreOrderShippingGroup.id} -{retailStoreOrderShippingGroup.name} -{retailStoreOrderShippingGroup.amount} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.RetailStoreOrderShippingGroupBase.renderItemOfList(item, targetComponents) + } @@ -64,13 +58,14 @@ class RetailStoreOrderShippingGroupProfile extends Component { const cardsData = {cardsName:"生超订单送货分组",cardsFor: "retailStoreOrderShippingGroup",cardsSource: retailStoreOrderShippingGroup, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -80,7 +75,7 @@ class RetailStoreOrderShippingGroupProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.associateform.js b/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.associateform.js index 2c8f057bf..d647d7b51 100644 --- a/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.associateform.js +++ b/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.associateform.js @@ -19,8 +19,8 @@ const testValues = {}; /* const testValues = { name: '双链小超四川省运营中心', - founded: '2016-12-26', - countryId: 'RSCC000001', + founded: '2018-12-06', + countryId: 'RSCC00000001', } */ diff --git a/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.base.js b/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.base.js index db01a0027..49e1af76d 100644 --- a/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.base.js +++ b/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -55,21 +56,25 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({retailStoreProvinceCenter,targetComponent})=>{ +const renderItemOfList=(retailStoreProvinceCenter,targetComponent)=>{ - const {RetailStoreProvinceCenterService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {retailStoreProvinceCenter.id} {retailStoreProvinceCenter.name} { moment(retailStoreProvinceCenter.founded).format('YYYY-MM-DD')} { moment(retailStoreProvinceCenter.lastUpdateTime).format('YYYY-MM-DD')} - {buildTransferModal(retailStoreProvinceCenter,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.createform.js b/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.createform.js index 4ec46ee44..a31ae61b9 100644 --- a/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.createform.js +++ b/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.createform.js @@ -18,8 +18,8 @@ const testValues = {}; /* const testValues = { name: '双链小超四川省运营中心', - founded: '2017-02-02', - countryId: 'RSCC000001', + founded: '2016-07-05', + countryId: 'RSCC00000001', } */ diff --git a/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.dashboard.js b/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.dashboard.js index 58a2fb17c..733158007 100644 --- a/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.dashboard.js +++ b/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(retailStoreProvinceCenter)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (retailStoreProvinceCenter) =>defaultSettingListOf(retailStoreProvinceCenter, optionList) const internalLargeTextOf = (retailStoreProvinceCenter) =>{ @@ -125,8 +125,8 @@ class RetailStoreProvinceCenterDashboard extends Component { const cardsData = {cardsName:"双链小超省中心",cardsFor: "retailStoreProvinceCenter", cardsSource: this.props.retailStoreProvinceCenter,returnURL,displayName, subItems: [ -{name: 'provinceCenterEmployeeList', displayName:'省中心员工',type:'provinceCenterEmployee',count:provinceCenterEmployeeCount,addFunction: true, role: 'provinceCenterEmployee', metaInfo: provinceCenterEmployeeListMetaInfo}, -{name: 'retailStoreCityServiceCenterList', displayName:'双链小超城市服务中心',type:'retailStoreCityServiceCenter',count:retailStoreCityServiceCenterCount,addFunction: true, role: 'retailStoreCityServiceCenter', metaInfo: retailStoreCityServiceCenterListMetaInfo}, +{name: 'provinceCenterEmployeeList', displayName:'省中心员工',type:'provinceCenterEmployee',count:provinceCenterEmployeeCount,addFunction: true, role: 'provinceCenterEmployee', metaInfo: provinceCenterEmployeeListMetaInfo, renderItem: GlobalComponents.ProvinceCenterEmployeeBase.renderItemOfList}, +{name: 'retailStoreCityServiceCenterList', displayName:'双链小超城市服务中心',type:'retailStoreCityServiceCenter',count:retailStoreCityServiceCenterCount,addFunction: true, role: 'retailStoreCityServiceCenter', metaInfo: retailStoreCityServiceCenterListMetaInfo, renderItem: GlobalComponents.RetailStoreCityServiceCenterBase.renderItemOfList}, ], }; @@ -141,6 +141,8 @@ class RetailStoreProvinceCenterDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.permission.js b/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.permission.js index e36d00481..4c8d853f0 100644 --- a/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.permission.js +++ b/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreProvinceCenter.preference.less' +import styles from './RetailStoreProvinceCenter.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.preference.js b/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.preference.js deleted file mode 100644 index 65b292529..000000000 --- a/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.preference.js +++ /dev/null @@ -1,352 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreProvinceCenter.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (retailStoreProvinceCenter) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (retailStoreProvinceCenter) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (retailStoreProvinceCenter) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {RetailStoreProvinceCenterService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = RetailStoreProvinceCenterService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (retailStoreProvinceCenter,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=retailStoreProvinceCenter.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_retailStoreProvinceCenter/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (retailStoreProvinceCenter,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(retailStoreProvinceCenter,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (retailStoreProvinceCenter) =>{ - return null -} -const internalRenderExtraFooter = (retailStoreProvinceCenter) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (retailStoreProvinceCenter,targetComponent) =>{ - const userContext = null - return ( - -{retailStoreProvinceCenter.id} -{retailStoreProvinceCenter.name} -{ moment(retailStoreProvinceCenter.founded).format('YYYY-MM-DD')} -{ moment(retailStoreProvinceCenter.lastUpdateTime).format('YYYY-MM-DD')} - - {buildTransferModal(retailStoreProvinceCenter,targetComponent)} - - ) - -} - - -const renderPermissionSetting = retailStoreProvinceCenter => { - const {RetailStoreProvinceCenterBase} = GlobalComponents - return - - -} - - -class RetailStoreProvinceCenterPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const retailStoreProvinceCenter = this.props.retailStoreProvinceCenter; - const { id,displayName, provinceCenterDepartmentCount, provinceCenterEmployeeCount, retailStoreCityServiceCenterCount } = retailStoreProvinceCenter - - - - const cardsData = {cardsName:"双链小超省中心",cardsFor: "retailStoreProvinceCenter",cardsSource: retailStoreProvinceCenter, - subItems: [ -{name: 'provinceCenterDepartmentList', displayName:'省中心',type:'provinceCenterDepartment',count:provinceCenterDepartmentCount,addFunction: true, role: 'provinceCenterDepartment', data: retailStoreProvinceCenter.provinceCenterDepartmentList}, - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - retailStoreProvinceCenter: state._retailStoreProvinceCenter, -}))(Form.create()(RetailStoreProvinceCenterPreference)) - diff --git a/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.preference.less b/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.profile.js b/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.profile.js index 4a1b37cf4..1fa81bdd1 100644 --- a/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.profile.js +++ b/bizui/src/bizcomponents/retailstoreprovincecenter/RetailStoreProvinceCenter.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './RetailStoreProvinceCenter.preference.less' +import styles from './RetailStoreProvinceCenter.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,18 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (retailStoreProvinceCenter,targetComponent) =>{ - const userContext = null - return ( - -{retailStoreProvinceCenter.id} -{retailStoreProvinceCenter.name} -{ moment(retailStoreProvinceCenter.founded).format('YYYY-MM-DD')} -{ moment(retailStoreProvinceCenter.lastUpdateTime).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.RetailStoreProvinceCenterBase.renderItemOfList(item, targetComponents) + } @@ -65,14 +58,15 @@ class RetailStoreProvinceCenterProfile extends Component { const cardsData = {cardsName:"双链小超省中心",cardsFor: "retailStoreProvinceCenter",cardsSource: retailStoreProvinceCenter, subItems: [ -{name: 'provinceCenterDepartmentList', displayName:'省中心',type:'provinceCenterDepartment',count:provinceCenterDepartmentCount,addFunction: true, role: 'provinceCenterDepartment', data: retailStoreProvinceCenter.provinceCenterDepartmentList}, - +{name: 'provinceCenterDepartmentList', displayName:'省中心',type:'provinceCenterDepartment',count:provinceCenterDepartmentCount,addFunction: true, role: 'provinceCenterDepartment', renderItem: GlobalComponents.ProvinceCenterDepartmentBase.renderItemOfList}, + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -82,7 +76,7 @@ class RetailStoreProvinceCenterProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/salarygrade/SalaryGrade.associateform.js b/bizui/src/bizcomponents/salarygrade/SalaryGrade.associateform.js index 16bf0fadf..242f4eaf7 100644 --- a/bizui/src/bizcomponents/salarygrade/SalaryGrade.associateform.js +++ b/bizui/src/bizcomponents/salarygrade/SalaryGrade.associateform.js @@ -21,7 +21,7 @@ const testValues = { code: 'SG0000', name: '一级薪资', detailDescription: '故事还得从遥远的古代开始.................................................', - companyId: 'RSCC000001', + companyId: 'RSCC00000001', } */ diff --git a/bizui/src/bizcomponents/salarygrade/SalaryGrade.base.js b/bizui/src/bizcomponents/salarygrade/SalaryGrade.base.js index 6af18051d..a36db81f0 100644 --- a/bizui/src/bizcomponents/salarygrade/SalaryGrade.base.js +++ b/bizui/src/bizcomponents/salarygrade/SalaryGrade.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -55,21 +56,25 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({salaryGrade,targetComponent})=>{ +const renderItemOfList=(salaryGrade,targetComponent)=>{ - const {SalaryGradeService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {salaryGrade.id} {salaryGrade.code} {salaryGrade.name} {salaryGrade.detailDescription} - {buildTransferModal(salaryGrade,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/salarygrade/SalaryGrade.createform.js b/bizui/src/bizcomponents/salarygrade/SalaryGrade.createform.js index b1c5f54a8..9674212f1 100644 --- a/bizui/src/bizcomponents/salarygrade/SalaryGrade.createform.js +++ b/bizui/src/bizcomponents/salarygrade/SalaryGrade.createform.js @@ -20,7 +20,7 @@ const testValues = { code: 'SG0000', name: '一级薪资', detailDescription: '故事还得从遥远的古代开始.................................................', - companyId: 'RSCC000001', + companyId: 'RSCC00000001', } */ diff --git a/bizui/src/bizcomponents/salarygrade/SalaryGrade.dashboard.js b/bizui/src/bizcomponents/salarygrade/SalaryGrade.dashboard.js index b69853d40..76f639bb2 100644 --- a/bizui/src/bizcomponents/salarygrade/SalaryGrade.dashboard.js +++ b/bizui/src/bizcomponents/salarygrade/SalaryGrade.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(salaryGrade)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (salaryGrade) =>defaultSettingListOf(salaryGrade, optionList) const internalLargeTextOf = (salaryGrade) =>{ @@ -125,8 +125,8 @@ class SalaryGradeDashboard extends Component { const cardsData = {cardsName:"工资等级",cardsFor: "salaryGrade", cardsSource: this.props.salaryGrade,returnURL,displayName, subItems: [ -{name: 'employeeList', displayName:'员工',type:'employee',count:employeeCount,addFunction: true, role: 'employee', metaInfo: employeeListMetaInfo}, -{name: 'employeeSalarySheetList', displayName:'工资单',type:'employeeSalarySheet',count:employeeSalarySheetCount,addFunction: true, role: 'employeeSalarySheet', metaInfo: employeeSalarySheetListMetaInfo}, +{name: 'employeeList', displayName:'员工',type:'employee',count:employeeCount,addFunction: true, role: 'employee', metaInfo: employeeListMetaInfo, renderItem: GlobalComponents.EmployeeBase.renderItemOfList}, +{name: 'employeeSalarySheetList', displayName:'工资单',type:'employeeSalarySheet',count:employeeSalarySheetCount,addFunction: true, role: 'employeeSalarySheet', metaInfo: employeeSalarySheetListMetaInfo, renderItem: GlobalComponents.EmployeeSalarySheetBase.renderItemOfList}, ], }; @@ -141,6 +141,8 @@ class SalaryGradeDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/salarygrade/SalaryGrade.permission.js b/bizui/src/bizcomponents/salarygrade/SalaryGrade.permission.js index 2ef00d21a..ea0753a5e 100644 --- a/bizui/src/bizcomponents/salarygrade/SalaryGrade.permission.js +++ b/bizui/src/bizcomponents/salarygrade/SalaryGrade.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './SalaryGrade.preference.less' +import styles from './SalaryGrade.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/salarygrade/SalaryGrade.preference.js b/bizui/src/bizcomponents/salarygrade/SalaryGrade.preference.js deleted file mode 100644 index 05951b4d9..000000000 --- a/bizui/src/bizcomponents/salarygrade/SalaryGrade.preference.js +++ /dev/null @@ -1,351 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './SalaryGrade.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (salaryGrade) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (salaryGrade) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (salaryGrade) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {SalaryGradeService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = SalaryGradeService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (salaryGrade,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=salaryGrade.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_salaryGrade/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (salaryGrade,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(salaryGrade,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (salaryGrade) =>{ - return null -} -const internalRenderExtraFooter = (salaryGrade) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (salaryGrade,targetComponent) =>{ - const userContext = null - return ( - -{salaryGrade.id} -{salaryGrade.code} -{salaryGrade.name} -{salaryGrade.detailDescription} - - {buildTransferModal(salaryGrade,targetComponent)} - - ) - -} - - -const renderPermissionSetting = salaryGrade => { - const {SalaryGradeBase} = GlobalComponents - return - - -} - - -class SalaryGradePreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const salaryGrade = this.props.salaryGrade; - const { id,displayName, employeeCount, employeeSalarySheetCount } = salaryGrade - - - - const cardsData = {cardsName:"工资等级",cardsFor: "salaryGrade",cardsSource: salaryGrade, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - salaryGrade: state._salaryGrade, -}))(Form.create()(SalaryGradePreference)) - diff --git a/bizui/src/bizcomponents/salarygrade/SalaryGrade.preference.less b/bizui/src/bizcomponents/salarygrade/SalaryGrade.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/salarygrade/SalaryGrade.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/salarygrade/SalaryGrade.profile.js b/bizui/src/bizcomponents/salarygrade/SalaryGrade.profile.js index 9c4cfb35f..9765334c2 100644 --- a/bizui/src/bizcomponents/salarygrade/SalaryGrade.profile.js +++ b/bizui/src/bizcomponents/salarygrade/SalaryGrade.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './SalaryGrade.preference.less' +import styles from './SalaryGrade.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,18 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (salaryGrade,targetComponent) =>{ - const userContext = null - return ( - -{salaryGrade.id} -{salaryGrade.code} -{salaryGrade.name} -{salaryGrade.detailDescription} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.SalaryGradeBase.renderItemOfList(item, targetComponents) + } @@ -65,13 +58,14 @@ class SalaryGradeProfile extends Component { const cardsData = {cardsName:"工资等级",cardsFor: "salaryGrade",cardsSource: salaryGrade, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -81,7 +75,7 @@ class SalaryGradeProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/scoring/Scoring.associateform.js b/bizui/src/bizcomponents/scoring/Scoring.associateform.js index 43bd1c836..fcf99088c 100644 --- a/bizui/src/bizcomponents/scoring/Scoring.associateform.js +++ b/bizui/src/bizcomponents/scoring/Scoring.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { scoredBy: '王志文', - score: '75', + score: '80', comment: '这个题做的真不错啊', } */ diff --git a/bizui/src/bizcomponents/scoring/Scoring.base.js b/bizui/src/bizcomponents/scoring/Scoring.base.js index c26e50314..02ffb4dbf 100644 --- a/bizui/src/bizcomponents/scoring/Scoring.base.js +++ b/bizui/src/bizcomponents/scoring/Scoring.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -52,21 +53,25 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({scoring,targetComponent})=>{ +const renderItemOfList=(scoring,targetComponent)=>{ - const {ScoringService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {scoring.id} {scoring.scoredBy} {scoring.score} {scoring.comment} - {buildTransferModal(scoring,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/scoring/Scoring.createform.js b/bizui/src/bizcomponents/scoring/Scoring.createform.js index 110e5fce9..2559181e6 100644 --- a/bizui/src/bizcomponents/scoring/Scoring.createform.js +++ b/bizui/src/bizcomponents/scoring/Scoring.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { scoredBy: '王志文', - score: '100', + score: '95', comment: '这个题做的真不错啊', } */ diff --git a/bizui/src/bizcomponents/scoring/Scoring.dashboard.js b/bizui/src/bizcomponents/scoring/Scoring.dashboard.js index c7886d78d..e2906eea9 100644 --- a/bizui/src/bizcomponents/scoring/Scoring.dashboard.js +++ b/bizui/src/bizcomponents/scoring/Scoring.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(scoring)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (scoring) =>defaultSettingListOf(scoring, optionList) const internalLargeTextOf = (scoring) =>{ @@ -125,7 +125,7 @@ class ScoringDashboard extends Component { const cardsData = {cardsName:"评分",cardsFor: "scoring", cardsSource: this.props.scoring,returnURL,displayName, subItems: [ -{name: 'employeeCompanyTrainingList', displayName:'员工参与的公司培训',type:'employeeCompanyTraining',count:employeeCompanyTrainingCount,addFunction: true, role: 'employeeCompanyTraining', metaInfo: employeeCompanyTrainingListMetaInfo}, +{name: 'employeeCompanyTrainingList', displayName:'员工参与的公司培训',type:'employeeCompanyTraining',count:employeeCompanyTrainingCount,addFunction: true, role: 'employeeCompanyTraining', metaInfo: employeeCompanyTrainingListMetaInfo, renderItem: GlobalComponents.EmployeeCompanyTrainingBase.renderItemOfList}, ], }; @@ -140,6 +140,8 @@ class ScoringDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/scoring/Scoring.permission.js b/bizui/src/bizcomponents/scoring/Scoring.permission.js index 8e524fac6..ac513b79e 100644 --- a/bizui/src/bizcomponents/scoring/Scoring.permission.js +++ b/bizui/src/bizcomponents/scoring/Scoring.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './Scoring.preference.less' +import styles from './Scoring.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/scoring/Scoring.preference.js b/bizui/src/bizcomponents/scoring/Scoring.preference.js deleted file mode 100644 index e5e49f130..000000000 --- a/bizui/src/bizcomponents/scoring/Scoring.preference.js +++ /dev/null @@ -1,351 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './Scoring.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (scoring) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (scoring) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (scoring) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {ScoringService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = ScoringService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (scoring,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=scoring.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_scoring/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (scoring,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(scoring,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (scoring) =>{ - return null -} -const internalRenderExtraFooter = (scoring) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (scoring,targetComponent) =>{ - const userContext = null - return ( - -{scoring.id} -{scoring.scoredBy} -{scoring.score} -{scoring.comment} - - {buildTransferModal(scoring,targetComponent)} - - ) - -} - - -const renderPermissionSetting = scoring => { - const {ScoringBase} = GlobalComponents - return - - -} - - -class ScoringPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const scoring = this.props.scoring; - const { id,displayName, employeeCompanyTrainingCount } = scoring - - - - const cardsData = {cardsName:"评分",cardsFor: "scoring",cardsSource: scoring, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - scoring: state._scoring, -}))(Form.create()(ScoringPreference)) - diff --git a/bizui/src/bizcomponents/scoring/Scoring.preference.less b/bizui/src/bizcomponents/scoring/Scoring.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/scoring/Scoring.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/scoring/Scoring.profile.js b/bizui/src/bizcomponents/scoring/Scoring.profile.js index aade47a71..532beb09a 100644 --- a/bizui/src/bizcomponents/scoring/Scoring.profile.js +++ b/bizui/src/bizcomponents/scoring/Scoring.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './Scoring.preference.less' +import styles from './Scoring.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,18 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (scoring,targetComponent) =>{ - const userContext = null - return ( - -{scoring.id} -{scoring.scoredBy} -{scoring.score} -{scoring.comment} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.ScoringBase.renderItemOfList(item, targetComponents) + } @@ -65,13 +58,14 @@ class ScoringProfile extends Component { const cardsData = {cardsName:"评分",cardsFor: "scoring",cardsSource: scoring, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -81,7 +75,7 @@ class ScoringProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/secuser/SecUser.associateform.js b/bizui/src/bizcomponents/secuser/SecUser.associateform.js index 435fb7e84..893c654d5 100644 --- a/bizui/src/bizcomponents/secuser/SecUser.associateform.js +++ b/bizui/src/bizcomponents/secuser/SecUser.associateform.js @@ -21,11 +21,14 @@ const testValues = { login: 'login', mobile: '13900000001', email: '', - pwd: 'C183EC89F92A462CF45B95504792EC4625E847C90536EEFE512D1C9DB8602E95', + pwd: '1B0837F50CCED8BAC0DE12C3834F69EA018EF13A11DB9EE48C74FA07E606A32B', + weixinOpenid: 'wx123456789abcdefghijklmn', + weixinAppid: 'wxapp12098410239840', + accessToken: 'jwt_token_12345678', verificationCode: '0', - verificationCodeExpire: '2019-05-13 16:28:11', - lastLoginTime: '2019-05-15 19:43:41', - domainId: 'UD000001', + verificationCodeExpire: '2019-06-18 21:34:54', + lastLoginTime: '2019-06-21 12:41:58', + domainId: 'UD00000001', } */ @@ -181,6 +184,36 @@ class SecUserAssociateForm extends Component { + + + {getFieldDecorator('weixinOpenid', { + rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], + })( + + )} + + + + + + {getFieldDecorator('weixinAppid', { + rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], + })( + + )} + + + + + + {getFieldDecorator('accessToken', { + rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], + })( + + )} + + + {getFieldDecorator('verificationCode', { diff --git a/bizui/src/bizcomponents/secuser/SecUser.base.js b/bizui/src/bizcomponents/secuser/SecUser.base.js index 88c00f221..30db25238 100644 --- a/bizui/src/bizcomponents/secuser/SecUser.base.js +++ b/bizui/src/bizcomponents/secuser/SecUser.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -43,6 +44,9 @@ const fieldLabels = { mobile: '手机', email: '电子邮件', pwd: 'PWD', + weixinOpenid: 'Weixin Openid', + weixinAppid: 'Weixin Appid', + accessToken: '访问令牌', verificationCode: '验证码', verificationCodeExpire: '验证码过期', lastLoginTime: '最后登录时间', @@ -58,6 +62,9 @@ const displayColumns = [ { title: fieldLabels.mobile, debugtype: 'string_china_mobile_phone', dataIndex: 'mobile', width: '15',render: (text, record)=>renderTextCell(text,record)}, { title: fieldLabels.email, debugtype: 'string', dataIndex: 'email', width: '23',render: (text, record)=>renderTextCell(text,record)}, { title: fieldLabels.pwd, debugtype: 'string_password', dataIndex: 'pwd', width: '11',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.weixinOpenid, debugtype: 'string', dataIndex: 'weixinOpenid', width: '29',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.weixinAppid, debugtype: 'string', dataIndex: 'weixinAppid', width: '23',render: (text, record)=>renderTextCell(text,record)}, + { title: fieldLabels.accessToken, debugtype: 'string', dataIndex: 'accessToken', width: '22',render: (text, record)=>renderTextCell(text,record)}, { title: fieldLabels.verificationCode, debugtype: 'int', dataIndex: 'verificationCode', width: '11',render: (text, record)=>renderTextCell(text,record)}, { title: fieldLabels.verificationCodeExpire, dataIndex: 'verificationCodeExpire', render: (text, record) =>renderDateTimeCell(text,record), sorter: true}, { title: fieldLabels.lastLoginTime, dataIndex: 'lastLoginTime', render: (text, record) =>renderDateTimeCell(text,record), sorter: true}, @@ -67,26 +74,33 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({secUser,targetComponent})=>{ +const renderItemOfList=(secUser,targetComponent)=>{ - const {SecUserService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {secUser.id} {secUser.login} {secUser.mobile} {secUser.email} {secUser.pwd} +{secUser.weixinOpenid} +{secUser.weixinAppid} +{secUser.accessToken} {secUser.verificationCode} { moment(secUser.verificationCodeExpire).format('YYYY-MM-DD')} { moment(secUser.lastLoginTime).format('YYYY-MM-DD')} {secUser.currentStatus} - {buildTransferModal(secUser,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/secuser/SecUser.createform.js b/bizui/src/bizcomponents/secuser/SecUser.createform.js index 629d37436..70536c76a 100644 --- a/bizui/src/bizcomponents/secuser/SecUser.createform.js +++ b/bizui/src/bizcomponents/secuser/SecUser.createform.js @@ -20,11 +20,14 @@ const testValues = { login: 'login', mobile: '13900000001', email: '', - pwd: 'C183EC89F92A462CF45B95504792EC4625E847C90536EEFE512D1C9DB8602E95', + pwd: '1B0837F50CCED8BAC0DE12C3834F69EA018EF13A11DB9EE48C74FA07E606A32B', + weixinOpenid: 'wx123456789abcdefghijklmn', + weixinAppid: 'wxapp12098410239840', + accessToken: 'jwt_token_12345678', verificationCode: '0', - verificationCodeExpire: '2019-04-30 03:25:46', - lastLoginTime: '2019-05-03 15:55:12', - domainId: 'UD000001', + verificationCodeExpire: '2019-06-25 20:12:52', + lastLoginTime: '2019-06-28 11:46:28', + domainId: 'UD00000001', } */ @@ -248,6 +251,36 @@ class SecUserCreateForm extends Component {
+ + + {getFieldDecorator('weixinOpenid', { + rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], + })( + + )} + + + + + + {getFieldDecorator('weixinAppid', { + rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], + })( + + )} + + + + + + {getFieldDecorator('accessToken', { + rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], + })( + + )} + + + {getFieldDecorator('verificationCode', { diff --git a/bizui/src/bizcomponents/secuser/SecUser.dashboard.js b/bizui/src/bizcomponents/secuser/SecUser.dashboard.js index d02e8e972..577fcf3b2 100644 --- a/bizui/src/bizcomponents/secuser/SecUser.dashboard.js +++ b/bizui/src/bizcomponents/secuser/SecUser.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(secUser)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (secUser) =>defaultSettingListOf(secUser, optionList) const internalLargeTextOf = (secUser) =>{ @@ -86,6 +86,9 @@ const internalSummaryOf = (secUser,targetComponent) =>{ {secUser.mobile} {secUser.email} {secUser.pwd} +{secUser.weixinOpenid} +{secUser.weixinAppid} +{secUser.accessToken} {secUser.verificationCode} { moment(secUser.verificationCodeExpire).format('YYYY-MM-DD')} { moment(secUser.lastLoginTime).format('YYYY-MM-DD')} @@ -130,8 +133,8 @@ class SecUserDashboard extends Component { const cardsData = {cardsName:"SEC的用户",cardsFor: "secUser", cardsSource: this.props.secUser,returnURL,displayName, subItems: [ -{name: 'userAppList', displayName:'用户应用程序',type:'userApp',count:userAppCount,addFunction: true, role: 'userApp', metaInfo: userAppListMetaInfo}, -{name: 'loginHistoryList', displayName:'登录历史',type:'loginHistory',count:loginHistoryCount,addFunction: true, role: 'loginHistory', metaInfo: loginHistoryListMetaInfo}, +{name: 'userAppList', displayName:'用户应用程序',type:'userApp',count:userAppCount,addFunction: true, role: 'userApp', metaInfo: userAppListMetaInfo, renderItem: GlobalComponents.UserAppBase.renderItemOfList}, +{name: 'loginHistoryList', displayName:'登录历史',type:'loginHistory',count:loginHistoryCount,addFunction: false, role: 'loginHistory', metaInfo: loginHistoryListMetaInfo, renderItem: GlobalComponents.LoginHistoryBase.renderItemOfList}, ], }; @@ -146,6 +149,8 @@ class SecUserDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/secuser/SecUser.modaltable.js b/bizui/src/bizcomponents/secuser/SecUser.modaltable.js index 807967b9f..8e970f1c0 100644 --- a/bizui/src/bizcomponents/secuser/SecUser.modaltable.js +++ b/bizui/src/bizcomponents/secuser/SecUser.modaltable.js @@ -38,7 +38,7 @@ class SecUserModalTable extends PureComponent { dataSource={data} columns={displayColumns} size="small" - scroll={{ x: 1755 }} + scroll={{ x: 2685 }} />
) diff --git a/bizui/src/bizcomponents/secuser/SecUser.permission.js b/bizui/src/bizcomponents/secuser/SecUser.permission.js index 3cf62728d..72d5cac37 100644 --- a/bizui/src/bizcomponents/secuser/SecUser.permission.js +++ b/bizui/src/bizcomponents/secuser/SecUser.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './SecUser.preference.less' +import styles from './SecUser.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; @@ -33,6 +33,9 @@ const internalSummaryOf = (secUser,targetComponent) =>{ {secUser.mobile} {secUser.email} {secUser.pwd} +{secUser.weixinOpenid} +{secUser.weixinAppid} +{secUser.accessToken} {secUser.verificationCode} { moment(secUser.verificationCodeExpire).format('YYYY-MM-DD')} { moment(secUser.lastLoginTime).format('YYYY-MM-DD')} diff --git a/bizui/src/bizcomponents/secuser/SecUser.preference.js b/bizui/src/bizcomponents/secuser/SecUser.preference.js deleted file mode 100644 index 923566052..000000000 --- a/bizui/src/bizcomponents/secuser/SecUser.preference.js +++ /dev/null @@ -1,356 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './SecUser.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (secUser) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (secUser) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (secUser) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {SecUserService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = SecUserService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (secUser,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=secUser.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_secUser/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (secUser,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(secUser,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (secUser) =>{ - return null -} -const internalRenderExtraFooter = (secUser) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (secUser,targetComponent) =>{ - const userContext = null - return ( - -{secUser.id} -{secUser.login} -{secUser.mobile} -{secUser.email} -{secUser.pwd} -{secUser.verificationCode} -{ moment(secUser.verificationCodeExpire).format('YYYY-MM-DD')} -{ moment(secUser.lastLoginTime).format('YYYY-MM-DD')} -{secUser.currentStatus} - - {buildTransferModal(secUser,targetComponent)} - - ) - -} - - -const renderPermissionSetting = secUser => { - const {SecUserBase} = GlobalComponents - return - - -} - - -class SecUserPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const secUser = this.props.secUser; - const { id,displayName, userAppCount, loginHistoryCount } = secUser - - - - const cardsData = {cardsName:"SEC的用户",cardsFor: "secUser",cardsSource: secUser, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - secUser: state._secUser, -}))(Form.create()(SecUserPreference)) - diff --git a/bizui/src/bizcomponents/secuser/SecUser.preference.less b/bizui/src/bizcomponents/secuser/SecUser.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/secuser/SecUser.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/secuser/SecUser.profile.js b/bizui/src/bizcomponents/secuser/SecUser.profile.js index 17ae104a2..367f7ace8 100644 --- a/bizui/src/bizcomponents/secuser/SecUser.profile.js +++ b/bizui/src/bizcomponents/secuser/SecUser.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './SecUser.preference.less' +import styles from './SecUser.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,23 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (secUser,targetComponent) =>{ - const userContext = null - return ( - -{secUser.id} -{secUser.login} -{secUser.mobile} -{secUser.email} -{secUser.pwd} -{secUser.verificationCode} -{ moment(secUser.verificationCodeExpire).format('YYYY-MM-DD')} -{ moment(secUser.lastLoginTime).format('YYYY-MM-DD')} -{secUser.currentStatus} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.SecUserBase.renderItemOfList(item, targetComponents) + } @@ -70,13 +58,14 @@ class SecUserProfile extends Component { const cardsData = {cardsName:"SEC的用户",cardsFor: "secUser",cardsSource: secUser, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -86,7 +75,7 @@ class SecUserProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)} ) } diff --git a/bizui/src/bizcomponents/secuser/SecUser.searchform.js b/bizui/src/bizcomponents/secuser/SecUser.searchform.js index baf425c96..e5e40690f 100644 --- a/bizui/src/bizcomponents/secuser/SecUser.searchform.js +++ b/bizui/src/bizcomponents/secuser/SecUser.searchform.js @@ -135,6 +135,9 @@ componentDidMount() { pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'mobile')) pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'email')) pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'pwd')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'weixinOpenid')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'weixinAppid')) + pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'accessToken')) pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'eq', 'domain')) pushIfNotNull(paramList,this.buildStringSearchParameters(listName, fieldsValue,'contains', 'currentStatus')) @@ -288,6 +291,30 @@ componentDidMount() { )} + + + + {getFieldDecorator('weixinOpenid')( + + )} + + + + + + {getFieldDecorator('weixinAppid')( + + )} + + + + + + {getFieldDecorator('accessToken')( + + )} + + {getFieldDecorator('domain', { diff --git a/bizui/src/bizcomponents/secuser/SecUser.updateform.js b/bizui/src/bizcomponents/secuser/SecUser.updateform.js index 3947d3d62..6b1f92e40 100644 --- a/bizui/src/bizcomponents/secuser/SecUser.updateform.js +++ b/bizui/src/bizcomponents/secuser/SecUser.updateform.js @@ -317,6 +317,42 @@ class SecUserUpdateForm extends Component { + + + {getFieldDecorator('weixinOpenid', { + initialValue: selectedRow.weixinOpenid, + rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], + })( + + + )} + + + + + + {getFieldDecorator('weixinAppid', { + initialValue: selectedRow.weixinAppid, + rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], + })( + + + )} + + + + + + {getFieldDecorator('accessToken', { + initialValue: selectedRow.accessToken, + rules: [{ required: true, message: appLocaleName(userContext,"PleaseInput") }], + })( + + + )} + + + {getFieldDecorator('verificationCode', { diff --git a/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.base.js b/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.base.js index e69324106..53607a727 100644 --- a/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.base.js +++ b/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -52,21 +53,25 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({secUserBlocking,targetComponent})=>{ +const renderItemOfList=(secUserBlocking,targetComponent)=>{ - const {SecUserBlockingService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {secUserBlocking.id} {secUserBlocking.who} { moment(secUserBlocking.blockTime).format('YYYY-MM-DD')} {secUserBlocking.comments} - {buildTransferModal(secUserBlocking,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.dashboard.js b/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.dashboard.js index 16a22754f..34b6386ce 100644 --- a/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.dashboard.js +++ b/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(secUserBlocking)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (secUserBlocking) =>defaultSettingListOf(secUserBlocking, optionList) const internalLargeTextOf = (secUserBlocking) =>{ @@ -125,7 +125,7 @@ class SecUserBlockingDashboard extends Component { const cardsData = {cardsName:"用户屏蔽",cardsFor: "secUserBlocking", cardsSource: this.props.secUserBlocking,returnURL,displayName, subItems: [ -{name: 'secUserList', displayName:'SEC的用户',type:'secUser',count:secUserCount,addFunction: true, role: 'secUser', metaInfo: secUserListMetaInfo}, +{name: 'secUserList', displayName:'SEC的用户',type:'secUser',count:secUserCount,addFunction: true, role: 'secUser', metaInfo: secUserListMetaInfo, renderItem: GlobalComponents.SecUserBase.renderItemOfList}, ], }; @@ -140,6 +140,8 @@ class SecUserBlockingDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.permission.js b/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.permission.js index a26d8e28d..2d1acde99 100644 --- a/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.permission.js +++ b/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './SecUserBlocking.preference.less' +import styles from './SecUserBlocking.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.preference.js b/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.preference.js deleted file mode 100644 index 2e9582caa..000000000 --- a/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.preference.js +++ /dev/null @@ -1,351 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './SecUserBlocking.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (secUserBlocking) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (secUserBlocking) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (secUserBlocking) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {SecUserBlockingService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = SecUserBlockingService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (secUserBlocking,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=secUserBlocking.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_secUserBlocking/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (secUserBlocking,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(secUserBlocking,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (secUserBlocking) =>{ - return null -} -const internalRenderExtraFooter = (secUserBlocking) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (secUserBlocking,targetComponent) =>{ - const userContext = null - return ( - -{secUserBlocking.id} -{secUserBlocking.who} -{ moment(secUserBlocking.blockTime).format('YYYY-MM-DD')} -{secUserBlocking.comments} - - {buildTransferModal(secUserBlocking,targetComponent)} - - ) - -} - - -const renderPermissionSetting = secUserBlocking => { - const {SecUserBlockingBase} = GlobalComponents - return - - -} - - -class SecUserBlockingPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const secUserBlocking = this.props.secUserBlocking; - const { id,displayName, secUserCount } = secUserBlocking - - - - const cardsData = {cardsName:"用户屏蔽",cardsFor: "secUserBlocking",cardsSource: secUserBlocking, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - secUserBlocking: state._secUserBlocking, -}))(Form.create()(SecUserBlockingPreference)) - diff --git a/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.preference.less b/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.profile.js b/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.profile.js index 4a3139ef5..bc43215b7 100644 --- a/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.profile.js +++ b/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './SecUserBlocking.preference.less' +import styles from './SecUserBlocking.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,18 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (secUserBlocking,targetComponent) =>{ - const userContext = null - return ( - -{secUserBlocking.id} -{secUserBlocking.who} -{ moment(secUserBlocking.blockTime).format('YYYY-MM-DD')} -{secUserBlocking.comments} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.SecUserBlockingBase.renderItemOfList(item, targetComponents) + } @@ -65,13 +58,14 @@ class SecUserBlockingProfile extends Component { const cardsData = {cardsName:"用户屏蔽",cardsFor: "secUserBlocking",cardsSource: secUserBlocking, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -81,7 +75,7 @@ class SecUserBlockingProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.service.js b/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.service.js index e675a2856..1870979c9 100644 --- a/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.service.js +++ b/bizui/src/bizcomponents/secuserblocking/SecUserBlocking.service.js @@ -23,14 +23,14 @@ const load = (targetObjectId, parameters) => { const addSecUser = (targetObjectId, parameters) => { - const url = `${PREFIX}secUserBlockingManager/addSecUser/secUserBlockingId/login/mobile/email/pwd/verificationCode/verificationCodeExpire/lastLoginTime/domainId/tokensExpr/` + const url = `${PREFIX}secUserBlockingManager/addSecUser/secUserBlockingId/login/mobile/email/pwd/weixinOpenid/weixinAppid/accessToken/verificationCode/verificationCodeExpire/lastLoginTime/domainId/tokensExpr/` const secUserBlockingId = targetObjectId const requestParameters = { ...parameters, secUserBlockingId, tokensExpr: 'none' } return postForm({ url,requestParameters}) } const updateSecUser = (targetObjectId, parameters) => { - const url = `${PREFIX}secUserBlockingManager/updateSecUserProperties/secUserBlockingId/id/login/mobile/email/pwd/verificationCode/verificationCodeExpire/lastLoginTime/tokensExpr/` + const url = `${PREFIX}secUserBlockingManager/updateSecUserProperties/secUserBlockingId/id/login/mobile/email/pwd/weixinOpenid/weixinAppid/accessToken/verificationCode/verificationCodeExpire/lastLoginTime/tokensExpr/` const secUserBlockingId = targetObjectId const requestParameters = { ...parameters, secUserBlockingId, tokensExpr: 'none' } return postForm({ url,requestParameters}) diff --git a/bizui/src/bizcomponents/shippingspace/ShippingSpace.associateform.js b/bizui/src/bizcomponents/shippingspace/ShippingSpace.associateform.js index 0fe4f0178..9ce9cf05f 100644 --- a/bizui/src/bizcomponents/shippingspace/ShippingSpace.associateform.js +++ b/bizui/src/bizcomponents/shippingspace/ShippingSpace.associateform.js @@ -21,10 +21,10 @@ const testValues = { location: '成都龙泉驿飞鹤路20号装货区', contactNumber: '02887654321', totalArea: '1876平方米', - latitude: '42.049580017940805', - longitude: '130.2573783914219', + latitude: '42.59049886159877', + longitude: '130.48273114890736', description: '每个收货区可以供一辆车装货', - warehouseId: 'W000001', + warehouseId: 'W00000001', } */ diff --git a/bizui/src/bizcomponents/shippingspace/ShippingSpace.base.js b/bizui/src/bizcomponents/shippingspace/ShippingSpace.base.js index f37aff65f..c45441e6c 100644 --- a/bizui/src/bizcomponents/shippingspace/ShippingSpace.base.js +++ b/bizui/src/bizcomponents/shippingspace/ShippingSpace.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -62,31 +63,31 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({shippingSpace,targetComponent})=>{ +const renderItemOfList=(shippingSpace,targetComponent)=>{ - const {ShippingSpaceService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {shippingSpace.id} {shippingSpace.location} {shippingSpace.contactNumber} {shippingSpace.totalArea} {shippingSpace.warehouse==null?appLocaleName(userContext,"NotAssigned"):`${shippingSpace.warehouse.displayName}(${shippingSpace.warehouse.id})`} - - showTransferModel(targetComponent,"仓库","warehouse",ShippingSpaceService.requestCandidateWarehouse, - ShippingSpaceService.transferToAnotherWarehouse,"anotherWarehouseId",shippingSpace.warehouse?shippingSpace.warehouse.id:"")} - style={{fontSize: 20,color:"red"}} /> {shippingSpace.latitude} {shippingSpace.longitude} {shippingSpace.description} { moment(shippingSpace.lastUpdateTime).format('YYYY-MM-DD')} - {buildTransferModal(shippingSpace,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/shippingspace/ShippingSpace.createform.js b/bizui/src/bizcomponents/shippingspace/ShippingSpace.createform.js index 8ed8867d9..b96bd78c8 100644 --- a/bizui/src/bizcomponents/shippingspace/ShippingSpace.createform.js +++ b/bizui/src/bizcomponents/shippingspace/ShippingSpace.createform.js @@ -20,10 +20,10 @@ const testValues = { location: '成都龙泉驿飞鹤路20号装货区', contactNumber: '02887654321', totalArea: '1876平方米', - latitude: '42.10559921938888', - longitude: '132.232373651481', + latitude: '40.330541658496955', + longitude: '131.89590174249523', description: '每个收货区可以供一辆车装货', - warehouseId: 'W000001', + warehouseId: 'W00000001', } */ diff --git a/bizui/src/bizcomponents/shippingspace/ShippingSpace.dashboard.js b/bizui/src/bizcomponents/shippingspace/ShippingSpace.dashboard.js index d4154d945..2f122d5a6 100644 --- a/bizui/src/bizcomponents/shippingspace/ShippingSpace.dashboard.js +++ b/bizui/src/bizcomponents/shippingspace/ShippingSpace.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(shippingSpace)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (shippingSpace) =>defaultSettingListOf(shippingSpace, optionList) const internalLargeTextOf = (shippingSpace) =>{ @@ -135,7 +135,7 @@ class ShippingSpaceDashboard extends Component { const cardsData = {cardsName:"发货区",cardsFor: "shippingSpace", cardsSource: this.props.shippingSpace,returnURL,displayName, subItems: [ -{name: 'goodsList', displayName:'货物',type:'goods',count:goodsCount,addFunction: true, role: 'goods', metaInfo: goodsListMetaInfo}, +{name: 'goodsList', displayName:'货物',type:'goods',count:goodsCount,addFunction: true, role: 'goods', metaInfo: goodsListMetaInfo, renderItem: GlobalComponents.GoodsBase.renderItemOfList}, ], }; @@ -150,6 +150,8 @@ class ShippingSpaceDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/shippingspace/ShippingSpace.permission.js b/bizui/src/bizcomponents/shippingspace/ShippingSpace.permission.js index 3bf69378e..224cc0c5b 100644 --- a/bizui/src/bizcomponents/shippingspace/ShippingSpace.permission.js +++ b/bizui/src/bizcomponents/shippingspace/ShippingSpace.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ShippingSpace.preference.less' +import styles from './ShippingSpace.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/shippingspace/ShippingSpace.preference.js b/bizui/src/bizcomponents/shippingspace/ShippingSpace.preference.js deleted file mode 100644 index b49b76092..000000000 --- a/bizui/src/bizcomponents/shippingspace/ShippingSpace.preference.js +++ /dev/null @@ -1,361 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ShippingSpace.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (shippingSpace) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (shippingSpace) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (shippingSpace) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {ShippingSpaceService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = ShippingSpaceService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (shippingSpace,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=shippingSpace.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_shippingSpace/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (shippingSpace,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(shippingSpace,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (shippingSpace) =>{ - return null -} -const internalRenderExtraFooter = (shippingSpace) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (shippingSpace,targetComponent) =>{ - const userContext = null - return ( - -{shippingSpace.id} -{shippingSpace.location} -{shippingSpace.contactNumber} -{shippingSpace.totalArea} -{shippingSpace.warehouse==null?appLocaleName(userContext,"NotAssigned"):shippingSpace.warehouse.displayName} - - showTransferModel(targetComponent,"仓库","warehouse","requestCandidateWarehouse", - "transferToAnotherWarehouse","anotherWarehouseId",shippingSpace.warehouse?shippingSpace.warehouse.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{shippingSpace.latitude} -{shippingSpace.longitude} -{shippingSpace.description} -{ moment(shippingSpace.lastUpdateTime).format('YYYY-MM-DD')} - - {buildTransferModal(shippingSpace,targetComponent)} - - ) - -} - - -const renderPermissionSetting = shippingSpace => { - const {ShippingSpaceBase} = GlobalComponents - return - - -} - - -class ShippingSpacePreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const shippingSpace = this.props.shippingSpace; - const { id,displayName, goodsCount } = shippingSpace - - - - const cardsData = {cardsName:"发货区",cardsFor: "shippingSpace",cardsSource: shippingSpace, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - shippingSpace: state._shippingSpace, -}))(Form.create()(ShippingSpacePreference)) - diff --git a/bizui/src/bizcomponents/shippingspace/ShippingSpace.preference.less b/bizui/src/bizcomponents/shippingspace/ShippingSpace.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/shippingspace/ShippingSpace.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/shippingspace/ShippingSpace.profile.js b/bizui/src/bizcomponents/shippingspace/ShippingSpace.profile.js index 7d1e3bbb4..08602ef34 100644 --- a/bizui/src/bizcomponents/shippingspace/ShippingSpace.profile.js +++ b/bizui/src/bizcomponents/shippingspace/ShippingSpace.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './ShippingSpace.preference.less' +import styles from './ShippingSpace.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,22 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (shippingSpace,targetComponent) =>{ - const userContext = null - return ( - -{shippingSpace.id} -{shippingSpace.location} -{shippingSpace.contactNumber} -{shippingSpace.totalArea} -{shippingSpace.latitude} -{shippingSpace.longitude} -{shippingSpace.description} -{ moment(shippingSpace.lastUpdateTime).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.ShippingSpaceBase.renderItemOfList(item, targetComponents) + } @@ -69,13 +58,14 @@ class ShippingSpaceProfile extends Component { const cardsData = {cardsName:"发货区",cardsFor: "shippingSpace",cardsSource: shippingSpace, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -85,7 +75,7 @@ class ShippingSpaceProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/skilltype/SkillType.associateform.js b/bizui/src/bizcomponents/skilltype/SkillType.associateform.js index 13c49461d..34cab0905 100644 --- a/bizui/src/bizcomponents/skilltype/SkillType.associateform.js +++ b/bizui/src/bizcomponents/skilltype/SkillType.associateform.js @@ -20,7 +20,7 @@ const testValues = {}; const testValues = { code: 'S0000', description: 'JAVA编程', - companyId: 'RSCC000001', + companyId: 'RSCC00000001', } */ diff --git a/bizui/src/bizcomponents/skilltype/SkillType.base.js b/bizui/src/bizcomponents/skilltype/SkillType.base.js index c6ff6be70..d32b67bc8 100644 --- a/bizui/src/bizcomponents/skilltype/SkillType.base.js +++ b/bizui/src/bizcomponents/skilltype/SkillType.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -52,20 +53,24 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({skillType,targetComponent})=>{ +const renderItemOfList=(skillType,targetComponent)=>{ - const {SkillTypeService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {skillType.id} {skillType.code} {skillType.description} - {buildTransferModal(skillType,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/skilltype/SkillType.createform.js b/bizui/src/bizcomponents/skilltype/SkillType.createform.js index 7514e01e6..ed9303c70 100644 --- a/bizui/src/bizcomponents/skilltype/SkillType.createform.js +++ b/bizui/src/bizcomponents/skilltype/SkillType.createform.js @@ -19,7 +19,7 @@ const testValues = {}; const testValues = { code: 'S0000', description: 'JAVA编程', - companyId: 'RSCC000001', + companyId: 'RSCC00000001', } */ diff --git a/bizui/src/bizcomponents/skilltype/SkillType.dashboard.js b/bizui/src/bizcomponents/skilltype/SkillType.dashboard.js index 3689a5d0c..d0c66ea49 100644 --- a/bizui/src/bizcomponents/skilltype/SkillType.dashboard.js +++ b/bizui/src/bizcomponents/skilltype/SkillType.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(skillType)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (skillType) =>defaultSettingListOf(skillType, optionList) const internalLargeTextOf = (skillType) =>{ @@ -124,7 +124,7 @@ class SkillTypeDashboard extends Component { const cardsData = {cardsName:"技能类型",cardsFor: "skillType", cardsSource: this.props.skillType,returnURL,displayName, subItems: [ -{name: 'employeeSkillList', displayName:'员工技能',type:'employeeSkill',count:employeeSkillCount,addFunction: true, role: 'employeeSkill', metaInfo: employeeSkillListMetaInfo}, +{name: 'employeeSkillList', displayName:'员工技能',type:'employeeSkill',count:employeeSkillCount,addFunction: true, role: 'employeeSkill', metaInfo: employeeSkillListMetaInfo, renderItem: GlobalComponents.EmployeeSkillBase.renderItemOfList}, ], }; @@ -139,6 +139,8 @@ class SkillTypeDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/skilltype/SkillType.permission.js b/bizui/src/bizcomponents/skilltype/SkillType.permission.js index f3daa1cf4..37ca23904 100644 --- a/bizui/src/bizcomponents/skilltype/SkillType.permission.js +++ b/bizui/src/bizcomponents/skilltype/SkillType.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './SkillType.preference.less' +import styles from './SkillType.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/skilltype/SkillType.preference.js b/bizui/src/bizcomponents/skilltype/SkillType.preference.js deleted file mode 100644 index 18f865d6c..000000000 --- a/bizui/src/bizcomponents/skilltype/SkillType.preference.js +++ /dev/null @@ -1,350 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './SkillType.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (skillType) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (skillType) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (skillType) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {SkillTypeService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = SkillTypeService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (skillType,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=skillType.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_skillType/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (skillType,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(skillType,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (skillType) =>{ - return null -} -const internalRenderExtraFooter = (skillType) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (skillType,targetComponent) =>{ - const userContext = null - return ( - -{skillType.id} -{skillType.code} -{skillType.description} - - {buildTransferModal(skillType,targetComponent)} - - ) - -} - - -const renderPermissionSetting = skillType => { - const {SkillTypeBase} = GlobalComponents - return - - -} - - -class SkillTypePreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const skillType = this.props.skillType; - const { id,displayName, employeeSkillCount } = skillType - - - - const cardsData = {cardsName:"技能类型",cardsFor: "skillType",cardsSource: skillType, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - skillType: state._skillType, -}))(Form.create()(SkillTypePreference)) - diff --git a/bizui/src/bizcomponents/skilltype/SkillType.preference.less b/bizui/src/bizcomponents/skilltype/SkillType.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/skilltype/SkillType.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/skilltype/SkillType.profile.js b/bizui/src/bizcomponents/skilltype/SkillType.profile.js index d8821d913..2b54a1681 100644 --- a/bizui/src/bizcomponents/skilltype/SkillType.profile.js +++ b/bizui/src/bizcomponents/skilltype/SkillType.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './SkillType.preference.less' +import styles from './SkillType.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,17 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (skillType,targetComponent) =>{ - const userContext = null - return ( - -{skillType.id} -{skillType.code} -{skillType.description} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.SkillTypeBase.renderItemOfList(item, targetComponents) + } @@ -64,13 +58,14 @@ class SkillTypeProfile extends Component { const cardsData = {cardsName:"技能类型",cardsFor: "skillType",cardsSource: skillType, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -80,7 +75,7 @@ class SkillTypeProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/sku/Sku.associateform.js b/bizui/src/bizcomponents/sku/Sku.associateform.js index c7e245c10..fdc605a1e 100644 --- a/bizui/src/bizcomponents/sku/Sku.associateform.js +++ b/bizui/src/bizcomponents/sku/Sku.associateform.js @@ -23,8 +23,8 @@ const testValues = { barcode: 'TM00000000001', packageType: '包装类型', netContent: '包装数量等信息,包装数量等信息,包装数量等信息', - price: '1223.96', - productId: 'P000001', + price: '1256.60', + productId: 'P00000001', } */ diff --git a/bizui/src/bizcomponents/sku/Sku.base.js b/bizui/src/bizcomponents/sku/Sku.base.js index c25722f16..3c8d231a6 100644 --- a/bizui/src/bizcomponents/sku/Sku.base.js +++ b/bizui/src/bizcomponents/sku/Sku.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -62,30 +63,30 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({sku,targetComponent})=>{ +const renderItemOfList=(sku,targetComponent)=>{ - const {SkuService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {sku.id} {sku.name} {sku.size} {sku.product==null?appLocaleName(userContext,"NotAssigned"):`${sku.product.displayName}(${sku.product.id})`} - - showTransferModel(targetComponent,"产品","product",SkuService.requestCandidateProduct, - SkuService.transferToAnotherProduct,"anotherProductId",sku.product?sku.product.id:"")} - style={{fontSize: 20,color:"red"}} /> {sku.barcode} {sku.packageType} {sku.netContent} {sku.price} - {buildTransferModal(sku,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/sku/Sku.createform.js b/bizui/src/bizcomponents/sku/Sku.createform.js index 6f7560fd0..9a83407f3 100644 --- a/bizui/src/bizcomponents/sku/Sku.createform.js +++ b/bizui/src/bizcomponents/sku/Sku.createform.js @@ -22,8 +22,8 @@ const testValues = { barcode: 'TM00000000001', packageType: '包装类型', netContent: '包装数量等信息,包装数量等信息,包装数量等信息', - price: '1251.07', - productId: 'P000001', + price: '989.83', + productId: 'P00000001', } */ diff --git a/bizui/src/bizcomponents/sku/Sku.dashboard.js b/bizui/src/bizcomponents/sku/Sku.dashboard.js index f7b1eff99..3bb146f07 100644 --- a/bizui/src/bizcomponents/sku/Sku.dashboard.js +++ b/bizui/src/bizcomponents/sku/Sku.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -51,6 +50,7 @@ const optionList =(sku)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (sku) =>defaultSettingListOf(sku, optionList) const internalLargeTextOf = (sku) =>{ @@ -135,7 +135,7 @@ class SkuDashboard extends Component { const cardsData = {cardsName:"SKU",cardsFor: "sku", cardsSource: this.props.sku,returnURL,displayName, subItems: [ -{name: 'goodsList', displayName:'货物',type:'goods',count:goodsCount,addFunction: true, role: 'goods', metaInfo: goodsListMetaInfo}, +{name: 'goodsList', displayName:'货物',type:'goods',count:goodsCount,addFunction: true, role: 'goods', metaInfo: goodsListMetaInfo, renderItem: GlobalComponents.GoodsBase.renderItemOfList}, ], }; @@ -150,6 +150,8 @@ class SkuDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/sku/Sku.modaltable.js b/bizui/src/bizcomponents/sku/Sku.modaltable.js index e18c22075..34063980c 100644 --- a/bizui/src/bizcomponents/sku/Sku.modaltable.js +++ b/bizui/src/bizcomponents/sku/Sku.modaltable.js @@ -38,7 +38,7 @@ class SkuModalTable extends PureComponent { dataSource={data} columns={displayColumns} size="small" - scroll={{ x: 1500 }} + scroll={{ x: 1140 }} />
) diff --git a/bizui/src/bizcomponents/sku/Sku.permission.js b/bizui/src/bizcomponents/sku/Sku.permission.js index 433eabcf8..1623b2391 100644 --- a/bizui/src/bizcomponents/sku/Sku.permission.js +++ b/bizui/src/bizcomponents/sku/Sku.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './Sku.preference.less' +import styles from './Sku.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/sku/Sku.preference.js b/bizui/src/bizcomponents/sku/Sku.preference.js deleted file mode 100644 index 51fbeff7d..000000000 --- a/bizui/src/bizcomponents/sku/Sku.preference.js +++ /dev/null @@ -1,361 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './Sku.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (sku) =>{ - const userContext = null - const imageList = [ - {"title":'图片',"imageLocation":sku.picture}, -] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (sku) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (sku) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {SkuService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = SkuService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (sku,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=sku.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_sku/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (sku,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(sku,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (sku) =>{ - return null -} -const internalRenderExtraFooter = (sku) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (sku,targetComponent) =>{ - const userContext = null - return ( - -{sku.id} -{sku.name} -{sku.size} -{sku.product==null?appLocaleName(userContext,"NotAssigned"):sku.product.displayName} - - showTransferModel(targetComponent,"产品","product","requestCandidateProduct", - "transferToAnotherProduct","anotherProductId",sku.product?sku.product.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{sku.barcode} -{sku.packageType} -{sku.netContent} -{sku.price} - - {buildTransferModal(sku,targetComponent)} - - ) - -} - - -const renderPermissionSetting = sku => { - const {SkuBase} = GlobalComponents - return - - -} - - -class SkuPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const sku = this.props.sku; - const { id,displayName, goodsCount } = sku - - - - const cardsData = {cardsName:"SKU",cardsFor: "sku",cardsSource: sku, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - sku: state._sku, -}))(Form.create()(SkuPreference)) - diff --git a/bizui/src/bizcomponents/sku/Sku.preference.less b/bizui/src/bizcomponents/sku/Sku.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/sku/Sku.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/sku/Sku.profile.js b/bizui/src/bizcomponents/sku/Sku.profile.js index 78f859736..e13d96e7c 100644 --- a/bizui/src/bizcomponents/sku/Sku.profile.js +++ b/bizui/src/bizcomponents/sku/Sku.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './Sku.preference.less' +import styles from './Sku.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,21 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (sku,targetComponent) =>{ - const userContext = null - return ( - -{sku.id} -{sku.name} -{sku.size} -{sku.barcode} -{sku.packageType} -{sku.netContent} -{sku.price} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.SkuBase.renderItemOfList(item, targetComponents) + } @@ -68,13 +58,14 @@ class SkuProfile extends Component { const cardsData = {cardsName:"SKU",cardsFor: "sku",cardsSource: sku, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -84,7 +75,7 @@ class SkuProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)} ) } diff --git a/bizui/src/bizcomponents/smartpallet/SmartPallet.associateform.js b/bizui/src/bizcomponents/smartpallet/SmartPallet.associateform.js index a8e4903f1..ca19e3248 100644 --- a/bizui/src/bizcomponents/smartpallet/SmartPallet.associateform.js +++ b/bizui/src/bizcomponents/smartpallet/SmartPallet.associateform.js @@ -21,9 +21,9 @@ const testValues = { location: '成都龙泉驿飞鹤路20号移动区域,比如过道,货运通道等', contactNumber: '02887654321', totalArea: '1876平方米', - latitude: '41.55112973917255', - longitude: '130.87341804976717', - warehouseId: 'W000001', + latitude: '41.69363244868949', + longitude: '129.68120537212315', + warehouseId: 'W00000001', } */ diff --git a/bizui/src/bizcomponents/smartpallet/SmartPallet.base.js b/bizui/src/bizcomponents/smartpallet/SmartPallet.base.js index b0ef4e93c..0694dd790 100644 --- a/bizui/src/bizcomponents/smartpallet/SmartPallet.base.js +++ b/bizui/src/bizcomponents/smartpallet/SmartPallet.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -60,14 +61,16 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({smartPallet,targetComponent})=>{ +const renderItemOfList=(smartPallet,targetComponent)=>{ - const {SmartPalletService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {smartPallet.id} {smartPallet.location} {smartPallet.contactNumber} @@ -75,15 +78,13 @@ const renderItemOfList=({smartPallet,targetComponent})=>{ {smartPallet.latitude} {smartPallet.longitude} {smartPallet.warehouse==null?appLocaleName(userContext,"NotAssigned"):`${smartPallet.warehouse.displayName}(${smartPallet.warehouse.id})`} - - showTransferModel(targetComponent,"仓库","warehouse",SmartPalletService.requestCandidateWarehouse, - SmartPalletService.transferToAnotherWarehouse,"anotherWarehouseId",smartPallet.warehouse?smartPallet.warehouse.id:"")} - style={{fontSize: 20,color:"red"}} /> { moment(smartPallet.lastUpdateTime).format('YYYY-MM-DD')} - {buildTransferModal(smartPallet,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/smartpallet/SmartPallet.createform.js b/bizui/src/bizcomponents/smartpallet/SmartPallet.createform.js index 97a5c613d..a8be641d6 100644 --- a/bizui/src/bizcomponents/smartpallet/SmartPallet.createform.js +++ b/bizui/src/bizcomponents/smartpallet/SmartPallet.createform.js @@ -20,9 +20,9 @@ const testValues = { location: '成都龙泉驿飞鹤路20号移动区域,比如过道,货运通道等', contactNumber: '02887654321', totalArea: '1876平方米', - latitude: '40.75831525606565', - longitude: '132.08197369853298', - warehouseId: 'W000001', + latitude: '41.872185159245134', + longitude: '130.0927013382782', + warehouseId: 'W00000001', } */ diff --git a/bizui/src/bizcomponents/smartpallet/SmartPallet.dashboard.js b/bizui/src/bizcomponents/smartpallet/SmartPallet.dashboard.js index 9da1b5d4e..2042d054c 100644 --- a/bizui/src/bizcomponents/smartpallet/SmartPallet.dashboard.js +++ b/bizui/src/bizcomponents/smartpallet/SmartPallet.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(smartPallet)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (smartPallet) =>defaultSettingListOf(smartPallet, optionList) const internalLargeTextOf = (smartPallet) =>{ @@ -134,7 +134,7 @@ class SmartPalletDashboard extends Component { const cardsData = {cardsName:"智能托盘",cardsFor: "smartPallet", cardsSource: this.props.smartPallet,returnURL,displayName, subItems: [ -{name: 'goodsList', displayName:'货物',type:'goods',count:goodsCount,addFunction: true, role: 'goods', metaInfo: goodsListMetaInfo}, +{name: 'goodsList', displayName:'货物',type:'goods',count:goodsCount,addFunction: true, role: 'goods', metaInfo: goodsListMetaInfo, renderItem: GlobalComponents.GoodsBase.renderItemOfList}, ], }; @@ -149,6 +149,8 @@ class SmartPalletDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/smartpallet/SmartPallet.permission.js b/bizui/src/bizcomponents/smartpallet/SmartPallet.permission.js index a3cc4252b..8705cb771 100644 --- a/bizui/src/bizcomponents/smartpallet/SmartPallet.permission.js +++ b/bizui/src/bizcomponents/smartpallet/SmartPallet.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './SmartPallet.preference.less' +import styles from './SmartPallet.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/smartpallet/SmartPallet.preference.js b/bizui/src/bizcomponents/smartpallet/SmartPallet.preference.js deleted file mode 100644 index b617442d4..000000000 --- a/bizui/src/bizcomponents/smartpallet/SmartPallet.preference.js +++ /dev/null @@ -1,360 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './SmartPallet.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (smartPallet) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (smartPallet) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (smartPallet) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {SmartPalletService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = SmartPalletService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (smartPallet,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=smartPallet.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_smartPallet/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (smartPallet,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(smartPallet,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (smartPallet) =>{ - return null -} -const internalRenderExtraFooter = (smartPallet) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (smartPallet,targetComponent) =>{ - const userContext = null - return ( - -{smartPallet.id} -{smartPallet.location} -{smartPallet.contactNumber} -{smartPallet.totalArea} -{smartPallet.latitude} -{smartPallet.longitude} -{smartPallet.warehouse==null?appLocaleName(userContext,"NotAssigned"):smartPallet.warehouse.displayName} - - showTransferModel(targetComponent,"仓库","warehouse","requestCandidateWarehouse", - "transferToAnotherWarehouse","anotherWarehouseId",smartPallet.warehouse?smartPallet.warehouse.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{ moment(smartPallet.lastUpdateTime).format('YYYY-MM-DD')} - - {buildTransferModal(smartPallet,targetComponent)} - - ) - -} - - -const renderPermissionSetting = smartPallet => { - const {SmartPalletBase} = GlobalComponents - return - - -} - - -class SmartPalletPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const smartPallet = this.props.smartPallet; - const { id,displayName, goodsCount } = smartPallet - - - - const cardsData = {cardsName:"智能托盘",cardsFor: "smartPallet",cardsSource: smartPallet, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - smartPallet: state._smartPallet, -}))(Form.create()(SmartPalletPreference)) - diff --git a/bizui/src/bizcomponents/smartpallet/SmartPallet.preference.less b/bizui/src/bizcomponents/smartpallet/SmartPallet.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/smartpallet/SmartPallet.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/smartpallet/SmartPallet.profile.js b/bizui/src/bizcomponents/smartpallet/SmartPallet.profile.js index 8a2c883d2..864668a49 100644 --- a/bizui/src/bizcomponents/smartpallet/SmartPallet.profile.js +++ b/bizui/src/bizcomponents/smartpallet/SmartPallet.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './SmartPallet.preference.less' +import styles from './SmartPallet.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,21 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (smartPallet,targetComponent) =>{ - const userContext = null - return ( - -{smartPallet.id} -{smartPallet.location} -{smartPallet.contactNumber} -{smartPallet.totalArea} -{smartPallet.latitude} -{smartPallet.longitude} -{ moment(smartPallet.lastUpdateTime).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.SmartPalletBase.renderItemOfList(item, targetComponents) + } @@ -68,13 +58,14 @@ class SmartPalletProfile extends Component { const cardsData = {cardsName:"智能托盘",cardsFor: "smartPallet",cardsSource: smartPallet, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -84,7 +75,7 @@ class SmartPalletProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.associateform.js b/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.associateform.js index b02d6b3f5..7e6797e71 100644 --- a/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.associateform.js +++ b/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.associateform.js @@ -19,9 +19,9 @@ const testValues = {}; /* const testValues = { title: '盘点差错', - countTime: '2019-01-01', + countTime: '2016-12-18', summary: '发现错误已经修正完成', - stockCountId: 'GSSC000001', + stockCountId: 'GSSC00000001', } */ diff --git a/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.base.js b/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.base.js index ffa585c30..55089f795 100644 --- a/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.base.js +++ b/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -53,27 +54,27 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({stockCountIssueTrack,targetComponent})=>{ +const renderItemOfList=(stockCountIssueTrack,targetComponent)=>{ - const {StockCountIssueTrackService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {stockCountIssueTrack.id} {stockCountIssueTrack.title} { moment(stockCountIssueTrack.countTime).format('YYYY-MM-DD')} {stockCountIssueTrack.summary} {stockCountIssueTrack.stockCount==null?appLocaleName(userContext,"NotAssigned"):`${stockCountIssueTrack.stockCount.displayName}(${stockCountIssueTrack.stockCount.id})`} - - showTransferModel(targetComponent,"盘点","goodsShelfStockCount",StockCountIssueTrackService.requestCandidateStockCount, - StockCountIssueTrackService.transferToAnotherStockCount,"anotherStockCountId",stockCountIssueTrack.stockCount?stockCountIssueTrack.stockCount.id:"")} - style={{fontSize: 20,color:"red"}} /> - {buildTransferModal(stockCountIssueTrack,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.createform.js b/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.createform.js index f6f03e1a8..d8d1929de 100644 --- a/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.createform.js +++ b/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.createform.js @@ -18,9 +18,9 @@ const testValues = {}; /* const testValues = { title: '盘点差错', - countTime: '2017-02-22', + countTime: '2018-05-07', summary: '发现错误已经修正完成', - stockCountId: 'GSSC000001', + stockCountId: 'GSSC00000001', } */ diff --git a/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.dashboard.js b/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.dashboard.js index 6ba2cc813..9d6e19902 100644 --- a/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.dashboard.js +++ b/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(stockCountIssueTrack)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (stockCountIssueTrack) =>defaultSettingListOf(stockCountIssueTrack, optionList) const internalLargeTextOf = (stockCountIssueTrack) =>{ @@ -145,6 +145,8 @@ class StockCountIssueTrackDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.permission.js b/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.permission.js index bfe89f18c..9acbe35fa 100644 --- a/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.permission.js +++ b/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './StockCountIssueTrack.preference.less' +import styles from './StockCountIssueTrack.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.preference.js b/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.preference.js deleted file mode 100644 index 2af9ef72b..000000000 --- a/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.preference.js +++ /dev/null @@ -1,357 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './StockCountIssueTrack.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (stockCountIssueTrack) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (stockCountIssueTrack) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (stockCountIssueTrack) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {StockCountIssueTrackService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = StockCountIssueTrackService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (stockCountIssueTrack,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=stockCountIssueTrack.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_stockCountIssueTrack/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (stockCountIssueTrack,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(stockCountIssueTrack,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (stockCountIssueTrack) =>{ - return null -} -const internalRenderExtraFooter = (stockCountIssueTrack) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (stockCountIssueTrack,targetComponent) =>{ - const userContext = null - return ( - -{stockCountIssueTrack.id} -{stockCountIssueTrack.title} -{ moment(stockCountIssueTrack.countTime).format('YYYY-MM-DD')} -{stockCountIssueTrack.summary} -{stockCountIssueTrack.stockCount==null?appLocaleName(userContext,"NotAssigned"):stockCountIssueTrack.stockCount.displayName} - - showTransferModel(targetComponent,"盘点","goodsShelfStockCount","requestCandidateStockCount", - "transferToAnotherStockCount","anotherStockCountId",stockCountIssueTrack.stockCount?stockCountIssueTrack.stockCount.id:"")} - style={{fontSize: 20,color:"red"}} /> - - - {buildTransferModal(stockCountIssueTrack,targetComponent)} - - ) - -} - - -const renderPermissionSetting = stockCountIssueTrack => { - const {StockCountIssueTrackBase} = GlobalComponents - return - - -} - - -class StockCountIssueTrackPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const stockCountIssueTrack = this.props.stockCountIssueTrack; - const { id,displayName, } = stockCountIssueTrack - - - - const cardsData = {cardsName:"库存计数问题跟踪",cardsFor: "stockCountIssueTrack",cardsSource: stockCountIssueTrack, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - stockCountIssueTrack: state._stockCountIssueTrack, -}))(Form.create()(StockCountIssueTrackPreference)) - diff --git a/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.preference.less b/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.profile.js b/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.profile.js index b536a5909..4f0ccd81a 100644 --- a/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.profile.js +++ b/bizui/src/bizcomponents/stockcountissuetrack/StockCountIssueTrack.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './StockCountIssueTrack.preference.less' +import styles from './StockCountIssueTrack.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,18 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (stockCountIssueTrack,targetComponent) =>{ - const userContext = null - return ( - -{stockCountIssueTrack.id} -{stockCountIssueTrack.title} -{ moment(stockCountIssueTrack.countTime).format('YYYY-MM-DD')} -{stockCountIssueTrack.summary} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.StockCountIssueTrackBase.renderItemOfList(item, targetComponents) + } @@ -65,13 +58,14 @@ class StockCountIssueTrackProfile extends Component { const cardsData = {cardsName:"库存计数问题跟踪",cardsFor: "stockCountIssueTrack",cardsSource: stockCountIssueTrack, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -81,7 +75,7 @@ class StockCountIssueTrackProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/storagespace/StorageSpace.associateform.js b/bizui/src/bizcomponents/storagespace/StorageSpace.associateform.js index 8216f8ebe..d54ad6d4b 100644 --- a/bizui/src/bizcomponents/storagespace/StorageSpace.associateform.js +++ b/bizui/src/bizcomponents/storagespace/StorageSpace.associateform.js @@ -21,9 +21,9 @@ const testValues = { location: '成都龙泉驿飞鹤路20号存货区', contactNumber: '02887654321', totalArea: '1876平方米', - latitude: '41.35461233666377', - longitude: '130.72358772700971', - warehouseId: 'W000001', + latitude: '41.53200254926138', + longitude: '130.50656779878975', + warehouseId: 'W00000001', } */ diff --git a/bizui/src/bizcomponents/storagespace/StorageSpace.base.js b/bizui/src/bizcomponents/storagespace/StorageSpace.base.js index 27e693d0c..4c9d601c6 100644 --- a/bizui/src/bizcomponents/storagespace/StorageSpace.base.js +++ b/bizui/src/bizcomponents/storagespace/StorageSpace.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -60,30 +61,30 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({storageSpace,targetComponent})=>{ +const renderItemOfList=(storageSpace,targetComponent)=>{ - const {StorageSpaceService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {storageSpace.id} {storageSpace.location} {storageSpace.contactNumber} {storageSpace.totalArea} {storageSpace.warehouse==null?appLocaleName(userContext,"NotAssigned"):`${storageSpace.warehouse.displayName}(${storageSpace.warehouse.id})`} - - showTransferModel(targetComponent,"仓库","warehouse",StorageSpaceService.requestCandidateWarehouse, - StorageSpaceService.transferToAnotherWarehouse,"anotherWarehouseId",storageSpace.warehouse?storageSpace.warehouse.id:"")} - style={{fontSize: 20,color:"red"}} /> {storageSpace.latitude} {storageSpace.longitude} { moment(storageSpace.lastUpdateTime).format('YYYY-MM-DD')} - {buildTransferModal(storageSpace,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/storagespace/StorageSpace.createform.js b/bizui/src/bizcomponents/storagespace/StorageSpace.createform.js index 721ba3092..d3820d287 100644 --- a/bizui/src/bizcomponents/storagespace/StorageSpace.createform.js +++ b/bizui/src/bizcomponents/storagespace/StorageSpace.createform.js @@ -20,9 +20,9 @@ const testValues = { location: '成都龙泉驿飞鹤路20号存货区', contactNumber: '02887654321', totalArea: '1876平方米', - latitude: '40.6594820704173', - longitude: '129.36374379646975', - warehouseId: 'W000001', + latitude: '42.07838586572504', + longitude: '129.73259662178845', + warehouseId: 'W00000001', } */ diff --git a/bizui/src/bizcomponents/storagespace/StorageSpace.dashboard.js b/bizui/src/bizcomponents/storagespace/StorageSpace.dashboard.js index 4ee7684d8..6f860f11a 100644 --- a/bizui/src/bizcomponents/storagespace/StorageSpace.dashboard.js +++ b/bizui/src/bizcomponents/storagespace/StorageSpace.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(storageSpace)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (storageSpace) =>defaultSettingListOf(storageSpace, optionList) const internalLargeTextOf = (storageSpace) =>{ @@ -134,7 +134,7 @@ class StorageSpaceDashboard extends Component { const cardsData = {cardsName:"存货区",cardsFor: "storageSpace", cardsSource: this.props.storageSpace,returnURL,displayName, subItems: [ -{name: 'goodsShelfList', displayName:'货架',type:'goodsShelf',count:goodsShelfCount,addFunction: true, role: 'goodsShelf', metaInfo: goodsShelfListMetaInfo}, +{name: 'goodsShelfList', displayName:'货架',type:'goodsShelf',count:goodsShelfCount,addFunction: true, role: 'goodsShelf', metaInfo: goodsShelfListMetaInfo, renderItem: GlobalComponents.GoodsShelfBase.renderItemOfList}, ], }; @@ -149,6 +149,8 @@ class StorageSpaceDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/storagespace/StorageSpace.permission.js b/bizui/src/bizcomponents/storagespace/StorageSpace.permission.js index 5ff055071..604043166 100644 --- a/bizui/src/bizcomponents/storagespace/StorageSpace.permission.js +++ b/bizui/src/bizcomponents/storagespace/StorageSpace.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './StorageSpace.preference.less' +import styles from './StorageSpace.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/storagespace/StorageSpace.preference.js b/bizui/src/bizcomponents/storagespace/StorageSpace.preference.js deleted file mode 100644 index 24ad3bcf9..000000000 --- a/bizui/src/bizcomponents/storagespace/StorageSpace.preference.js +++ /dev/null @@ -1,360 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './StorageSpace.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (storageSpace) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (storageSpace) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (storageSpace) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {StorageSpaceService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = StorageSpaceService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (storageSpace,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=storageSpace.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_storageSpace/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (storageSpace,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(storageSpace,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (storageSpace) =>{ - return null -} -const internalRenderExtraFooter = (storageSpace) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (storageSpace,targetComponent) =>{ - const userContext = null - return ( - -{storageSpace.id} -{storageSpace.location} -{storageSpace.contactNumber} -{storageSpace.totalArea} -{storageSpace.warehouse==null?appLocaleName(userContext,"NotAssigned"):storageSpace.warehouse.displayName} - - showTransferModel(targetComponent,"仓库","warehouse","requestCandidateWarehouse", - "transferToAnotherWarehouse","anotherWarehouseId",storageSpace.warehouse?storageSpace.warehouse.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{storageSpace.latitude} -{storageSpace.longitude} -{ moment(storageSpace.lastUpdateTime).format('YYYY-MM-DD')} - - {buildTransferModal(storageSpace,targetComponent)} - - ) - -} - - -const renderPermissionSetting = storageSpace => { - const {StorageSpaceBase} = GlobalComponents - return - - -} - - -class StorageSpacePreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const storageSpace = this.props.storageSpace; - const { id,displayName, goodsShelfCount } = storageSpace - - - - const cardsData = {cardsName:"存货区",cardsFor: "storageSpace",cardsSource: storageSpace, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - storageSpace: state._storageSpace, -}))(Form.create()(StorageSpacePreference)) - diff --git a/bizui/src/bizcomponents/storagespace/StorageSpace.preference.less b/bizui/src/bizcomponents/storagespace/StorageSpace.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/storagespace/StorageSpace.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/storagespace/StorageSpace.profile.js b/bizui/src/bizcomponents/storagespace/StorageSpace.profile.js index e004cb9df..b12f9aa58 100644 --- a/bizui/src/bizcomponents/storagespace/StorageSpace.profile.js +++ b/bizui/src/bizcomponents/storagespace/StorageSpace.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './StorageSpace.preference.less' +import styles from './StorageSpace.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,21 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (storageSpace,targetComponent) =>{ - const userContext = null - return ( - -{storageSpace.id} -{storageSpace.location} -{storageSpace.contactNumber} -{storageSpace.totalArea} -{storageSpace.latitude} -{storageSpace.longitude} -{ moment(storageSpace.lastUpdateTime).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.StorageSpaceBase.renderItemOfList(item, targetComponents) + } @@ -68,13 +58,14 @@ class StorageSpaceProfile extends Component { const cardsData = {cardsName:"存货区",cardsFor: "storageSpace",cardsSource: storageSpace, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -84,7 +75,7 @@ class StorageSpaceProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/supplierproduct/SupplierProduct.associateform.js b/bizui/src/bizcomponents/supplierproduct/SupplierProduct.associateform.js index 1b581ab34..80f902f43 100644 --- a/bizui/src/bizcomponents/supplierproduct/SupplierProduct.associateform.js +++ b/bizui/src/bizcomponents/supplierproduct/SupplierProduct.associateform.js @@ -21,7 +21,7 @@ const testValues = { productName: '黑人牙膏', productDescription: '最好的黑人牙膏,只卖3块喽', productUnit: '件', - supplierId: 'GS000001', + supplierId: 'GS00000001', } */ diff --git a/bizui/src/bizcomponents/supplierproduct/SupplierProduct.base.js b/bizui/src/bizcomponents/supplierproduct/SupplierProduct.base.js index 5751b9697..52f448e72 100644 --- a/bizui/src/bizcomponents/supplierproduct/SupplierProduct.base.js +++ b/bizui/src/bizcomponents/supplierproduct/SupplierProduct.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -54,27 +55,27 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({supplierProduct,targetComponent})=>{ +const renderItemOfList=(supplierProduct,targetComponent)=>{ - const {SupplierProductService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {supplierProduct.id} {supplierProduct.productName} {supplierProduct.productDescription} {supplierProduct.productUnit} {supplierProduct.supplier==null?appLocaleName(userContext,"NotAssigned"):`${supplierProduct.supplier.displayName}(${supplierProduct.supplier.id})`} - - showTransferModel(targetComponent,"供应商","goodsSupplier",SupplierProductService.requestCandidateSupplier, - SupplierProductService.transferToAnotherSupplier,"anotherSupplierId",supplierProduct.supplier?supplierProduct.supplier.id:"")} - style={{fontSize: 20,color:"red"}} /> - {buildTransferModal(supplierProduct,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/supplierproduct/SupplierProduct.createform.js b/bizui/src/bizcomponents/supplierproduct/SupplierProduct.createform.js index 303598a95..706638c06 100644 --- a/bizui/src/bizcomponents/supplierproduct/SupplierProduct.createform.js +++ b/bizui/src/bizcomponents/supplierproduct/SupplierProduct.createform.js @@ -20,7 +20,7 @@ const testValues = { productName: '黑人牙膏', productDescription: '最好的黑人牙膏,只卖3块喽', productUnit: '件', - supplierId: 'GS000001', + supplierId: 'GS00000001', } */ diff --git a/bizui/src/bizcomponents/supplierproduct/SupplierProduct.dashboard.js b/bizui/src/bizcomponents/supplierproduct/SupplierProduct.dashboard.js index d541e8152..4c3bad11d 100644 --- a/bizui/src/bizcomponents/supplierproduct/SupplierProduct.dashboard.js +++ b/bizui/src/bizcomponents/supplierproduct/SupplierProduct.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(supplierProduct)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (supplierProduct) =>defaultSettingListOf(supplierProduct, optionList) const internalLargeTextOf = (supplierProduct) =>{ @@ -131,7 +131,7 @@ class SupplierProductDashboard extends Component { const cardsData = {cardsName:"供应商的产品",cardsFor: "supplierProduct", cardsSource: this.props.supplierProduct,returnURL,displayName, subItems: [ -{name: 'productSupplyDurationList', displayName:'产品供应时间',type:'productSupplyDuration',count:productSupplyDurationCount,addFunction: true, role: 'productSupplyDuration', metaInfo: productSupplyDurationListMetaInfo}, +{name: 'productSupplyDurationList', displayName:'产品供应时间',type:'productSupplyDuration',count:productSupplyDurationCount,addFunction: true, role: 'productSupplyDuration', metaInfo: productSupplyDurationListMetaInfo, renderItem: GlobalComponents.ProductSupplyDurationBase.renderItemOfList}, ], }; @@ -146,6 +146,8 @@ class SupplierProductDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/supplierproduct/SupplierProduct.permission.js b/bizui/src/bizcomponents/supplierproduct/SupplierProduct.permission.js index 437db02eb..196ea59f8 100644 --- a/bizui/src/bizcomponents/supplierproduct/SupplierProduct.permission.js +++ b/bizui/src/bizcomponents/supplierproduct/SupplierProduct.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './SupplierProduct.preference.less' +import styles from './SupplierProduct.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/supplierproduct/SupplierProduct.preference.js b/bizui/src/bizcomponents/supplierproduct/SupplierProduct.preference.js deleted file mode 100644 index 0cb114caf..000000000 --- a/bizui/src/bizcomponents/supplierproduct/SupplierProduct.preference.js +++ /dev/null @@ -1,357 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './SupplierProduct.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (supplierProduct) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (supplierProduct) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (supplierProduct) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {SupplierProductService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = SupplierProductService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (supplierProduct,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=supplierProduct.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_supplierProduct/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (supplierProduct,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(supplierProduct,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (supplierProduct) =>{ - return null -} -const internalRenderExtraFooter = (supplierProduct) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (supplierProduct,targetComponent) =>{ - const userContext = null - return ( - -{supplierProduct.id} -{supplierProduct.productName} -{supplierProduct.productDescription} -{supplierProduct.productUnit} -{supplierProduct.supplier==null?appLocaleName(userContext,"NotAssigned"):supplierProduct.supplier.displayName} - - showTransferModel(targetComponent,"供应商","goodsSupplier","requestCandidateSupplier", - "transferToAnotherSupplier","anotherSupplierId",supplierProduct.supplier?supplierProduct.supplier.id:"")} - style={{fontSize: 20,color:"red"}} /> - - - {buildTransferModal(supplierProduct,targetComponent)} - - ) - -} - - -const renderPermissionSetting = supplierProduct => { - const {SupplierProductBase} = GlobalComponents - return - - -} - - -class SupplierProductPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const supplierProduct = this.props.supplierProduct; - const { id,displayName, productSupplyDurationCount } = supplierProduct - - - - const cardsData = {cardsName:"供应商的产品",cardsFor: "supplierProduct",cardsSource: supplierProduct, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - supplierProduct: state._supplierProduct, -}))(Form.create()(SupplierProductPreference)) - diff --git a/bizui/src/bizcomponents/supplierproduct/SupplierProduct.preference.less b/bizui/src/bizcomponents/supplierproduct/SupplierProduct.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/supplierproduct/SupplierProduct.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/supplierproduct/SupplierProduct.profile.js b/bizui/src/bizcomponents/supplierproduct/SupplierProduct.profile.js index b8c86f9ea..51e754f0a 100644 --- a/bizui/src/bizcomponents/supplierproduct/SupplierProduct.profile.js +++ b/bizui/src/bizcomponents/supplierproduct/SupplierProduct.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './SupplierProduct.preference.less' +import styles from './SupplierProduct.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,18 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (supplierProduct,targetComponent) =>{ - const userContext = null - return ( - -{supplierProduct.id} -{supplierProduct.productName} -{supplierProduct.productDescription} -{supplierProduct.productUnit} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.SupplierProductBase.renderItemOfList(item, targetComponents) + } @@ -65,13 +58,14 @@ class SupplierProductProfile extends Component { const cardsData = {cardsName:"供应商的产品",cardsFor: "supplierProduct",cardsSource: supplierProduct, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -81,7 +75,7 @@ class SupplierProductProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/supplierspace/SupplierSpace.associateform.js b/bizui/src/bizcomponents/supplierspace/SupplierSpace.associateform.js index aa1b8dc34..7e62ef45e 100644 --- a/bizui/src/bizcomponents/supplierspace/SupplierSpace.associateform.js +++ b/bizui/src/bizcomponents/supplierspace/SupplierSpace.associateform.js @@ -21,9 +21,9 @@ const testValues = { location: '成都龙泉驿飞鹤路20号供货商独立管理区', contactNumber: '02887654321', totalArea: '1876平方米', - latitude: '40.78923444912702', - longitude: '131.8919668645188', - warehouseId: 'W000001', + latitude: '42.184505075799606', + longitude: '132.21457312328997', + warehouseId: 'W00000001', } */ diff --git a/bizui/src/bizcomponents/supplierspace/SupplierSpace.base.js b/bizui/src/bizcomponents/supplierspace/SupplierSpace.base.js index 20e6a7e15..3959a71ba 100644 --- a/bizui/src/bizcomponents/supplierspace/SupplierSpace.base.js +++ b/bizui/src/bizcomponents/supplierspace/SupplierSpace.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -60,30 +61,30 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({supplierSpace,targetComponent})=>{ +const renderItemOfList=(supplierSpace,targetComponent)=>{ - const {SupplierSpaceService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {supplierSpace.id} {supplierSpace.location} {supplierSpace.contactNumber} {supplierSpace.totalArea} {supplierSpace.warehouse==null?appLocaleName(userContext,"NotAssigned"):`${supplierSpace.warehouse.displayName}(${supplierSpace.warehouse.id})`} - - showTransferModel(targetComponent,"仓库","warehouse",SupplierSpaceService.requestCandidateWarehouse, - SupplierSpaceService.transferToAnotherWarehouse,"anotherWarehouseId",supplierSpace.warehouse?supplierSpace.warehouse.id:"")} - style={{fontSize: 20,color:"red"}} /> {supplierSpace.latitude} {supplierSpace.longitude} { moment(supplierSpace.lastUpdateTime).format('YYYY-MM-DD')} - {buildTransferModal(supplierSpace,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/supplierspace/SupplierSpace.createform.js b/bizui/src/bizcomponents/supplierspace/SupplierSpace.createform.js index 43faec9b9..ce49f67a4 100644 --- a/bizui/src/bizcomponents/supplierspace/SupplierSpace.createform.js +++ b/bizui/src/bizcomponents/supplierspace/SupplierSpace.createform.js @@ -20,9 +20,9 @@ const testValues = { location: '成都龙泉驿飞鹤路20号供货商独立管理区', contactNumber: '02887654321', totalArea: '1876平方米', - latitude: '41.79957977000916', - longitude: '131.6600593819183', - warehouseId: 'W000001', + latitude: '41.871846270095546', + longitude: '130.70088011713295', + warehouseId: 'W00000001', } */ diff --git a/bizui/src/bizcomponents/supplierspace/SupplierSpace.dashboard.js b/bizui/src/bizcomponents/supplierspace/SupplierSpace.dashboard.js index 51d7dbf12..ba4b8019f 100644 --- a/bizui/src/bizcomponents/supplierspace/SupplierSpace.dashboard.js +++ b/bizui/src/bizcomponents/supplierspace/SupplierSpace.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(supplierSpace)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (supplierSpace) =>defaultSettingListOf(supplierSpace, optionList) const internalLargeTextOf = (supplierSpace) =>{ @@ -134,7 +134,7 @@ class SupplierSpaceDashboard extends Component { const cardsData = {cardsName:"供应商的空间",cardsFor: "supplierSpace", cardsSource: this.props.supplierSpace,returnURL,displayName, subItems: [ -{name: 'goodsShelfList', displayName:'货架',type:'goodsShelf',count:goodsShelfCount,addFunction: true, role: 'goodsShelf', metaInfo: goodsShelfListMetaInfo}, +{name: 'goodsShelfList', displayName:'货架',type:'goodsShelf',count:goodsShelfCount,addFunction: true, role: 'goodsShelf', metaInfo: goodsShelfListMetaInfo, renderItem: GlobalComponents.GoodsShelfBase.renderItemOfList}, ], }; @@ -149,6 +149,8 @@ class SupplierSpaceDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/supplierspace/SupplierSpace.permission.js b/bizui/src/bizcomponents/supplierspace/SupplierSpace.permission.js index f833b8268..178333cbc 100644 --- a/bizui/src/bizcomponents/supplierspace/SupplierSpace.permission.js +++ b/bizui/src/bizcomponents/supplierspace/SupplierSpace.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './SupplierSpace.preference.less' +import styles from './SupplierSpace.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/supplierspace/SupplierSpace.preference.js b/bizui/src/bizcomponents/supplierspace/SupplierSpace.preference.js deleted file mode 100644 index 9c5aec65f..000000000 --- a/bizui/src/bizcomponents/supplierspace/SupplierSpace.preference.js +++ /dev/null @@ -1,360 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './SupplierSpace.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (supplierSpace) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (supplierSpace) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (supplierSpace) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {SupplierSpaceService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = SupplierSpaceService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (supplierSpace,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=supplierSpace.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_supplierSpace/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (supplierSpace,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(supplierSpace,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (supplierSpace) =>{ - return null -} -const internalRenderExtraFooter = (supplierSpace) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (supplierSpace,targetComponent) =>{ - const userContext = null - return ( - -{supplierSpace.id} -{supplierSpace.location} -{supplierSpace.contactNumber} -{supplierSpace.totalArea} -{supplierSpace.warehouse==null?appLocaleName(userContext,"NotAssigned"):supplierSpace.warehouse.displayName} - - showTransferModel(targetComponent,"仓库","warehouse","requestCandidateWarehouse", - "transferToAnotherWarehouse","anotherWarehouseId",supplierSpace.warehouse?supplierSpace.warehouse.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{supplierSpace.latitude} -{supplierSpace.longitude} -{ moment(supplierSpace.lastUpdateTime).format('YYYY-MM-DD')} - - {buildTransferModal(supplierSpace,targetComponent)} - - ) - -} - - -const renderPermissionSetting = supplierSpace => { - const {SupplierSpaceBase} = GlobalComponents - return - - -} - - -class SupplierSpacePreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const supplierSpace = this.props.supplierSpace; - const { id,displayName, goodsShelfCount } = supplierSpace - - - - const cardsData = {cardsName:"供应商的空间",cardsFor: "supplierSpace",cardsSource: supplierSpace, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - supplierSpace: state._supplierSpace, -}))(Form.create()(SupplierSpacePreference)) - diff --git a/bizui/src/bizcomponents/supplierspace/SupplierSpace.preference.less b/bizui/src/bizcomponents/supplierspace/SupplierSpace.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/supplierspace/SupplierSpace.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/supplierspace/SupplierSpace.profile.js b/bizui/src/bizcomponents/supplierspace/SupplierSpace.profile.js index 6ebd14c63..e51aef4fb 100644 --- a/bizui/src/bizcomponents/supplierspace/SupplierSpace.profile.js +++ b/bizui/src/bizcomponents/supplierspace/SupplierSpace.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './SupplierSpace.preference.less' +import styles from './SupplierSpace.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,21 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (supplierSpace,targetComponent) =>{ - const userContext = null - return ( - -{supplierSpace.id} -{supplierSpace.location} -{supplierSpace.contactNumber} -{supplierSpace.totalArea} -{supplierSpace.latitude} -{supplierSpace.longitude} -{ moment(supplierSpace.lastUpdateTime).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.SupplierSpaceBase.renderItemOfList(item, targetComponents) + } @@ -68,13 +58,14 @@ class SupplierSpaceProfile extends Component { const cardsData = {cardsName:"供应商的空间",cardsFor: "supplierSpace",cardsSource: supplierSpace, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -84,7 +75,7 @@ class SupplierSpaceProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/supplyorder/SupplyOrder.associateform.js b/bizui/src/bizcomponents/supplyorder/SupplyOrder.associateform.js index 12288b5cd..a0d11feb7 100644 --- a/bizui/src/bizcomponents/supplyorder/SupplyOrder.associateform.js +++ b/bizui/src/bizcomponents/supplyorder/SupplyOrder.associateform.js @@ -19,9 +19,9 @@ const testValues = {}; /* const testValues = { title: '双链给供货商下的订单', - totalAmount: '2978345472.00', - buyerId: 'RSCC000001', - sellerId: 'GS000001', + totalAmount: '2220015104.00', + buyerId: 'RSCC00000001', + sellerId: 'GS00000001', } */ diff --git a/bizui/src/bizcomponents/supplyorder/SupplyOrder.base.js b/bizui/src/bizcomponents/supplyorder/SupplyOrder.base.js index 379d82965..df6b240b0 100644 --- a/bizui/src/bizcomponents/supplyorder/SupplyOrder.base.js +++ b/bizui/src/bizcomponents/supplyorder/SupplyOrder.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -46,11 +47,11 @@ const fieldLabels = { title: '头衔', totalAmount: '总金额', confirmation: '确认', - approval: '验收', - processing: '处理', - picking: '捡货', - shipment: '装运', - delivery: '送货', + approval: '批准', + processing: '过程', + picking: '选择', + shipment: '船', + delivery: '交付', lastUpdateTime: '最后更新时间', currentStatus: '当前状态', @@ -73,28 +74,28 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({supplyOrder,targetComponent})=>{ +const renderItemOfList=(supplyOrder,targetComponent)=>{ - const {SupplyOrderService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {supplyOrder.id} {supplyOrder.seller==null?appLocaleName(userContext,"NotAssigned"):`${supplyOrder.seller.displayName}(${supplyOrder.seller.id})`} - - showTransferModel(targetComponent,"卖方","goodsSupplier",SupplyOrderService.requestCandidateSeller, - SupplyOrderService.transferToAnotherSeller,"anotherSellerId",supplyOrder.seller?supplyOrder.seller.id:"")} - style={{fontSize: 20,color:"red"}} /> {supplyOrder.title} {supplyOrder.totalAmount} { moment(supplyOrder.lastUpdateTime).format('YYYY-MM-DD')} {supplyOrder.currentStatus} - {buildTransferModal(supplyOrder,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/supplyorder/SupplyOrder.createform.js b/bizui/src/bizcomponents/supplyorder/SupplyOrder.createform.js index 61646c8d8..a3a4b7c60 100644 --- a/bizui/src/bizcomponents/supplyorder/SupplyOrder.createform.js +++ b/bizui/src/bizcomponents/supplyorder/SupplyOrder.createform.js @@ -18,9 +18,9 @@ const testValues = {}; /* const testValues = { title: '双链给供货商下的订单', - totalAmount: '2510325504.00', - buyerId: 'RSCC000001', - sellerId: 'GS000001', + totalAmount: '2675370752.00', + buyerId: 'RSCC00000001', + sellerId: 'GS00000001', } */ diff --git a/bizui/src/bizcomponents/supplyorder/SupplyOrder.dashboard.js b/bizui/src/bizcomponents/supplyorder/SupplyOrder.dashboard.js index 3c05ed169..3a7eb2c7d 100644 --- a/bizui/src/bizcomponents/supplyorder/SupplyOrder.dashboard.js +++ b/bizui/src/bizcomponents/supplyorder/SupplyOrder.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(supplyOrder)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (supplyOrder) =>defaultSettingListOf(supplyOrder, optionList) const internalLargeTextOf = (supplyOrder) =>{ @@ -132,10 +132,10 @@ class SupplyOrderDashboard extends Component { const cardsData = {cardsName:"供应订单",cardsFor: "supplyOrder", cardsSource: this.props.supplyOrder,returnURL,displayName, subItems: [ -{name: 'supplyOrderLineItemList', displayName:'供应订单行项目',type:'supplyOrderLineItem',count:supplyOrderLineItemCount,addFunction: true, role: 'supplyOrderLineItem', metaInfo: supplyOrderLineItemListMetaInfo}, -{name: 'supplyOrderShippingGroupList', displayName:'供应订单送货分组',type:'supplyOrderShippingGroup',count:supplyOrderShippingGroupCount,addFunction: true, role: 'supplyOrderShippingGroup', metaInfo: supplyOrderShippingGroupListMetaInfo}, -{name: 'supplyOrderPaymentGroupList', displayName:'供应订单付款组',type:'supplyOrderPaymentGroup',count:supplyOrderPaymentGroupCount,addFunction: true, role: 'supplyOrderPaymentGroup', metaInfo: supplyOrderPaymentGroupListMetaInfo}, -{name: 'goodsList', displayName:'货物',type:'goods',count:goodsCount,addFunction: true, role: 'goods', metaInfo: goodsListMetaInfo}, +{name: 'supplyOrderLineItemList', displayName:'供应订单行项目',type:'supplyOrderLineItem',count:supplyOrderLineItemCount,addFunction: true, role: 'supplyOrderLineItem', metaInfo: supplyOrderLineItemListMetaInfo, renderItem: GlobalComponents.SupplyOrderLineItemBase.renderItemOfList}, +{name: 'supplyOrderShippingGroupList', displayName:'供应订单送货分组',type:'supplyOrderShippingGroup',count:supplyOrderShippingGroupCount,addFunction: true, role: 'supplyOrderShippingGroup', metaInfo: supplyOrderShippingGroupListMetaInfo, renderItem: GlobalComponents.SupplyOrderShippingGroupBase.renderItemOfList}, +{name: 'supplyOrderPaymentGroupList', displayName:'供应订单付款组',type:'supplyOrderPaymentGroup',count:supplyOrderPaymentGroupCount,addFunction: true, role: 'supplyOrderPaymentGroup', metaInfo: supplyOrderPaymentGroupListMetaInfo, renderItem: GlobalComponents.SupplyOrderPaymentGroupBase.renderItemOfList}, +{name: 'goodsList', displayName:'货物',type:'goods',count:goodsCount,addFunction: true, role: 'goods', metaInfo: goodsListMetaInfo, renderItem: GlobalComponents.GoodsBase.renderItemOfList}, ], }; @@ -150,6 +150,8 @@ class SupplyOrderDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/supplyorder/SupplyOrder.permission.js b/bizui/src/bizcomponents/supplyorder/SupplyOrder.permission.js index 09e662d46..4896dcc50 100644 --- a/bizui/src/bizcomponents/supplyorder/SupplyOrder.permission.js +++ b/bizui/src/bizcomponents/supplyorder/SupplyOrder.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './SupplyOrder.preference.less' +import styles from './SupplyOrder.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/supplyorder/SupplyOrder.preference.js b/bizui/src/bizcomponents/supplyorder/SupplyOrder.preference.js deleted file mode 100644 index 4bbb23bac..000000000 --- a/bizui/src/bizcomponents/supplyorder/SupplyOrder.preference.js +++ /dev/null @@ -1,358 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './SupplyOrder.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (supplyOrder) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (supplyOrder) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (supplyOrder) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {SupplyOrderService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = SupplyOrderService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (supplyOrder,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=supplyOrder.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_supplyOrder/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (supplyOrder,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(supplyOrder,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (supplyOrder) =>{ - return null -} -const internalRenderExtraFooter = (supplyOrder) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (supplyOrder,targetComponent) =>{ - const userContext = null - return ( - -{supplyOrder.id} -{supplyOrder.seller==null?appLocaleName(userContext,"NotAssigned"):supplyOrder.seller.displayName} - - showTransferModel(targetComponent,"卖方","goodsSupplier","requestCandidateSeller", - "transferToAnotherSeller","anotherSellerId",supplyOrder.seller?supplyOrder.seller.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{supplyOrder.title} -{supplyOrder.totalAmount} -{ moment(supplyOrder.lastUpdateTime).format('YYYY-MM-DD')} -{supplyOrder.currentStatus} - - {buildTransferModal(supplyOrder,targetComponent)} - - ) - -} - - -const renderPermissionSetting = supplyOrder => { - const {SupplyOrderBase} = GlobalComponents - return - - -} - - -class SupplyOrderPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const supplyOrder = this.props.supplyOrder; - const { id,displayName, supplyOrderLineItemCount, supplyOrderShippingGroupCount, supplyOrderPaymentGroupCount, goodsCount } = supplyOrder - - - - const cardsData = {cardsName:"供应订单",cardsFor: "supplyOrder",cardsSource: supplyOrder, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - supplyOrder: state._supplyOrder, -}))(Form.create()(SupplyOrderPreference)) - diff --git a/bizui/src/bizcomponents/supplyorder/SupplyOrder.preference.less b/bizui/src/bizcomponents/supplyorder/SupplyOrder.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/supplyorder/SupplyOrder.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/supplyorder/SupplyOrder.profile.js b/bizui/src/bizcomponents/supplyorder/SupplyOrder.profile.js index 8a7a72c77..cdf8137b3 100644 --- a/bizui/src/bizcomponents/supplyorder/SupplyOrder.profile.js +++ b/bizui/src/bizcomponents/supplyorder/SupplyOrder.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './SupplyOrder.preference.less' +import styles from './SupplyOrder.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,19 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (supplyOrder,targetComponent) =>{ - const userContext = null - return ( - -{supplyOrder.id} -{supplyOrder.title} -{supplyOrder.totalAmount} -{ moment(supplyOrder.lastUpdateTime).format('YYYY-MM-DD')} -{supplyOrder.currentStatus} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.SupplyOrderBase.renderItemOfList(item, targetComponents) + } @@ -66,13 +58,14 @@ class SupplyOrderProfile extends Component { const cardsData = {cardsName:"供应订单",cardsFor: "supplyOrder",cardsSource: supplyOrder, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -82,7 +75,7 @@ class SupplyOrderProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.associateform.js b/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.associateform.js index 88a7030ed..0784a096b 100644 --- a/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.associateform.js +++ b/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { who: '批准者', - approveTime: '2017-01-13', + approveTime: '2017-09-21', } */ diff --git a/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.base.js b/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.base.js index c4553c4eb..9001ec1ec 100644 --- a/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.base.js +++ b/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -51,20 +52,24 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({supplyOrderApproval,targetComponent})=>{ +const renderItemOfList=(supplyOrderApproval,targetComponent)=>{ - const {SupplyOrderApprovalService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {supplyOrderApproval.id} {supplyOrderApproval.who} { moment(supplyOrderApproval.approveTime).format('YYYY-MM-DD')} - {buildTransferModal(supplyOrderApproval,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.createform.js b/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.createform.js index a1363c32e..4da55af3a 100644 --- a/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.createform.js +++ b/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { who: '批准者', - approveTime: '2016-07-24', + approveTime: '2017-06-08', } */ diff --git a/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.dashboard.js b/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.dashboard.js index e004666d6..c1169be95 100644 --- a/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.dashboard.js +++ b/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(supplyOrderApproval)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (supplyOrderApproval) =>defaultSettingListOf(supplyOrderApproval, optionList) const internalLargeTextOf = (supplyOrderApproval) =>{ @@ -124,8 +124,8 @@ class SupplyOrderApprovalDashboard extends Component { const cardsData = {cardsName:"供应订单审批",cardsFor: "supplyOrderApproval", cardsSource: this.props.supplyOrderApproval,returnURL,displayName, subItems: [ -{name: 'consumerOrderList', displayName:'消费者订单',type:'consumerOrder',count:consumerOrderCount,addFunction: true, role: 'consumerOrder', metaInfo: consumerOrderListMetaInfo}, -{name: 'supplyOrderList', displayName:'供应订单',type:'supplyOrder',count:supplyOrderCount,addFunction: true, role: 'supplyOrder', metaInfo: supplyOrderListMetaInfo}, +{name: 'consumerOrderList', displayName:'消费者订单',type:'consumerOrder',count:consumerOrderCount,addFunction: true, role: 'consumerOrder', metaInfo: consumerOrderListMetaInfo, renderItem: GlobalComponents.ConsumerOrderBase.renderItemOfList}, +{name: 'supplyOrderList', displayName:'供应订单',type:'supplyOrder',count:supplyOrderCount,addFunction: true, role: 'supplyOrder', metaInfo: supplyOrderListMetaInfo, renderItem: GlobalComponents.SupplyOrderBase.renderItemOfList}, ], }; @@ -140,6 +140,8 @@ class SupplyOrderApprovalDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.permission.js b/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.permission.js index 139405876..0edf11dcb 100644 --- a/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.permission.js +++ b/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './SupplyOrderApproval.preference.less' +import styles from './SupplyOrderApproval.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.preference.js b/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.preference.js deleted file mode 100644 index bd4a7de76..000000000 --- a/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.preference.js +++ /dev/null @@ -1,350 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './SupplyOrderApproval.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (supplyOrderApproval) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (supplyOrderApproval) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (supplyOrderApproval) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {SupplyOrderApprovalService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = SupplyOrderApprovalService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (supplyOrderApproval,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=supplyOrderApproval.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_supplyOrderApproval/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (supplyOrderApproval,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(supplyOrderApproval,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (supplyOrderApproval) =>{ - return null -} -const internalRenderExtraFooter = (supplyOrderApproval) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (supplyOrderApproval,targetComponent) =>{ - const userContext = null - return ( - -{supplyOrderApproval.id} -{supplyOrderApproval.who} -{ moment(supplyOrderApproval.approveTime).format('YYYY-MM-DD')} - - {buildTransferModal(supplyOrderApproval,targetComponent)} - - ) - -} - - -const renderPermissionSetting = supplyOrderApproval => { - const {SupplyOrderApprovalBase} = GlobalComponents - return - - -} - - -class SupplyOrderApprovalPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const supplyOrderApproval = this.props.supplyOrderApproval; - const { id,displayName, consumerOrderCount, supplyOrderCount } = supplyOrderApproval - - - - const cardsData = {cardsName:"供应订单审批",cardsFor: "supplyOrderApproval",cardsSource: supplyOrderApproval, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - supplyOrderApproval: state._supplyOrderApproval, -}))(Form.create()(SupplyOrderApprovalPreference)) - diff --git a/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.preference.less b/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.profile.js b/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.profile.js index b4660bfe0..87d82f283 100644 --- a/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.profile.js +++ b/bizui/src/bizcomponents/supplyorderapproval/SupplyOrderApproval.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './SupplyOrderApproval.preference.less' +import styles from './SupplyOrderApproval.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,17 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (supplyOrderApproval,targetComponent) =>{ - const userContext = null - return ( - -{supplyOrderApproval.id} -{supplyOrderApproval.who} -{ moment(supplyOrderApproval.approveTime).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.SupplyOrderApprovalBase.renderItemOfList(item, targetComponents) + } @@ -64,13 +58,14 @@ class SupplyOrderApprovalProfile extends Component { const cardsData = {cardsName:"供应订单审批",cardsFor: "supplyOrderApproval",cardsSource: supplyOrderApproval, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -80,7 +75,7 @@ class SupplyOrderApprovalProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.associateform.js b/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.associateform.js index 8a787a2c5..e3a4560d8 100644 --- a/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.associateform.js +++ b/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { who: '确认者', - confirmTime: '2017-09-05', + confirmTime: '2017-07-14', } */ diff --git a/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.base.js b/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.base.js index 195969ae1..9403869a1 100644 --- a/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.base.js +++ b/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -51,20 +52,24 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({supplyOrderConfirmation,targetComponent})=>{ +const renderItemOfList=(supplyOrderConfirmation,targetComponent)=>{ - const {SupplyOrderConfirmationService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {supplyOrderConfirmation.id} {supplyOrderConfirmation.who} { moment(supplyOrderConfirmation.confirmTime).format('YYYY-MM-DD')} - {buildTransferModal(supplyOrderConfirmation,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.createform.js b/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.createform.js index d5a7ba834..24d935444 100644 --- a/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.createform.js +++ b/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { who: '确认者', - confirmTime: '2016-10-22', + confirmTime: '2018-06-29', } */ diff --git a/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.dashboard.js b/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.dashboard.js index dbaf6a900..3280ca0b9 100644 --- a/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.dashboard.js +++ b/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(supplyOrderConfirmation)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (supplyOrderConfirmation) =>defaultSettingListOf(supplyOrderConfirmation, optionList) const internalLargeTextOf = (supplyOrderConfirmation) =>{ @@ -124,8 +124,8 @@ class SupplyOrderConfirmationDashboard extends Component { const cardsData = {cardsName:"供应订单确认",cardsFor: "supplyOrderConfirmation", cardsSource: this.props.supplyOrderConfirmation,returnURL,displayName, subItems: [ -{name: 'consumerOrderList', displayName:'消费者订单',type:'consumerOrder',count:consumerOrderCount,addFunction: true, role: 'consumerOrder', metaInfo: consumerOrderListMetaInfo}, -{name: 'supplyOrderList', displayName:'供应订单',type:'supplyOrder',count:supplyOrderCount,addFunction: true, role: 'supplyOrder', metaInfo: supplyOrderListMetaInfo}, +{name: 'consumerOrderList', displayName:'消费者订单',type:'consumerOrder',count:consumerOrderCount,addFunction: true, role: 'consumerOrder', metaInfo: consumerOrderListMetaInfo, renderItem: GlobalComponents.ConsumerOrderBase.renderItemOfList}, +{name: 'supplyOrderList', displayName:'供应订单',type:'supplyOrder',count:supplyOrderCount,addFunction: true, role: 'supplyOrder', metaInfo: supplyOrderListMetaInfo, renderItem: GlobalComponents.SupplyOrderBase.renderItemOfList}, ], }; @@ -140,6 +140,8 @@ class SupplyOrderConfirmationDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.permission.js b/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.permission.js index e5cc21bcc..5285deb0e 100644 --- a/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.permission.js +++ b/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './SupplyOrderConfirmation.preference.less' +import styles from './SupplyOrderConfirmation.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.preference.js b/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.preference.js deleted file mode 100644 index c24ec0582..000000000 --- a/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.preference.js +++ /dev/null @@ -1,350 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './SupplyOrderConfirmation.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (supplyOrderConfirmation) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (supplyOrderConfirmation) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (supplyOrderConfirmation) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {SupplyOrderConfirmationService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = SupplyOrderConfirmationService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (supplyOrderConfirmation,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=supplyOrderConfirmation.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_supplyOrderConfirmation/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (supplyOrderConfirmation,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(supplyOrderConfirmation,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (supplyOrderConfirmation) =>{ - return null -} -const internalRenderExtraFooter = (supplyOrderConfirmation) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (supplyOrderConfirmation,targetComponent) =>{ - const userContext = null - return ( - -{supplyOrderConfirmation.id} -{supplyOrderConfirmation.who} -{ moment(supplyOrderConfirmation.confirmTime).format('YYYY-MM-DD')} - - {buildTransferModal(supplyOrderConfirmation,targetComponent)} - - ) - -} - - -const renderPermissionSetting = supplyOrderConfirmation => { - const {SupplyOrderConfirmationBase} = GlobalComponents - return - - -} - - -class SupplyOrderConfirmationPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const supplyOrderConfirmation = this.props.supplyOrderConfirmation; - const { id,displayName, consumerOrderCount, supplyOrderCount } = supplyOrderConfirmation - - - - const cardsData = {cardsName:"供应订单确认",cardsFor: "supplyOrderConfirmation",cardsSource: supplyOrderConfirmation, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - supplyOrderConfirmation: state._supplyOrderConfirmation, -}))(Form.create()(SupplyOrderConfirmationPreference)) - diff --git a/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.preference.less b/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.profile.js b/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.profile.js index d6bf9d4ad..e181967ad 100644 --- a/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.profile.js +++ b/bizui/src/bizcomponents/supplyorderconfirmation/SupplyOrderConfirmation.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './SupplyOrderConfirmation.preference.less' +import styles from './SupplyOrderConfirmation.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,17 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (supplyOrderConfirmation,targetComponent) =>{ - const userContext = null - return ( - -{supplyOrderConfirmation.id} -{supplyOrderConfirmation.who} -{ moment(supplyOrderConfirmation.confirmTime).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.SupplyOrderConfirmationBase.renderItemOfList(item, targetComponents) + } @@ -64,13 +58,14 @@ class SupplyOrderConfirmationProfile extends Component { const cardsData = {cardsName:"供应订单确认",cardsFor: "supplyOrderConfirmation",cardsSource: supplyOrderConfirmation, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -80,7 +75,7 @@ class SupplyOrderConfirmationProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.associateform.js b/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.associateform.js index e1ed1329f..0c4943117 100644 --- a/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.associateform.js +++ b/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { who: '送货者', - deliveryTime: '2017-12-01', + deliveryTime: '2017-02-02', } */ diff --git a/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.base.js b/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.base.js index d46d30b75..a08a9ba2b 100644 --- a/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.base.js +++ b/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -51,20 +52,24 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({supplyOrderDelivery,targetComponent})=>{ +const renderItemOfList=(supplyOrderDelivery,targetComponent)=>{ - const {SupplyOrderDeliveryService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {supplyOrderDelivery.id} {supplyOrderDelivery.who} { moment(supplyOrderDelivery.deliveryTime).format('YYYY-MM-DD')} - {buildTransferModal(supplyOrderDelivery,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.createform.js b/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.createform.js index 8462b4239..d87ca36f2 100644 --- a/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.createform.js +++ b/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { who: '送货者', - deliveryTime: '2019-01-09', + deliveryTime: '2018-10-28', } */ diff --git a/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.dashboard.js b/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.dashboard.js index d4a11027b..2fc1ce45e 100644 --- a/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.dashboard.js +++ b/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(supplyOrderDelivery)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (supplyOrderDelivery) =>defaultSettingListOf(supplyOrderDelivery, optionList) const internalLargeTextOf = (supplyOrderDelivery) =>{ @@ -124,8 +124,8 @@ class SupplyOrderDeliveryDashboard extends Component { const cardsData = {cardsName:"供应订单交货",cardsFor: "supplyOrderDelivery", cardsSource: this.props.supplyOrderDelivery,returnURL,displayName, subItems: [ -{name: 'consumerOrderList', displayName:'消费者订单',type:'consumerOrder',count:consumerOrderCount,addFunction: true, role: 'consumerOrder', metaInfo: consumerOrderListMetaInfo}, -{name: 'supplyOrderList', displayName:'供应订单',type:'supplyOrder',count:supplyOrderCount,addFunction: true, role: 'supplyOrder', metaInfo: supplyOrderListMetaInfo}, +{name: 'consumerOrderList', displayName:'消费者订单',type:'consumerOrder',count:consumerOrderCount,addFunction: true, role: 'consumerOrder', metaInfo: consumerOrderListMetaInfo, renderItem: GlobalComponents.ConsumerOrderBase.renderItemOfList}, +{name: 'supplyOrderList', displayName:'供应订单',type:'supplyOrder',count:supplyOrderCount,addFunction: true, role: 'supplyOrder', metaInfo: supplyOrderListMetaInfo, renderItem: GlobalComponents.SupplyOrderBase.renderItemOfList}, ], }; @@ -140,6 +140,8 @@ class SupplyOrderDeliveryDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.permission.js b/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.permission.js index f4b9f5f0b..417ddd959 100644 --- a/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.permission.js +++ b/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './SupplyOrderDelivery.preference.less' +import styles from './SupplyOrderDelivery.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.preference.js b/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.preference.js deleted file mode 100644 index 21cb0ee29..000000000 --- a/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.preference.js +++ /dev/null @@ -1,350 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './SupplyOrderDelivery.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (supplyOrderDelivery) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (supplyOrderDelivery) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (supplyOrderDelivery) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {SupplyOrderDeliveryService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = SupplyOrderDeliveryService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (supplyOrderDelivery,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=supplyOrderDelivery.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_supplyOrderDelivery/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (supplyOrderDelivery,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(supplyOrderDelivery,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (supplyOrderDelivery) =>{ - return null -} -const internalRenderExtraFooter = (supplyOrderDelivery) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (supplyOrderDelivery,targetComponent) =>{ - const userContext = null - return ( - -{supplyOrderDelivery.id} -{supplyOrderDelivery.who} -{ moment(supplyOrderDelivery.deliveryTime).format('YYYY-MM-DD')} - - {buildTransferModal(supplyOrderDelivery,targetComponent)} - - ) - -} - - -const renderPermissionSetting = supplyOrderDelivery => { - const {SupplyOrderDeliveryBase} = GlobalComponents - return - - -} - - -class SupplyOrderDeliveryPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const supplyOrderDelivery = this.props.supplyOrderDelivery; - const { id,displayName, consumerOrderCount, supplyOrderCount } = supplyOrderDelivery - - - - const cardsData = {cardsName:"供应订单交货",cardsFor: "supplyOrderDelivery",cardsSource: supplyOrderDelivery, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - supplyOrderDelivery: state._supplyOrderDelivery, -}))(Form.create()(SupplyOrderDeliveryPreference)) - diff --git a/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.preference.less b/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.profile.js b/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.profile.js index 8c5cf1bf2..43a963a82 100644 --- a/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.profile.js +++ b/bizui/src/bizcomponents/supplyorderdelivery/SupplyOrderDelivery.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './SupplyOrderDelivery.preference.less' +import styles from './SupplyOrderDelivery.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,17 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (supplyOrderDelivery,targetComponent) =>{ - const userContext = null - return ( - -{supplyOrderDelivery.id} -{supplyOrderDelivery.who} -{ moment(supplyOrderDelivery.deliveryTime).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.SupplyOrderDeliveryBase.renderItemOfList(item, targetComponents) + } @@ -64,13 +58,14 @@ class SupplyOrderDeliveryProfile extends Component { const cardsData = {cardsName:"供应订单交货",cardsFor: "supplyOrderDelivery",cardsSource: supplyOrderDelivery, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -80,7 +75,7 @@ class SupplyOrderDeliveryProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.associateform.js b/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.associateform.js index 8d88c5af0..9a1ad0050 100644 --- a/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.associateform.js +++ b/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.associateform.js @@ -20,10 +20,10 @@ const testValues = {}; const testValues = { skuId: 'SKU', skuName: '大瓶可乐', - amount: '5.88', - quantity: '9631', + amount: '5.70', + quantity: '7824', unitOfMeasurement: '件', - bizOrderId: 'SO000001', + bizOrderId: 'SO00000001', } */ diff --git a/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.base.js b/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.base.js index 8418a8c89..d1791b63e 100644 --- a/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.base.js +++ b/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -57,20 +58,18 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({supplyOrderLineItem,targetComponent})=>{ +const renderItemOfList=(supplyOrderLineItem,targetComponent)=>{ - const {SupplyOrderLineItemService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {supplyOrderLineItem.id} {supplyOrderLineItem.bizOrder==null?appLocaleName(userContext,"NotAssigned"):`${supplyOrderLineItem.bizOrder.displayName}(${supplyOrderLineItem.bizOrder.id})`} - - showTransferModel(targetComponent,"订单","supplyOrder",SupplyOrderLineItemService.requestCandidateBizOrder, - SupplyOrderLineItemService.transferToAnotherBizOrder,"anotherBizOrderId",supplyOrderLineItem.bizOrder?supplyOrderLineItem.bizOrder.id:"")} - style={{fontSize: 20,color:"red"}} /> {supplyOrderLineItem.skuId} {supplyOrderLineItem.skuName} @@ -78,8 +77,10 @@ const renderItemOfList=({supplyOrderLineItem,targetComponent})=>{ {supplyOrderLineItem.quantity} {supplyOrderLineItem.unitOfMeasurement} - {buildTransferModal(supplyOrderLineItem,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.createform.js b/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.createform.js index 15ebe619b..fb56d5511 100644 --- a/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.createform.js +++ b/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.createform.js @@ -19,10 +19,10 @@ const testValues = {}; const testValues = { skuId: 'SKU', skuName: '大瓶可乐', - amount: '4.61', - quantity: '9192', + amount: '4.22', + quantity: '7787', unitOfMeasurement: '件', - bizOrderId: 'SO000001', + bizOrderId: 'SO00000001', } */ diff --git a/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.dashboard.js b/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.dashboard.js index 6647d7058..4b3c8ea01 100644 --- a/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.dashboard.js +++ b/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(supplyOrderLineItem)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (supplyOrderLineItem) =>defaultSettingListOf(supplyOrderLineItem, optionList) const internalLargeTextOf = (supplyOrderLineItem) =>{ @@ -147,6 +147,8 @@ class SupplyOrderLineItemDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.permission.js b/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.permission.js index 9e14a59d7..2f05f1b94 100644 --- a/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.permission.js +++ b/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './SupplyOrderLineItem.preference.less' +import styles from './SupplyOrderLineItem.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.preference.js b/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.preference.js deleted file mode 100644 index fbc48e06e..000000000 --- a/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.preference.js +++ /dev/null @@ -1,359 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './SupplyOrderLineItem.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (supplyOrderLineItem) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (supplyOrderLineItem) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (supplyOrderLineItem) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {SupplyOrderLineItemService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = SupplyOrderLineItemService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (supplyOrderLineItem,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=supplyOrderLineItem.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_supplyOrderLineItem/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (supplyOrderLineItem,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(supplyOrderLineItem,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (supplyOrderLineItem) =>{ - return null -} -const internalRenderExtraFooter = (supplyOrderLineItem) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (supplyOrderLineItem,targetComponent) =>{ - const userContext = null - return ( - -{supplyOrderLineItem.id} -{supplyOrderLineItem.bizOrder==null?appLocaleName(userContext,"NotAssigned"):supplyOrderLineItem.bizOrder.displayName} - - showTransferModel(targetComponent,"订单","supplyOrder","requestCandidateBizOrder", - "transferToAnotherBizOrder","anotherBizOrderId",supplyOrderLineItem.bizOrder?supplyOrderLineItem.bizOrder.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{supplyOrderLineItem.skuId} -{supplyOrderLineItem.skuName} -{supplyOrderLineItem.amount} -{supplyOrderLineItem.quantity} -{supplyOrderLineItem.unitOfMeasurement} - - {buildTransferModal(supplyOrderLineItem,targetComponent)} - - ) - -} - - -const renderPermissionSetting = supplyOrderLineItem => { - const {SupplyOrderLineItemBase} = GlobalComponents - return - - -} - - -class SupplyOrderLineItemPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const supplyOrderLineItem = this.props.supplyOrderLineItem; - const { id,displayName, } = supplyOrderLineItem - - - - const cardsData = {cardsName:"供应订单行项目",cardsFor: "supplyOrderLineItem",cardsSource: supplyOrderLineItem, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - supplyOrderLineItem: state._supplyOrderLineItem, -}))(Form.create()(SupplyOrderLineItemPreference)) - diff --git a/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.preference.less b/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.profile.js b/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.profile.js index a3a427c38..85a1e9120 100644 --- a/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.profile.js +++ b/bizui/src/bizcomponents/supplyorderlineitem/SupplyOrderLineItem.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './SupplyOrderLineItem.preference.less' +import styles from './SupplyOrderLineItem.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,20 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (supplyOrderLineItem,targetComponent) =>{ - const userContext = null - return ( - -{supplyOrderLineItem.id} -{supplyOrderLineItem.skuId} -{supplyOrderLineItem.skuName} -{supplyOrderLineItem.amount} -{supplyOrderLineItem.quantity} -{supplyOrderLineItem.unitOfMeasurement} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.SupplyOrderLineItemBase.renderItemOfList(item, targetComponents) + } @@ -67,13 +58,14 @@ class SupplyOrderLineItemProfile extends Component { const cardsData = {cardsName:"供应订单行项目",cardsFor: "supplyOrderLineItem",cardsSource: supplyOrderLineItem, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -83,7 +75,7 @@ class SupplyOrderLineItemProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.associateform.js b/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.associateform.js index e093d3639..f36b20e5a 100644 --- a/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.associateform.js +++ b/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.associateform.js @@ -20,7 +20,7 @@ const testValues = {}; const testValues = { name: '付款办法', cardNumber: '4111 1111 1111 - ', - bizOrderId: 'SO000001', + bizOrderId: 'SO00000001', } */ diff --git a/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.base.js b/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.base.js index 2526e024b..9410fa38e 100644 --- a/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.base.js +++ b/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -51,26 +52,26 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({supplyOrderPaymentGroup,targetComponent})=>{ +const renderItemOfList=(supplyOrderPaymentGroup,targetComponent)=>{ - const {SupplyOrderPaymentGroupService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {supplyOrderPaymentGroup.id} {supplyOrderPaymentGroup.name} {supplyOrderPaymentGroup.bizOrder==null?appLocaleName(userContext,"NotAssigned"):`${supplyOrderPaymentGroup.bizOrder.displayName}(${supplyOrderPaymentGroup.bizOrder.id})`} - - showTransferModel(targetComponent,"订单","supplyOrder",SupplyOrderPaymentGroupService.requestCandidateBizOrder, - SupplyOrderPaymentGroupService.transferToAnotherBizOrder,"anotherBizOrderId",supplyOrderPaymentGroup.bizOrder?supplyOrderPaymentGroup.bizOrder.id:"")} - style={{fontSize: 20,color:"red"}} /> {supplyOrderPaymentGroup.cardNumber} - {buildTransferModal(supplyOrderPaymentGroup,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.createform.js b/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.createform.js index 9e75241d2..3aff2624c 100644 --- a/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.createform.js +++ b/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.createform.js @@ -19,7 +19,7 @@ const testValues = {}; const testValues = { name: '付款办法', cardNumber: '4111 1111 1111 - ', - bizOrderId: 'SO000001', + bizOrderId: 'SO00000001', } */ diff --git a/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.dashboard.js b/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.dashboard.js index 738f3f503..043fabae0 100644 --- a/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.dashboard.js +++ b/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(supplyOrderPaymentGroup)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (supplyOrderPaymentGroup) =>defaultSettingListOf(supplyOrderPaymentGroup, optionList) const internalLargeTextOf = (supplyOrderPaymentGroup) =>{ @@ -144,6 +144,8 @@ class SupplyOrderPaymentGroupDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.permission.js b/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.permission.js index 89c1ec0e6..23c0a6a6d 100644 --- a/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.permission.js +++ b/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './SupplyOrderPaymentGroup.preference.less' +import styles from './SupplyOrderPaymentGroup.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.preference.js b/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.preference.js deleted file mode 100644 index b4f69ab3a..000000000 --- a/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.preference.js +++ /dev/null @@ -1,356 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './SupplyOrderPaymentGroup.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (supplyOrderPaymentGroup) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (supplyOrderPaymentGroup) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (supplyOrderPaymentGroup) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {SupplyOrderPaymentGroupService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = SupplyOrderPaymentGroupService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (supplyOrderPaymentGroup,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=supplyOrderPaymentGroup.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_supplyOrderPaymentGroup/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (supplyOrderPaymentGroup,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(supplyOrderPaymentGroup,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (supplyOrderPaymentGroup) =>{ - return null -} -const internalRenderExtraFooter = (supplyOrderPaymentGroup) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (supplyOrderPaymentGroup,targetComponent) =>{ - const userContext = null - return ( - -{supplyOrderPaymentGroup.id} -{supplyOrderPaymentGroup.name} -{supplyOrderPaymentGroup.bizOrder==null?appLocaleName(userContext,"NotAssigned"):supplyOrderPaymentGroup.bizOrder.displayName} - - showTransferModel(targetComponent,"订单","supplyOrder","requestCandidateBizOrder", - "transferToAnotherBizOrder","anotherBizOrderId",supplyOrderPaymentGroup.bizOrder?supplyOrderPaymentGroup.bizOrder.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{supplyOrderPaymentGroup.cardNumber} - - {buildTransferModal(supplyOrderPaymentGroup,targetComponent)} - - ) - -} - - -const renderPermissionSetting = supplyOrderPaymentGroup => { - const {SupplyOrderPaymentGroupBase} = GlobalComponents - return - - -} - - -class SupplyOrderPaymentGroupPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const supplyOrderPaymentGroup = this.props.supplyOrderPaymentGroup; - const { id,displayName, } = supplyOrderPaymentGroup - - - - const cardsData = {cardsName:"供应订单付款组",cardsFor: "supplyOrderPaymentGroup",cardsSource: supplyOrderPaymentGroup, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - supplyOrderPaymentGroup: state._supplyOrderPaymentGroup, -}))(Form.create()(SupplyOrderPaymentGroupPreference)) - diff --git a/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.preference.less b/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.profile.js b/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.profile.js index eba5f3da2..b6cd01a3a 100644 --- a/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.profile.js +++ b/bizui/src/bizcomponents/supplyorderpaymentgroup/SupplyOrderPaymentGroup.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './SupplyOrderPaymentGroup.preference.less' +import styles from './SupplyOrderPaymentGroup.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,17 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (supplyOrderPaymentGroup,targetComponent) =>{ - const userContext = null - return ( - -{supplyOrderPaymentGroup.id} -{supplyOrderPaymentGroup.name} -{supplyOrderPaymentGroup.cardNumber} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.SupplyOrderPaymentGroupBase.renderItemOfList(item, targetComponents) + } @@ -64,13 +58,14 @@ class SupplyOrderPaymentGroupProfile extends Component { const cardsData = {cardsName:"供应订单付款组",cardsFor: "supplyOrderPaymentGroup",cardsSource: supplyOrderPaymentGroup, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -80,7 +75,7 @@ class SupplyOrderPaymentGroupProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.associateform.js b/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.associateform.js index 0435673a0..5e8da7dee 100644 --- a/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.associateform.js +++ b/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { who: '处理者', - processTime: '2018-12-11', + processTime: '2017-09-14', } */ diff --git a/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.base.js b/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.base.js index 5a8bf092e..479911ad4 100644 --- a/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.base.js +++ b/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -50,20 +51,24 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({supplyOrderPicking,targetComponent})=>{ +const renderItemOfList=(supplyOrderPicking,targetComponent)=>{ - const {SupplyOrderPickingService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {supplyOrderPicking.id} {supplyOrderPicking.who} { moment(supplyOrderPicking.processTime).format('YYYY-MM-DD')} - {buildTransferModal(supplyOrderPicking,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.createform.js b/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.createform.js index 0f5bea87d..7092436e1 100644 --- a/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.createform.js +++ b/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { who: '处理者', - processTime: '2017-01-08', + processTime: '2017-10-05', } */ diff --git a/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.dashboard.js b/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.dashboard.js index a2d1e8bce..6fd68eefa 100644 --- a/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.dashboard.js +++ b/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(supplyOrderPicking)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (supplyOrderPicking) =>defaultSettingListOf(supplyOrderPicking, optionList) const internalLargeTextOf = (supplyOrderPicking) =>{ @@ -124,7 +124,7 @@ class SupplyOrderPickingDashboard extends Component { const cardsData = {cardsName:"供应订单拣货",cardsFor: "supplyOrderPicking", cardsSource: this.props.supplyOrderPicking,returnURL,displayName, subItems: [ -{name: 'supplyOrderList', displayName:'供应订单',type:'supplyOrder',count:supplyOrderCount,addFunction: true, role: 'supplyOrder', metaInfo: supplyOrderListMetaInfo}, +{name: 'supplyOrderList', displayName:'供应订单',type:'supplyOrder',count:supplyOrderCount,addFunction: true, role: 'supplyOrder', metaInfo: supplyOrderListMetaInfo, renderItem: GlobalComponents.SupplyOrderBase.renderItemOfList}, ], }; @@ -139,6 +139,8 @@ class SupplyOrderPickingDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.permission.js b/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.permission.js index f0709801e..882429594 100644 --- a/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.permission.js +++ b/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './SupplyOrderPicking.preference.less' +import styles from './SupplyOrderPicking.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.preference.js b/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.preference.js deleted file mode 100644 index 4d3a43293..000000000 --- a/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.preference.js +++ /dev/null @@ -1,350 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './SupplyOrderPicking.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (supplyOrderPicking) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (supplyOrderPicking) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (supplyOrderPicking) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {SupplyOrderPickingService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = SupplyOrderPickingService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (supplyOrderPicking,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=supplyOrderPicking.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_supplyOrderPicking/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (supplyOrderPicking,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(supplyOrderPicking,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (supplyOrderPicking) =>{ - return null -} -const internalRenderExtraFooter = (supplyOrderPicking) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (supplyOrderPicking,targetComponent) =>{ - const userContext = null - return ( - -{supplyOrderPicking.id} -{supplyOrderPicking.who} -{ moment(supplyOrderPicking.processTime).format('YYYY-MM-DD')} - - {buildTransferModal(supplyOrderPicking,targetComponent)} - - ) - -} - - -const renderPermissionSetting = supplyOrderPicking => { - const {SupplyOrderPickingBase} = GlobalComponents - return - - -} - - -class SupplyOrderPickingPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const supplyOrderPicking = this.props.supplyOrderPicking; - const { id,displayName, supplyOrderCount } = supplyOrderPicking - - - - const cardsData = {cardsName:"供应订单拣货",cardsFor: "supplyOrderPicking",cardsSource: supplyOrderPicking, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - supplyOrderPicking: state._supplyOrderPicking, -}))(Form.create()(SupplyOrderPickingPreference)) - diff --git a/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.preference.less b/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.profile.js b/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.profile.js index 98969b63f..a4fd188de 100644 --- a/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.profile.js +++ b/bizui/src/bizcomponents/supplyorderpicking/SupplyOrderPicking.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './SupplyOrderPicking.preference.less' +import styles from './SupplyOrderPicking.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,17 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (supplyOrderPicking,targetComponent) =>{ - const userContext = null - return ( - -{supplyOrderPicking.id} -{supplyOrderPicking.who} -{ moment(supplyOrderPicking.processTime).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.SupplyOrderPickingBase.renderItemOfList(item, targetComponents) + } @@ -64,13 +58,14 @@ class SupplyOrderPickingProfile extends Component { const cardsData = {cardsName:"供应订单拣货",cardsFor: "supplyOrderPicking",cardsSource: supplyOrderPicking, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -80,7 +75,7 @@ class SupplyOrderPickingProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.associateform.js b/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.associateform.js index 2edff519c..7ce7ac58a 100644 --- a/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.associateform.js +++ b/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { who: '处理者', - processTime: '2017-10-09', + processTime: '2018-04-09', } */ diff --git a/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.base.js b/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.base.js index 2250a94bd..8f8c9a3c8 100644 --- a/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.base.js +++ b/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -51,20 +52,24 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({supplyOrderProcessing,targetComponent})=>{ +const renderItemOfList=(supplyOrderProcessing,targetComponent)=>{ - const {SupplyOrderProcessingService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {supplyOrderProcessing.id} {supplyOrderProcessing.who} { moment(supplyOrderProcessing.processTime).format('YYYY-MM-DD')} - {buildTransferModal(supplyOrderProcessing,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.createform.js b/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.createform.js index 6a002d004..abfd11ace 100644 --- a/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.createform.js +++ b/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { who: '处理者', - processTime: '2017-09-09', + processTime: '2019-05-13', } */ diff --git a/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.dashboard.js b/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.dashboard.js index 751902f88..fdd7486a3 100644 --- a/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.dashboard.js +++ b/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(supplyOrderProcessing)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (supplyOrderProcessing) =>defaultSettingListOf(supplyOrderProcessing, optionList) const internalLargeTextOf = (supplyOrderProcessing) =>{ @@ -124,8 +124,8 @@ class SupplyOrderProcessingDashboard extends Component { const cardsData = {cardsName:"供应订单处理",cardsFor: "supplyOrderProcessing", cardsSource: this.props.supplyOrderProcessing,returnURL,displayName, subItems: [ -{name: 'consumerOrderList', displayName:'消费者订单',type:'consumerOrder',count:consumerOrderCount,addFunction: true, role: 'consumerOrder', metaInfo: consumerOrderListMetaInfo}, -{name: 'supplyOrderList', displayName:'供应订单',type:'supplyOrder',count:supplyOrderCount,addFunction: true, role: 'supplyOrder', metaInfo: supplyOrderListMetaInfo}, +{name: 'consumerOrderList', displayName:'消费者订单',type:'consumerOrder',count:consumerOrderCount,addFunction: true, role: 'consumerOrder', metaInfo: consumerOrderListMetaInfo, renderItem: GlobalComponents.ConsumerOrderBase.renderItemOfList}, +{name: 'supplyOrderList', displayName:'供应订单',type:'supplyOrder',count:supplyOrderCount,addFunction: true, role: 'supplyOrder', metaInfo: supplyOrderListMetaInfo, renderItem: GlobalComponents.SupplyOrderBase.renderItemOfList}, ], }; @@ -140,6 +140,8 @@ class SupplyOrderProcessingDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.permission.js b/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.permission.js index 53ececf18..4b4224b51 100644 --- a/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.permission.js +++ b/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './SupplyOrderProcessing.preference.less' +import styles from './SupplyOrderProcessing.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.preference.js b/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.preference.js deleted file mode 100644 index af36253d2..000000000 --- a/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.preference.js +++ /dev/null @@ -1,350 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './SupplyOrderProcessing.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (supplyOrderProcessing) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (supplyOrderProcessing) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (supplyOrderProcessing) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {SupplyOrderProcessingService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = SupplyOrderProcessingService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (supplyOrderProcessing,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=supplyOrderProcessing.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_supplyOrderProcessing/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (supplyOrderProcessing,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(supplyOrderProcessing,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (supplyOrderProcessing) =>{ - return null -} -const internalRenderExtraFooter = (supplyOrderProcessing) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (supplyOrderProcessing,targetComponent) =>{ - const userContext = null - return ( - -{supplyOrderProcessing.id} -{supplyOrderProcessing.who} -{ moment(supplyOrderProcessing.processTime).format('YYYY-MM-DD')} - - {buildTransferModal(supplyOrderProcessing,targetComponent)} - - ) - -} - - -const renderPermissionSetting = supplyOrderProcessing => { - const {SupplyOrderProcessingBase} = GlobalComponents - return - - -} - - -class SupplyOrderProcessingPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const supplyOrderProcessing = this.props.supplyOrderProcessing; - const { id,displayName, consumerOrderCount, supplyOrderCount } = supplyOrderProcessing - - - - const cardsData = {cardsName:"供应订单处理",cardsFor: "supplyOrderProcessing",cardsSource: supplyOrderProcessing, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - supplyOrderProcessing: state._supplyOrderProcessing, -}))(Form.create()(SupplyOrderProcessingPreference)) - diff --git a/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.preference.less b/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.profile.js b/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.profile.js index 4bb01dd21..8787bb11f 100644 --- a/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.profile.js +++ b/bizui/src/bizcomponents/supplyorderprocessing/SupplyOrderProcessing.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './SupplyOrderProcessing.preference.less' +import styles from './SupplyOrderProcessing.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,17 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (supplyOrderProcessing,targetComponent) =>{ - const userContext = null - return ( - -{supplyOrderProcessing.id} -{supplyOrderProcessing.who} -{ moment(supplyOrderProcessing.processTime).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.SupplyOrderProcessingBase.renderItemOfList(item, targetComponents) + } @@ -64,13 +58,14 @@ class SupplyOrderProcessingProfile extends Component { const cardsData = {cardsName:"供应订单处理",cardsFor: "supplyOrderProcessing",cardsSource: supplyOrderProcessing, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -80,7 +75,7 @@ class SupplyOrderProcessingProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.associateform.js b/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.associateform.js index 67b947d5c..b2a81ce65 100644 --- a/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.associateform.js +++ b/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.associateform.js @@ -19,7 +19,7 @@ const testValues = {}; /* const testValues = { who: '运货者', - shipTime: '2017-10-12', + shipTime: '2018-08-17', } */ diff --git a/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.base.js b/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.base.js index 1889d72e6..10674c1ec 100644 --- a/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.base.js +++ b/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -51,20 +52,24 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({supplyOrderShipment,targetComponent})=>{ +const renderItemOfList=(supplyOrderShipment,targetComponent)=>{ - const {SupplyOrderShipmentService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {supplyOrderShipment.id} {supplyOrderShipment.who} { moment(supplyOrderShipment.shipTime).format('YYYY-MM-DD')} - {buildTransferModal(supplyOrderShipment,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.createform.js b/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.createform.js index a588c4d09..143fe5c2f 100644 --- a/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.createform.js +++ b/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.createform.js @@ -18,7 +18,7 @@ const testValues = {}; /* const testValues = { who: '运货者', - shipTime: '2017-12-11', + shipTime: '2018-08-04', } */ diff --git a/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.dashboard.js b/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.dashboard.js index 909eeb4aa..7cd409bb5 100644 --- a/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.dashboard.js +++ b/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(supplyOrderShipment)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (supplyOrderShipment) =>defaultSettingListOf(supplyOrderShipment, optionList) const internalLargeTextOf = (supplyOrderShipment) =>{ @@ -124,8 +124,8 @@ class SupplyOrderShipmentDashboard extends Component { const cardsData = {cardsName:"供应货",cardsFor: "supplyOrderShipment", cardsSource: this.props.supplyOrderShipment,returnURL,displayName, subItems: [ -{name: 'consumerOrderList', displayName:'消费者订单',type:'consumerOrder',count:consumerOrderCount,addFunction: true, role: 'consumerOrder', metaInfo: consumerOrderListMetaInfo}, -{name: 'supplyOrderList', displayName:'供应订单',type:'supplyOrder',count:supplyOrderCount,addFunction: true, role: 'supplyOrder', metaInfo: supplyOrderListMetaInfo}, +{name: 'consumerOrderList', displayName:'消费者订单',type:'consumerOrder',count:consumerOrderCount,addFunction: true, role: 'consumerOrder', metaInfo: consumerOrderListMetaInfo, renderItem: GlobalComponents.ConsumerOrderBase.renderItemOfList}, +{name: 'supplyOrderList', displayName:'供应订单',type:'supplyOrder',count:supplyOrderCount,addFunction: true, role: 'supplyOrder', metaInfo: supplyOrderListMetaInfo, renderItem: GlobalComponents.SupplyOrderBase.renderItemOfList}, ], }; @@ -140,6 +140,8 @@ class SupplyOrderShipmentDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.permission.js b/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.permission.js index f4d1bd6f8..eea394bd8 100644 --- a/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.permission.js +++ b/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './SupplyOrderShipment.preference.less' +import styles from './SupplyOrderShipment.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.preference.js b/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.preference.js deleted file mode 100644 index b75bf544a..000000000 --- a/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.preference.js +++ /dev/null @@ -1,350 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './SupplyOrderShipment.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (supplyOrderShipment) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (supplyOrderShipment) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (supplyOrderShipment) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {SupplyOrderShipmentService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = SupplyOrderShipmentService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (supplyOrderShipment,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=supplyOrderShipment.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_supplyOrderShipment/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (supplyOrderShipment,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(supplyOrderShipment,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (supplyOrderShipment) =>{ - return null -} -const internalRenderExtraFooter = (supplyOrderShipment) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (supplyOrderShipment,targetComponent) =>{ - const userContext = null - return ( - -{supplyOrderShipment.id} -{supplyOrderShipment.who} -{ moment(supplyOrderShipment.shipTime).format('YYYY-MM-DD')} - - {buildTransferModal(supplyOrderShipment,targetComponent)} - - ) - -} - - -const renderPermissionSetting = supplyOrderShipment => { - const {SupplyOrderShipmentBase} = GlobalComponents - return - - -} - - -class SupplyOrderShipmentPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const supplyOrderShipment = this.props.supplyOrderShipment; - const { id,displayName, consumerOrderCount, supplyOrderCount } = supplyOrderShipment - - - - const cardsData = {cardsName:"供应货",cardsFor: "supplyOrderShipment",cardsSource: supplyOrderShipment, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - supplyOrderShipment: state._supplyOrderShipment, -}))(Form.create()(SupplyOrderShipmentPreference)) - diff --git a/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.preference.less b/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.profile.js b/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.profile.js index 30194ba8d..c67154837 100644 --- a/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.profile.js +++ b/bizui/src/bizcomponents/supplyordershipment/SupplyOrderShipment.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './SupplyOrderShipment.preference.less' +import styles from './SupplyOrderShipment.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,17 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (supplyOrderShipment,targetComponent) =>{ - const userContext = null - return ( - -{supplyOrderShipment.id} -{supplyOrderShipment.who} -{ moment(supplyOrderShipment.shipTime).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.SupplyOrderShipmentBase.renderItemOfList(item, targetComponents) + } @@ -64,13 +58,14 @@ class SupplyOrderShipmentProfile extends Component { const cardsData = {cardsName:"供应货",cardsFor: "supplyOrderShipment",cardsSource: supplyOrderShipment, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -80,7 +75,7 @@ class SupplyOrderShipmentProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.associateform.js b/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.associateform.js index 03570484c..e3d89c42e 100644 --- a/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.associateform.js +++ b/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.associateform.js @@ -19,8 +19,8 @@ const testValues = {}; /* const testValues = { name: '送货到双链成都2号仓', - amount: '5.79', - bizOrderId: 'SO000001', + amount: '5.93', + bizOrderId: 'SO00000001', } */ diff --git a/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.base.js b/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.base.js index fd6137577..32cbdef56 100644 --- a/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.base.js +++ b/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -51,26 +52,26 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({supplyOrderShippingGroup,targetComponent})=>{ +const renderItemOfList=(supplyOrderShippingGroup,targetComponent)=>{ - const {SupplyOrderShippingGroupService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {supplyOrderShippingGroup.id} {supplyOrderShippingGroup.name} {supplyOrderShippingGroup.bizOrder==null?appLocaleName(userContext,"NotAssigned"):`${supplyOrderShippingGroup.bizOrder.displayName}(${supplyOrderShippingGroup.bizOrder.id})`} - - showTransferModel(targetComponent,"订单","supplyOrder",SupplyOrderShippingGroupService.requestCandidateBizOrder, - SupplyOrderShippingGroupService.transferToAnotherBizOrder,"anotherBizOrderId",supplyOrderShippingGroup.bizOrder?supplyOrderShippingGroup.bizOrder.id:"")} - style={{fontSize: 20,color:"red"}} /> {supplyOrderShippingGroup.amount} - {buildTransferModal(supplyOrderShippingGroup,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.createform.js b/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.createform.js index 26ce2ddc2..e4bebacca 100644 --- a/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.createform.js +++ b/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.createform.js @@ -18,8 +18,8 @@ const testValues = {}; /* const testValues = { name: '送货到双链成都2号仓', - amount: '4.55', - bizOrderId: 'SO000001', + amount: '4.67', + bizOrderId: 'SO00000001', } */ diff --git a/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.dashboard.js b/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.dashboard.js index 5d682ccac..f8bfcb37b 100644 --- a/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.dashboard.js +++ b/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(supplyOrderShippingGroup)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (supplyOrderShippingGroup) =>defaultSettingListOf(supplyOrderShippingGroup, optionList) const internalLargeTextOf = (supplyOrderShippingGroup) =>{ @@ -144,6 +144,8 @@ class SupplyOrderShippingGroupDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.permission.js b/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.permission.js index 9a4cc79f6..986616e59 100644 --- a/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.permission.js +++ b/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './SupplyOrderShippingGroup.preference.less' +import styles from './SupplyOrderShippingGroup.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.preference.js b/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.preference.js deleted file mode 100644 index a0126fa7f..000000000 --- a/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.preference.js +++ /dev/null @@ -1,356 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './SupplyOrderShippingGroup.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (supplyOrderShippingGroup) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (supplyOrderShippingGroup) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (supplyOrderShippingGroup) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {SupplyOrderShippingGroupService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = SupplyOrderShippingGroupService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (supplyOrderShippingGroup,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=supplyOrderShippingGroup.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_supplyOrderShippingGroup/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (supplyOrderShippingGroup,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(supplyOrderShippingGroup,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (supplyOrderShippingGroup) =>{ - return null -} -const internalRenderExtraFooter = (supplyOrderShippingGroup) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (supplyOrderShippingGroup,targetComponent) =>{ - const userContext = null - return ( - -{supplyOrderShippingGroup.id} -{supplyOrderShippingGroup.name} -{supplyOrderShippingGroup.bizOrder==null?appLocaleName(userContext,"NotAssigned"):supplyOrderShippingGroup.bizOrder.displayName} - - showTransferModel(targetComponent,"订单","supplyOrder","requestCandidateBizOrder", - "transferToAnotherBizOrder","anotherBizOrderId",supplyOrderShippingGroup.bizOrder?supplyOrderShippingGroup.bizOrder.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{supplyOrderShippingGroup.amount} - - {buildTransferModal(supplyOrderShippingGroup,targetComponent)} - - ) - -} - - -const renderPermissionSetting = supplyOrderShippingGroup => { - const {SupplyOrderShippingGroupBase} = GlobalComponents - return - - -} - - -class SupplyOrderShippingGroupPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const supplyOrderShippingGroup = this.props.supplyOrderShippingGroup; - const { id,displayName, } = supplyOrderShippingGroup - - - - const cardsData = {cardsName:"供应订单送货分组",cardsFor: "supplyOrderShippingGroup",cardsSource: supplyOrderShippingGroup, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - supplyOrderShippingGroup: state._supplyOrderShippingGroup, -}))(Form.create()(SupplyOrderShippingGroupPreference)) - diff --git a/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.preference.less b/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.profile.js b/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.profile.js index a0e2d3864..d0601f703 100644 --- a/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.profile.js +++ b/bizui/src/bizcomponents/supplyordershippinggroup/SupplyOrderShippingGroup.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './SupplyOrderShippingGroup.preference.less' +import styles from './SupplyOrderShippingGroup.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,17 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (supplyOrderShippingGroup,targetComponent) =>{ - const userContext = null - return ( - -{supplyOrderShippingGroup.id} -{supplyOrderShippingGroup.name} -{supplyOrderShippingGroup.amount} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.SupplyOrderShippingGroupBase.renderItemOfList(item, targetComponents) + } @@ -64,13 +58,14 @@ class SupplyOrderShippingGroupProfile extends Component { const cardsData = {cardsName:"供应订单送货分组",cardsFor: "supplyOrderShippingGroup",cardsSource: supplyOrderShippingGroup, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -80,7 +75,7 @@ class SupplyOrderShippingGroupProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/termination/Termination.associateform.js b/bizui/src/bizcomponents/termination/Termination.associateform.js index 02e681581..2400d7d2d 100644 --- a/bizui/src/bizcomponents/termination/Termination.associateform.js +++ b/bizui/src/bizcomponents/termination/Termination.associateform.js @@ -19,8 +19,8 @@ const testValues = {}; /* const testValues = { comment: '员工离职', - reasonId: 'TR000001', - typeId: 'TT000001', + reasonId: 'TR00000001', + typeId: 'TT00000001', } */ diff --git a/bizui/src/bizcomponents/termination/Termination.base.js b/bizui/src/bizcomponents/termination/Termination.base.js index 331ce8f8b..c402b0bee 100644 --- a/bizui/src/bizcomponents/termination/Termination.base.js +++ b/bizui/src/bizcomponents/termination/Termination.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -52,31 +53,27 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({termination,targetComponent})=>{ +const renderItemOfList=(termination,targetComponent)=>{ - const {TerminationService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {termination.id} {termination.reason==null?appLocaleName(userContext,"NotAssigned"):`${termination.reason.displayName}(${termination.reason.id})`} - - showTransferModel(targetComponent,"原因","terminationReason",TerminationService.requestCandidateReason, - TerminationService.transferToAnotherReason,"anotherReasonId",termination.reason?termination.reason.id:"")} - style={{fontSize: 20,color:"red"}} /> {termination.type==null?appLocaleName(userContext,"NotAssigned"):`${termination.type.displayName}(${termination.type.id})`} - - showTransferModel(targetComponent,"类型","terminationType",TerminationService.requestCandidateType, - TerminationService.transferToAnotherType,"anotherTypeId",termination.type?termination.type.id:"")} - style={{fontSize: 20,color:"red"}} /> {termination.comment} - {buildTransferModal(termination,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/termination/Termination.createform.js b/bizui/src/bizcomponents/termination/Termination.createform.js index 97a7adb7c..a228479dc 100644 --- a/bizui/src/bizcomponents/termination/Termination.createform.js +++ b/bizui/src/bizcomponents/termination/Termination.createform.js @@ -18,8 +18,8 @@ const testValues = {}; /* const testValues = { comment: '员工离职', - reasonId: 'TR000001', - typeId: 'TT000001', + reasonId: 'TR00000001', + typeId: 'TT00000001', } */ diff --git a/bizui/src/bizcomponents/termination/Termination.dashboard.js b/bizui/src/bizcomponents/termination/Termination.dashboard.js index aa02e09fa..53073747b 100644 --- a/bizui/src/bizcomponents/termination/Termination.dashboard.js +++ b/bizui/src/bizcomponents/termination/Termination.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(termination)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (termination) =>defaultSettingListOf(termination, optionList) const internalLargeTextOf = (termination) =>{ @@ -135,7 +135,7 @@ class TerminationDashboard extends Component { const cardsData = {cardsName:"雇佣终止",cardsFor: "termination", cardsSource: this.props.termination,returnURL,displayName, subItems: [ -{name: 'employeeList', displayName:'员工',type:'employee',count:employeeCount,addFunction: true, role: 'employee', metaInfo: employeeListMetaInfo}, +{name: 'employeeList', displayName:'员工',type:'employee',count:employeeCount,addFunction: true, role: 'employee', metaInfo: employeeListMetaInfo, renderItem: GlobalComponents.EmployeeBase.renderItemOfList}, ], }; @@ -150,6 +150,8 @@ class TerminationDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/termination/Termination.permission.js b/bizui/src/bizcomponents/termination/Termination.permission.js index 3c6411fc9..eab1dc106 100644 --- a/bizui/src/bizcomponents/termination/Termination.permission.js +++ b/bizui/src/bizcomponents/termination/Termination.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './Termination.preference.less' +import styles from './Termination.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/termination/Termination.preference.js b/bizui/src/bizcomponents/termination/Termination.preference.js deleted file mode 100644 index 3fe784cc5..000000000 --- a/bizui/src/bizcomponents/termination/Termination.preference.js +++ /dev/null @@ -1,361 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './Termination.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (termination) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (termination) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (termination) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {TerminationService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = TerminationService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (termination,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=termination.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_termination/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (termination,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(termination,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (termination) =>{ - return null -} -const internalRenderExtraFooter = (termination) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (termination,targetComponent) =>{ - const userContext = null - return ( - -{termination.id} -{termination.reason==null?appLocaleName(userContext,"NotAssigned"):termination.reason.displayName} - - showTransferModel(targetComponent,"原因","terminationReason","requestCandidateReason", - "transferToAnotherReason","anotherReasonId",termination.reason?termination.reason.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{termination.type==null?appLocaleName(userContext,"NotAssigned"):termination.type.displayName} - - showTransferModel(targetComponent,"类型","terminationType","requestCandidateType", - "transferToAnotherType","anotherTypeId",termination.type?termination.type.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{termination.comment} - - {buildTransferModal(termination,targetComponent)} - - ) - -} - - -const renderPermissionSetting = termination => { - const {TerminationBase} = GlobalComponents - return - - -} - - -class TerminationPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const termination = this.props.termination; - const { id,displayName, employeeCount } = termination - - - - const cardsData = {cardsName:"雇佣终止",cardsFor: "termination",cardsSource: termination, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - termination: state._termination, -}))(Form.create()(TerminationPreference)) - diff --git a/bizui/src/bizcomponents/termination/Termination.preference.less b/bizui/src/bizcomponents/termination/Termination.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/termination/Termination.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/termination/Termination.profile.js b/bizui/src/bizcomponents/termination/Termination.profile.js index 409fe0738..98bd45a17 100644 --- a/bizui/src/bizcomponents/termination/Termination.profile.js +++ b/bizui/src/bizcomponents/termination/Termination.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './Termination.preference.less' +import styles from './Termination.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,16 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (termination,targetComponent) =>{ - const userContext = null - return ( - -{termination.id} -{termination.comment} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.TerminationBase.renderItemOfList(item, targetComponents) + } @@ -63,13 +58,14 @@ class TerminationProfile extends Component { const cardsData = {cardsName:"雇佣终止",cardsFor: "termination",cardsSource: termination, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -79,7 +75,7 @@ class TerminationProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/terminationreason/TerminationReason.associateform.js b/bizui/src/bizcomponents/terminationreason/TerminationReason.associateform.js index 2590a2d1c..3d2b51b3d 100644 --- a/bizui/src/bizcomponents/terminationreason/TerminationReason.associateform.js +++ b/bizui/src/bizcomponents/terminationreason/TerminationReason.associateform.js @@ -20,7 +20,7 @@ const testValues = {}; const testValues = { code: 'ETR0000', description: '业务发展,公司转型', - companyId: 'RSCC000001', + companyId: 'RSCC00000001', } */ diff --git a/bizui/src/bizcomponents/terminationreason/TerminationReason.base.js b/bizui/src/bizcomponents/terminationreason/TerminationReason.base.js index 39168182f..ba6a50f8d 100644 --- a/bizui/src/bizcomponents/terminationreason/TerminationReason.base.js +++ b/bizui/src/bizcomponents/terminationreason/TerminationReason.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -52,20 +53,24 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({terminationReason,targetComponent})=>{ +const renderItemOfList=(terminationReason,targetComponent)=>{ - const {TerminationReasonService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {terminationReason.id} {terminationReason.code} {terminationReason.description} - {buildTransferModal(terminationReason,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/terminationreason/TerminationReason.createform.js b/bizui/src/bizcomponents/terminationreason/TerminationReason.createform.js index 205cb0457..66cb4587a 100644 --- a/bizui/src/bizcomponents/terminationreason/TerminationReason.createform.js +++ b/bizui/src/bizcomponents/terminationreason/TerminationReason.createform.js @@ -19,7 +19,7 @@ const testValues = {}; const testValues = { code: 'ETR0000', description: '业务发展,公司转型', - companyId: 'RSCC000001', + companyId: 'RSCC00000001', } */ diff --git a/bizui/src/bizcomponents/terminationreason/TerminationReason.dashboard.js b/bizui/src/bizcomponents/terminationreason/TerminationReason.dashboard.js index 7a2468c0a..f6640d402 100644 --- a/bizui/src/bizcomponents/terminationreason/TerminationReason.dashboard.js +++ b/bizui/src/bizcomponents/terminationreason/TerminationReason.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(terminationReason)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (terminationReason) =>defaultSettingListOf(terminationReason, optionList) const internalLargeTextOf = (terminationReason) =>{ @@ -124,7 +124,7 @@ class TerminationReasonDashboard extends Component { const cardsData = {cardsName:"雇佣终止的原因",cardsFor: "terminationReason", cardsSource: this.props.terminationReason,returnURL,displayName, subItems: [ -{name: 'terminationList', displayName:'雇佣终止',type:'termination',count:terminationCount,addFunction: true, role: 'termination', metaInfo: terminationListMetaInfo}, +{name: 'terminationList', displayName:'雇佣终止',type:'termination',count:terminationCount,addFunction: true, role: 'termination', metaInfo: terminationListMetaInfo, renderItem: GlobalComponents.TerminationBase.renderItemOfList}, ], }; @@ -139,6 +139,8 @@ class TerminationReasonDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/terminationreason/TerminationReason.permission.js b/bizui/src/bizcomponents/terminationreason/TerminationReason.permission.js index 1bbf91e40..8aeadb3af 100644 --- a/bizui/src/bizcomponents/terminationreason/TerminationReason.permission.js +++ b/bizui/src/bizcomponents/terminationreason/TerminationReason.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './TerminationReason.preference.less' +import styles from './TerminationReason.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/terminationreason/TerminationReason.preference.js b/bizui/src/bizcomponents/terminationreason/TerminationReason.preference.js deleted file mode 100644 index 9f64df15d..000000000 --- a/bizui/src/bizcomponents/terminationreason/TerminationReason.preference.js +++ /dev/null @@ -1,350 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './TerminationReason.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (terminationReason) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (terminationReason) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (terminationReason) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {TerminationReasonService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = TerminationReasonService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (terminationReason,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=terminationReason.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_terminationReason/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (terminationReason,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(terminationReason,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (terminationReason) =>{ - return null -} -const internalRenderExtraFooter = (terminationReason) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (terminationReason,targetComponent) =>{ - const userContext = null - return ( - -{terminationReason.id} -{terminationReason.code} -{terminationReason.description} - - {buildTransferModal(terminationReason,targetComponent)} - - ) - -} - - -const renderPermissionSetting = terminationReason => { - const {TerminationReasonBase} = GlobalComponents - return - - -} - - -class TerminationReasonPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const terminationReason = this.props.terminationReason; - const { id,displayName, terminationCount } = terminationReason - - - - const cardsData = {cardsName:"雇佣终止的原因",cardsFor: "terminationReason",cardsSource: terminationReason, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - terminationReason: state._terminationReason, -}))(Form.create()(TerminationReasonPreference)) - diff --git a/bizui/src/bizcomponents/terminationreason/TerminationReason.preference.less b/bizui/src/bizcomponents/terminationreason/TerminationReason.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/terminationreason/TerminationReason.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/terminationreason/TerminationReason.profile.js b/bizui/src/bizcomponents/terminationreason/TerminationReason.profile.js index 6b56002b0..0f4fe1d24 100644 --- a/bizui/src/bizcomponents/terminationreason/TerminationReason.profile.js +++ b/bizui/src/bizcomponents/terminationreason/TerminationReason.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './TerminationReason.preference.less' +import styles from './TerminationReason.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,17 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (terminationReason,targetComponent) =>{ - const userContext = null - return ( - -{terminationReason.id} -{terminationReason.code} -{terminationReason.description} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.TerminationReasonBase.renderItemOfList(item, targetComponents) + } @@ -64,13 +58,14 @@ class TerminationReasonProfile extends Component { const cardsData = {cardsName:"雇佣终止的原因",cardsFor: "terminationReason",cardsSource: terminationReason, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -80,7 +75,7 @@ class TerminationReasonProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/terminationtype/TerminationType.associateform.js b/bizui/src/bizcomponents/terminationtype/TerminationType.associateform.js index 4b2039667..a06e6ecff 100644 --- a/bizui/src/bizcomponents/terminationtype/TerminationType.associateform.js +++ b/bizui/src/bizcomponents/terminationtype/TerminationType.associateform.js @@ -21,7 +21,7 @@ const testValues = { code: 'ETT0000', baseDescription: '合同解除', detailDescription: '这个终止原因的描述是这样的.................................................', - companyId: 'RSCC000001', + companyId: 'RSCC00000001', } */ diff --git a/bizui/src/bizcomponents/terminationtype/TerminationType.base.js b/bizui/src/bizcomponents/terminationtype/TerminationType.base.js index 9a729bead..49ace5d98 100644 --- a/bizui/src/bizcomponents/terminationtype/TerminationType.base.js +++ b/bizui/src/bizcomponents/terminationtype/TerminationType.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -54,21 +55,25 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({terminationType,targetComponent})=>{ +const renderItemOfList=(terminationType,targetComponent)=>{ - const {TerminationTypeService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {terminationType.id} {terminationType.code} {terminationType.baseDescription} {terminationType.detailDescription} - {buildTransferModal(terminationType,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/terminationtype/TerminationType.createform.js b/bizui/src/bizcomponents/terminationtype/TerminationType.createform.js index 87c08d3a4..81ccfe20f 100644 --- a/bizui/src/bizcomponents/terminationtype/TerminationType.createform.js +++ b/bizui/src/bizcomponents/terminationtype/TerminationType.createform.js @@ -20,7 +20,7 @@ const testValues = { code: 'ETT0000', baseDescription: '合同解除', detailDescription: '这个终止原因的描述是这样的.................................................', - companyId: 'RSCC000001', + companyId: 'RSCC00000001', } */ diff --git a/bizui/src/bizcomponents/terminationtype/TerminationType.dashboard.js b/bizui/src/bizcomponents/terminationtype/TerminationType.dashboard.js index 48f505f9a..13a1f3c9b 100644 --- a/bizui/src/bizcomponents/terminationtype/TerminationType.dashboard.js +++ b/bizui/src/bizcomponents/terminationtype/TerminationType.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(terminationType)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (terminationType) =>defaultSettingListOf(terminationType, optionList) const internalLargeTextOf = (terminationType) =>{ @@ -125,7 +125,7 @@ class TerminationTypeDashboard extends Component { const cardsData = {cardsName:"雇佣终止类型",cardsFor: "terminationType", cardsSource: this.props.terminationType,returnURL,displayName, subItems: [ -{name: 'terminationList', displayName:'雇佣终止',type:'termination',count:terminationCount,addFunction: true, role: 'termination', metaInfo: terminationListMetaInfo}, +{name: 'terminationList', displayName:'雇佣终止',type:'termination',count:terminationCount,addFunction: true, role: 'termination', metaInfo: terminationListMetaInfo, renderItem: GlobalComponents.TerminationBase.renderItemOfList}, ], }; @@ -140,6 +140,8 @@ class TerminationTypeDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/terminationtype/TerminationType.permission.js b/bizui/src/bizcomponents/terminationtype/TerminationType.permission.js index 11bd095af..b70b1cf0c 100644 --- a/bizui/src/bizcomponents/terminationtype/TerminationType.permission.js +++ b/bizui/src/bizcomponents/terminationtype/TerminationType.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './TerminationType.preference.less' +import styles from './TerminationType.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/terminationtype/TerminationType.preference.js b/bizui/src/bizcomponents/terminationtype/TerminationType.preference.js deleted file mode 100644 index d8db6f11b..000000000 --- a/bizui/src/bizcomponents/terminationtype/TerminationType.preference.js +++ /dev/null @@ -1,351 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './TerminationType.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (terminationType) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (terminationType) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (terminationType) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {TerminationTypeService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = TerminationTypeService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (terminationType,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=terminationType.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_terminationType/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (terminationType,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(terminationType,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (terminationType) =>{ - return null -} -const internalRenderExtraFooter = (terminationType) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (terminationType,targetComponent) =>{ - const userContext = null - return ( - -{terminationType.id} -{terminationType.code} -{terminationType.baseDescription} -{terminationType.detailDescription} - - {buildTransferModal(terminationType,targetComponent)} - - ) - -} - - -const renderPermissionSetting = terminationType => { - const {TerminationTypeBase} = GlobalComponents - return - - -} - - -class TerminationTypePreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const terminationType = this.props.terminationType; - const { id,displayName, terminationCount } = terminationType - - - - const cardsData = {cardsName:"雇佣终止类型",cardsFor: "terminationType",cardsSource: terminationType, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - terminationType: state._terminationType, -}))(Form.create()(TerminationTypePreference)) - diff --git a/bizui/src/bizcomponents/terminationtype/TerminationType.preference.less b/bizui/src/bizcomponents/terminationtype/TerminationType.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/terminationtype/TerminationType.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/terminationtype/TerminationType.profile.js b/bizui/src/bizcomponents/terminationtype/TerminationType.profile.js index 9b5e3dcbc..5a659bcb6 100644 --- a/bizui/src/bizcomponents/terminationtype/TerminationType.profile.js +++ b/bizui/src/bizcomponents/terminationtype/TerminationType.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './TerminationType.preference.less' +import styles from './TerminationType.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,18 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (terminationType,targetComponent) =>{ - const userContext = null - return ( - -{terminationType.id} -{terminationType.code} -{terminationType.baseDescription} -{terminationType.detailDescription} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.TerminationTypeBase.renderItemOfList(item, targetComponents) + } @@ -65,13 +58,14 @@ class TerminationTypeProfile extends Component { const cardsData = {cardsName:"雇佣终止类型",cardsFor: "terminationType",cardsSource: terminationType, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -81,7 +75,7 @@ class TerminationTypeProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.associateform.js b/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.associateform.js index f8b250d6c..077be9e45 100644 --- a/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.associateform.js +++ b/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.associateform.js @@ -21,7 +21,7 @@ const testValues = { code: 'TC00', name: '入职培训', description: '培训是提升个人和企业竞争力的法宝', - companyId: 'RSCC000001', + companyId: 'RSCC00000001', } */ diff --git a/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.base.js b/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.base.js index f2d806ca6..1792a5f9f 100644 --- a/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.base.js +++ b/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -54,21 +55,25 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({trainingCourseType,targetComponent})=>{ +const renderItemOfList=(trainingCourseType,targetComponent)=>{ - const {TrainingCourseTypeService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {trainingCourseType.id} {trainingCourseType.code} {trainingCourseType.name} {trainingCourseType.description} - {buildTransferModal(trainingCourseType,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.createform.js b/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.createform.js index 065d8a3cc..866ad829b 100644 --- a/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.createform.js +++ b/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.createform.js @@ -20,7 +20,7 @@ const testValues = { code: 'TC00', name: '入职培训', description: '培训是提升个人和企业竞争力的法宝', - companyId: 'RSCC000001', + companyId: 'RSCC00000001', } */ diff --git a/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.dashboard.js b/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.dashboard.js index 14b553547..371e9a304 100644 --- a/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.dashboard.js +++ b/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(trainingCourseType)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (trainingCourseType) =>defaultSettingListOf(trainingCourseType, optionList) const internalLargeTextOf = (trainingCourseType) =>{ @@ -125,7 +125,7 @@ class TrainingCourseTypeDashboard extends Component { const cardsData = {cardsName:"培训课程类型",cardsFor: "trainingCourseType", cardsSource: this.props.trainingCourseType,returnURL,displayName, subItems: [ -{name: 'companyTrainingList', displayName:'公司培训',type:'companyTraining',count:companyTrainingCount,addFunction: true, role: 'companyTraining', metaInfo: companyTrainingListMetaInfo}, +{name: 'companyTrainingList', displayName:'公司培训',type:'companyTraining',count:companyTrainingCount,addFunction: true, role: 'companyTraining', metaInfo: companyTrainingListMetaInfo, renderItem: GlobalComponents.CompanyTrainingBase.renderItemOfList}, ], }; @@ -140,6 +140,8 @@ class TrainingCourseTypeDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.permission.js b/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.permission.js index f0b081699..eb48160af 100644 --- a/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.permission.js +++ b/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './TrainingCourseType.preference.less' +import styles from './TrainingCourseType.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.preference.js b/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.preference.js deleted file mode 100644 index f766f6b97..000000000 --- a/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.preference.js +++ /dev/null @@ -1,351 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './TrainingCourseType.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (trainingCourseType) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (trainingCourseType) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (trainingCourseType) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {TrainingCourseTypeService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = TrainingCourseTypeService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (trainingCourseType,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=trainingCourseType.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_trainingCourseType/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (trainingCourseType,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(trainingCourseType,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (trainingCourseType) =>{ - return null -} -const internalRenderExtraFooter = (trainingCourseType) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (trainingCourseType,targetComponent) =>{ - const userContext = null - return ( - -{trainingCourseType.id} -{trainingCourseType.code} -{trainingCourseType.name} -{trainingCourseType.description} - - {buildTransferModal(trainingCourseType,targetComponent)} - - ) - -} - - -const renderPermissionSetting = trainingCourseType => { - const {TrainingCourseTypeBase} = GlobalComponents - return - - -} - - -class TrainingCourseTypePreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const trainingCourseType = this.props.trainingCourseType; - const { id,displayName, companyTrainingCount } = trainingCourseType - - - - const cardsData = {cardsName:"培训课程类型",cardsFor: "trainingCourseType",cardsSource: trainingCourseType, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - trainingCourseType: state._trainingCourseType, -}))(Form.create()(TrainingCourseTypePreference)) - diff --git a/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.preference.less b/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.profile.js b/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.profile.js index b1fbedbec..77feb8121 100644 --- a/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.profile.js +++ b/bizui/src/bizcomponents/trainingcoursetype/TrainingCourseType.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './TrainingCourseType.preference.less' +import styles from './TrainingCourseType.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,18 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (trainingCourseType,targetComponent) =>{ - const userContext = null - return ( - -{trainingCourseType.id} -{trainingCourseType.code} -{trainingCourseType.name} -{trainingCourseType.description} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.TrainingCourseTypeBase.renderItemOfList(item, targetComponents) + } @@ -65,13 +58,14 @@ class TrainingCourseTypeProfile extends Component { const cardsData = {cardsName:"培训课程类型",cardsFor: "trainingCourseType",cardsSource: trainingCourseType, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -81,7 +75,7 @@ class TrainingCourseTypeProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/transportfleet/TransportFleet.associateform.js b/bizui/src/bizcomponents/transportfleet/TransportFleet.associateform.js index 4dae4fd80..b7b7631f8 100644 --- a/bizui/src/bizcomponents/transportfleet/TransportFleet.associateform.js +++ b/bizui/src/bizcomponents/transportfleet/TransportFleet.associateform.js @@ -20,7 +20,7 @@ const testValues = {}; const testValues = { name: '双链先锋号车队', contactNumber: '02887654321', - ownerId: 'RSCC000001', + ownerId: 'RSCC00000001', } */ diff --git a/bizui/src/bizcomponents/transportfleet/TransportFleet.base.js b/bizui/src/bizcomponents/transportfleet/TransportFleet.base.js index bc58c50c4..33a57e299 100644 --- a/bizui/src/bizcomponents/transportfleet/TransportFleet.base.js +++ b/bizui/src/bizcomponents/transportfleet/TransportFleet.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -56,21 +57,25 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({transportFleet,targetComponent})=>{ +const renderItemOfList=(transportFleet,targetComponent)=>{ - const {TransportFleetService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {transportFleet.id} {transportFleet.name} {transportFleet.contactNumber} { moment(transportFleet.lastUpdateTime).format('YYYY-MM-DD')} - {buildTransferModal(transportFleet,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/transportfleet/TransportFleet.createform.js b/bizui/src/bizcomponents/transportfleet/TransportFleet.createform.js index 115e5178c..1e659e6c0 100644 --- a/bizui/src/bizcomponents/transportfleet/TransportFleet.createform.js +++ b/bizui/src/bizcomponents/transportfleet/TransportFleet.createform.js @@ -19,7 +19,7 @@ const testValues = {}; const testValues = { name: '双链先锋号车队', contactNumber: '02887654321', - ownerId: 'RSCC000001', + ownerId: 'RSCC00000001', } */ diff --git a/bizui/src/bizcomponents/transportfleet/TransportFleet.dashboard.js b/bizui/src/bizcomponents/transportfleet/TransportFleet.dashboard.js index 0513dd206..25ce829db 100644 --- a/bizui/src/bizcomponents/transportfleet/TransportFleet.dashboard.js +++ b/bizui/src/bizcomponents/transportfleet/TransportFleet.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(transportFleet)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (transportFleet) =>defaultSettingListOf(transportFleet, optionList) const internalLargeTextOf = (transportFleet) =>{ @@ -125,9 +125,9 @@ class TransportFleetDashboard extends Component { const cardsData = {cardsName:"运输车队",cardsFor: "transportFleet", cardsSource: this.props.transportFleet,returnURL,displayName, subItems: [ -{name: 'transportTruckList', displayName:'运输车',type:'transportTruck',count:transportTruckCount,addFunction: true, role: 'transportTruck', metaInfo: transportTruckListMetaInfo}, -{name: 'truckDriverList', displayName:'卡车司机',type:'truckDriver',count:truckDriverCount,addFunction: true, role: 'truckDriver', metaInfo: truckDriverListMetaInfo}, -{name: 'transportTaskList', displayName:'运输任务',type:'transportTask',count:transportTaskCount,addFunction: true, role: 'transportTask', metaInfo: transportTaskListMetaInfo}, +{name: 'transportTruckList', displayName:'运输车',type:'transportTruck',count:transportTruckCount,addFunction: true, role: 'transportTruck', metaInfo: transportTruckListMetaInfo, renderItem: GlobalComponents.TransportTruckBase.renderItemOfList}, +{name: 'truckDriverList', displayName:'卡车司机',type:'truckDriver',count:truckDriverCount,addFunction: true, role: 'truckDriver', metaInfo: truckDriverListMetaInfo, renderItem: GlobalComponents.TruckDriverBase.renderItemOfList}, +{name: 'transportTaskList', displayName:'运输任务',type:'transportTask',count:transportTaskCount,addFunction: true, role: 'transportTask', metaInfo: transportTaskListMetaInfo, renderItem: GlobalComponents.TransportTaskBase.renderItemOfList}, ], }; @@ -142,6 +142,8 @@ class TransportFleetDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/transportfleet/TransportFleet.permission.js b/bizui/src/bizcomponents/transportfleet/TransportFleet.permission.js index c4f7d8e2a..c188d4a44 100644 --- a/bizui/src/bizcomponents/transportfleet/TransportFleet.permission.js +++ b/bizui/src/bizcomponents/transportfleet/TransportFleet.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './TransportFleet.preference.less' +import styles from './TransportFleet.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/transportfleet/TransportFleet.preference.js b/bizui/src/bizcomponents/transportfleet/TransportFleet.preference.js deleted file mode 100644 index 35c09c0f6..000000000 --- a/bizui/src/bizcomponents/transportfleet/TransportFleet.preference.js +++ /dev/null @@ -1,351 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './TransportFleet.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (transportFleet) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (transportFleet) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (transportFleet) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {TransportFleetService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = TransportFleetService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (transportFleet,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=transportFleet.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_transportFleet/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (transportFleet,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(transportFleet,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (transportFleet) =>{ - return null -} -const internalRenderExtraFooter = (transportFleet) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (transportFleet,targetComponent) =>{ - const userContext = null - return ( - -{transportFleet.id} -{transportFleet.name} -{transportFleet.contactNumber} -{ moment(transportFleet.lastUpdateTime).format('YYYY-MM-DD')} - - {buildTransferModal(transportFleet,targetComponent)} - - ) - -} - - -const renderPermissionSetting = transportFleet => { - const {TransportFleetBase} = GlobalComponents - return - - -} - - -class TransportFleetPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const transportFleet = this.props.transportFleet; - const { id,displayName, transportTruckCount, truckDriverCount, transportTaskCount } = transportFleet - - - - const cardsData = {cardsName:"运输车队",cardsFor: "transportFleet",cardsSource: transportFleet, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - transportFleet: state._transportFleet, -}))(Form.create()(TransportFleetPreference)) - diff --git a/bizui/src/bizcomponents/transportfleet/TransportFleet.preference.less b/bizui/src/bizcomponents/transportfleet/TransportFleet.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/transportfleet/TransportFleet.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/transportfleet/TransportFleet.profile.js b/bizui/src/bizcomponents/transportfleet/TransportFleet.profile.js index 9d2a1adce..8a6173a7f 100644 --- a/bizui/src/bizcomponents/transportfleet/TransportFleet.profile.js +++ b/bizui/src/bizcomponents/transportfleet/TransportFleet.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './TransportFleet.preference.less' +import styles from './TransportFleet.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,18 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (transportFleet,targetComponent) =>{ - const userContext = null - return ( - -{transportFleet.id} -{transportFleet.name} -{transportFleet.contactNumber} -{ moment(transportFleet.lastUpdateTime).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.TransportFleetBase.renderItemOfList(item, targetComponents) + } @@ -65,13 +58,14 @@ class TransportFleetProfile extends Component { const cardsData = {cardsName:"运输车队",cardsFor: "transportFleet",cardsSource: transportFleet, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -81,7 +75,7 @@ class TransportFleetProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/transporttask/TransportTask.associateform.js b/bizui/src/bizcomponents/transporttask/TransportTask.associateform.js index 368bf92ba..af9fff6e8 100644 --- a/bizui/src/bizcomponents/transporttask/TransportTask.associateform.js +++ b/bizui/src/bizcomponents/transporttask/TransportTask.associateform.js @@ -20,13 +20,13 @@ const testValues = {}; const testValues = { name: '货运记录', start: '双链二号仓', - beginTime: '2018-06-28', - latitude: '42.732027120718215', - longitude: '131.56985745108886', - endId: 'RS000001', - driverId: 'TD000001', - truckId: 'TT000001', - belongsToId: 'TF000001', + beginTime: '2019-06-17', + latitude: '41.18469973138371', + longitude: '130.9080471470311', + endId: 'RS00000001', + driverId: 'TD00000001', + truckId: 'TT00000001', + belongsToId: 'TF00000001', } */ diff --git a/bizui/src/bizcomponents/transporttask/TransportTask.base.js b/bizui/src/bizcomponents/transporttask/TransportTask.base.js index 03bf1482d..c19638da3 100644 --- a/bizui/src/bizcomponents/transporttask/TransportTask.base.js +++ b/bizui/src/bizcomponents/transporttask/TransportTask.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -65,47 +66,35 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({transportTask,targetComponent})=>{ +const renderItemOfList=(transportTask,targetComponent)=>{ - const {TransportTaskService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {transportTask.id} {transportTask.name} {transportTask.start} { moment(transportTask.beginTime).format('YYYY-MM-DD')} {transportTask.end==null?appLocaleName(userContext,"NotAssigned"):`${transportTask.end.displayName}(${transportTask.end.id})`} - - showTransferModel(targetComponent,"结束","retailStore",TransportTaskService.requestCandidateEnd, - TransportTaskService.transferToAnotherEnd,"anotherEndId",transportTask.end?transportTask.end.id:"")} - style={{fontSize: 20,color:"red"}} /> {transportTask.driver==null?appLocaleName(userContext,"NotAssigned"):`${transportTask.driver.displayName}(${transportTask.driver.id})`} - - showTransferModel(targetComponent,"司机","truckDriver",TransportTaskService.requestCandidateDriver, - TransportTaskService.transferToAnotherDriver,"anotherDriverId",transportTask.driver?transportTask.driver.id:"")} - style={{fontSize: 20,color:"red"}} /> {transportTask.truck==null?appLocaleName(userContext,"NotAssigned"):`${transportTask.truck.displayName}(${transportTask.truck.id})`} - - showTransferModel(targetComponent,"卡车","transportTruck",TransportTaskService.requestCandidateTruck, - TransportTaskService.transferToAnotherTruck,"anotherTruckId",transportTask.truck?transportTask.truck.id:"")} - style={{fontSize: 20,color:"red"}} /> {transportTask.belongsTo==null?appLocaleName(userContext,"NotAssigned"):`${transportTask.belongsTo.displayName}(${transportTask.belongsTo.id})`} - - showTransferModel(targetComponent,"属于","transportFleet",TransportTaskService.requestCandidateBelongsTo, - TransportTaskService.transferToAnotherBelongsTo,"anotherBelongsToId",transportTask.belongsTo?transportTask.belongsTo.id:"")} - style={{fontSize: 20,color:"red"}} /> {transportTask.latitude} {transportTask.longitude} - {buildTransferModal(transportTask,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/transporttask/TransportTask.createform.js b/bizui/src/bizcomponents/transporttask/TransportTask.createform.js index c08763c49..9cfc787ce 100644 --- a/bizui/src/bizcomponents/transporttask/TransportTask.createform.js +++ b/bizui/src/bizcomponents/transporttask/TransportTask.createform.js @@ -19,13 +19,13 @@ const testValues = {}; const testValues = { name: '货运记录', start: '双链二号仓', - beginTime: '2016-11-02', - latitude: '39.88682457024046', - longitude: '132.22401870991933', - endId: 'RS000001', - driverId: 'TD000001', - truckId: 'TT000001', - belongsToId: 'TF000001', + beginTime: '2016-11-21', + latitude: '40.025612114842176', + longitude: '130.52264655138805', + endId: 'RS00000001', + driverId: 'TD00000001', + truckId: 'TT00000001', + belongsToId: 'TF00000001', } */ diff --git a/bizui/src/bizcomponents/transporttask/TransportTask.dashboard.js b/bizui/src/bizcomponents/transporttask/TransportTask.dashboard.js index 80697836e..2e1050549 100644 --- a/bizui/src/bizcomponents/transporttask/TransportTask.dashboard.js +++ b/bizui/src/bizcomponents/transporttask/TransportTask.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(transportTask)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (transportTask) =>defaultSettingListOf(transportTask, optionList) const internalLargeTextOf = (transportTask) =>{ @@ -151,8 +151,8 @@ class TransportTaskDashboard extends Component { const cardsData = {cardsName:"运输任务",cardsFor: "transportTask", cardsSource: this.props.transportTask,returnURL,displayName, subItems: [ -{name: 'goodsList', displayName:'货物',type:'goods',count:goodsCount,addFunction: true, role: 'goods', metaInfo: goodsListMetaInfo}, -{name: 'transportTaskTrackList', displayName:'运输任务跟踪',type:'transportTaskTrack',count:transportTaskTrackCount,addFunction: true, role: 'transportTaskTrack', metaInfo: transportTaskTrackListMetaInfo}, +{name: 'goodsList', displayName:'货物',type:'goods',count:goodsCount,addFunction: true, role: 'goods', metaInfo: goodsListMetaInfo, renderItem: GlobalComponents.GoodsBase.renderItemOfList}, +{name: 'transportTaskTrackList', displayName:'运输任务跟踪',type:'transportTaskTrack',count:transportTaskTrackCount,addFunction: true, role: 'transportTaskTrack', metaInfo: transportTaskTrackListMetaInfo, renderItem: GlobalComponents.TransportTaskTrackBase.renderItemOfList}, ], }; @@ -167,6 +167,8 @@ class TransportTaskDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/transporttask/TransportTask.permission.js b/bizui/src/bizcomponents/transporttask/TransportTask.permission.js index e888bd9d0..348d25e87 100644 --- a/bizui/src/bizcomponents/transporttask/TransportTask.permission.js +++ b/bizui/src/bizcomponents/transporttask/TransportTask.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './TransportTask.preference.less' +import styles from './TransportTask.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/transporttask/TransportTask.preference.js b/bizui/src/bizcomponents/transporttask/TransportTask.preference.js deleted file mode 100644 index 627aee69c..000000000 --- a/bizui/src/bizcomponents/transporttask/TransportTask.preference.js +++ /dev/null @@ -1,377 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './TransportTask.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (transportTask) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (transportTask) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (transportTask) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {TransportTaskService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = TransportTaskService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (transportTask,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=transportTask.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_transportTask/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (transportTask,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(transportTask,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (transportTask) =>{ - return null -} -const internalRenderExtraFooter = (transportTask) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (transportTask,targetComponent) =>{ - const userContext = null - return ( - -{transportTask.id} -{transportTask.name} -{transportTask.start} -{ moment(transportTask.beginTime).format('YYYY-MM-DD')} -{transportTask.end==null?appLocaleName(userContext,"NotAssigned"):transportTask.end.displayName} - - showTransferModel(targetComponent,"结束","retailStore","requestCandidateEnd", - "transferToAnotherEnd","anotherEndId",transportTask.end?transportTask.end.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{transportTask.driver==null?appLocaleName(userContext,"NotAssigned"):transportTask.driver.displayName} - - showTransferModel(targetComponent,"司机","truckDriver","requestCandidateDriver", - "transferToAnotherDriver","anotherDriverId",transportTask.driver?transportTask.driver.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{transportTask.truck==null?appLocaleName(userContext,"NotAssigned"):transportTask.truck.displayName} - - showTransferModel(targetComponent,"卡车","transportTruck","requestCandidateTruck", - "transferToAnotherTruck","anotherTruckId",transportTask.truck?transportTask.truck.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{transportTask.belongsTo==null?appLocaleName(userContext,"NotAssigned"):transportTask.belongsTo.displayName} - - showTransferModel(targetComponent,"属于","transportFleet","requestCandidateBelongsTo", - "transferToAnotherBelongsTo","anotherBelongsToId",transportTask.belongsTo?transportTask.belongsTo.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{transportTask.latitude} -{transportTask.longitude} - - {buildTransferModal(transportTask,targetComponent)} - - ) - -} - - -const renderPermissionSetting = transportTask => { - const {TransportTaskBase} = GlobalComponents - return - - -} - - -class TransportTaskPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const transportTask = this.props.transportTask; - const { id,displayName, goodsCount, transportTaskTrackCount } = transportTask - - - - const cardsData = {cardsName:"运输任务",cardsFor: "transportTask",cardsSource: transportTask, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - transportTask: state._transportTask, -}))(Form.create()(TransportTaskPreference)) - diff --git a/bizui/src/bizcomponents/transporttask/TransportTask.preference.less b/bizui/src/bizcomponents/transporttask/TransportTask.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/transporttask/TransportTask.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/transporttask/TransportTask.profile.js b/bizui/src/bizcomponents/transporttask/TransportTask.profile.js index 3691aa681..54364b8d4 100644 --- a/bizui/src/bizcomponents/transporttask/TransportTask.profile.js +++ b/bizui/src/bizcomponents/transporttask/TransportTask.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './TransportTask.preference.less' +import styles from './TransportTask.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,20 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (transportTask,targetComponent) =>{ - const userContext = null - return ( - -{transportTask.id} -{transportTask.name} -{transportTask.start} -{ moment(transportTask.beginTime).format('YYYY-MM-DD')} -{transportTask.latitude} -{transportTask.longitude} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.TransportTaskBase.renderItemOfList(item, targetComponents) + } @@ -67,13 +58,14 @@ class TransportTaskProfile extends Component { const cardsData = {cardsName:"运输任务",cardsFor: "transportTask",cardsSource: transportTask, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -83,7 +75,7 @@ class TransportTaskProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.associateform.js b/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.associateform.js index d84e786c5..ab679f26e 100644 --- a/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.associateform.js +++ b/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.associateform.js @@ -18,10 +18,10 @@ const { TextArea } = Input const testValues = {}; /* const testValues = { - trackTime: '2018-03-22', - latitude: '32.77776208496111', - longitude: '105.81693854742218', - movementId: 'TT000001', + trackTime: '2017-01-12', + latitude: '31.636608816763246', + longitude: '103.90714785525027', + movementId: 'TT00000001', } */ diff --git a/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.base.js b/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.base.js index e016c59cc..93cbe54fd 100644 --- a/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.base.js +++ b/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -53,27 +54,27 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({transportTaskTrack,targetComponent})=>{ +const renderItemOfList=(transportTaskTrack,targetComponent)=>{ - const {TransportTaskTrackService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {transportTaskTrack.id} { moment(transportTaskTrack.trackTime).format('YYYY-MM-DD')} {transportTaskTrack.latitude} {transportTaskTrack.longitude} {transportTaskTrack.movement==null?appLocaleName(userContext,"NotAssigned"):`${transportTaskTrack.movement.displayName}(${transportTaskTrack.movement.id})`} - - showTransferModel(targetComponent,"运动","transportTask",TransportTaskTrackService.requestCandidateMovement, - TransportTaskTrackService.transferToAnotherMovement,"anotherMovementId",transportTaskTrack.movement?transportTaskTrack.movement.id:"")} - style={{fontSize: 20,color:"red"}} /> - {buildTransferModal(transportTaskTrack,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.createform.js b/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.createform.js index 30862733c..575162e5a 100644 --- a/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.createform.js +++ b/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.createform.js @@ -17,10 +17,10 @@ const { TextArea } = Input const testValues = {}; /* const testValues = { - trackTime: '2018-04-13', - latitude: '30.84109771302419', - longitude: '104.80561656124341', - movementId: 'TT000001', + trackTime: '2018-07-01', + latitude: '31.322155255982782', + longitude: '104.11435924664274', + movementId: 'TT00000001', } */ diff --git a/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.dashboard.js b/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.dashboard.js index 9f7359bd8..c0093c09b 100644 --- a/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.dashboard.js +++ b/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(transportTaskTrack)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (transportTaskTrack) =>defaultSettingListOf(transportTaskTrack, optionList) const internalLargeTextOf = (transportTaskTrack) =>{ @@ -145,6 +145,8 @@ class TransportTaskTrackDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.permission.js b/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.permission.js index 16feb637f..fef8ba1d1 100644 --- a/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.permission.js +++ b/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './TransportTaskTrack.preference.less' +import styles from './TransportTaskTrack.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.preference.js b/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.preference.js deleted file mode 100644 index 37b5f60a8..000000000 --- a/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.preference.js +++ /dev/null @@ -1,357 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './TransportTaskTrack.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (transportTaskTrack) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (transportTaskTrack) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (transportTaskTrack) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {TransportTaskTrackService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = TransportTaskTrackService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (transportTaskTrack,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=transportTaskTrack.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_transportTaskTrack/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (transportTaskTrack,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(transportTaskTrack,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (transportTaskTrack) =>{ - return null -} -const internalRenderExtraFooter = (transportTaskTrack) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (transportTaskTrack,targetComponent) =>{ - const userContext = null - return ( - -{transportTaskTrack.id} -{ moment(transportTaskTrack.trackTime).format('YYYY-MM-DD')} -{transportTaskTrack.latitude} -{transportTaskTrack.longitude} -{transportTaskTrack.movement==null?appLocaleName(userContext,"NotAssigned"):transportTaskTrack.movement.displayName} - - showTransferModel(targetComponent,"运动","transportTask","requestCandidateMovement", - "transferToAnotherMovement","anotherMovementId",transportTaskTrack.movement?transportTaskTrack.movement.id:"")} - style={{fontSize: 20,color:"red"}} /> - - - {buildTransferModal(transportTaskTrack,targetComponent)} - - ) - -} - - -const renderPermissionSetting = transportTaskTrack => { - const {TransportTaskTrackBase} = GlobalComponents - return - - -} - - -class TransportTaskTrackPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const transportTaskTrack = this.props.transportTaskTrack; - const { id,displayName, } = transportTaskTrack - - - - const cardsData = {cardsName:"运输任务跟踪",cardsFor: "transportTaskTrack",cardsSource: transportTaskTrack, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - transportTaskTrack: state._transportTaskTrack, -}))(Form.create()(TransportTaskTrackPreference)) - diff --git a/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.preference.less b/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.profile.js b/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.profile.js index 898712f79..74d960364 100644 --- a/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.profile.js +++ b/bizui/src/bizcomponents/transporttasktrack/TransportTaskTrack.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './TransportTaskTrack.preference.less' +import styles from './TransportTaskTrack.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,18 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (transportTaskTrack,targetComponent) =>{ - const userContext = null - return ( - -{transportTaskTrack.id} -{ moment(transportTaskTrack.trackTime).format('YYYY-MM-DD')} -{transportTaskTrack.latitude} -{transportTaskTrack.longitude} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.TransportTaskTrackBase.renderItemOfList(item, targetComponents) + } @@ -65,13 +58,14 @@ class TransportTaskTrackProfile extends Component { const cardsData = {cardsName:"运输任务跟踪",cardsFor: "transportTaskTrack",cardsSource: transportTaskTrack, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -81,7 +75,7 @@ class TransportTaskTrackProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/transporttruck/TransportTruck.associateform.js b/bizui/src/bizcomponents/transporttruck/TransportTruck.associateform.js index b4220090f..fab49a00a 100644 --- a/bizui/src/bizcomponents/transporttruck/TransportTruck.associateform.js +++ b/bizui/src/bizcomponents/transporttruck/TransportTruck.associateform.js @@ -23,10 +23,10 @@ const testValues = { contactNumber: '02887654321', vehicleLicenseNumber: 'VL9198', engineNumber: 'EN00102', - makeDate: '2019-01-31', + makeDate: '2016-07-06', mileage: '100万公里', bodyColor: '红色', - ownerId: 'TF000001', + ownerId: 'TF00000001', } */ diff --git a/bizui/src/bizcomponents/transporttruck/TransportTruck.base.js b/bizui/src/bizcomponents/transporttruck/TransportTruck.base.js index c73470231..fa8a13599 100644 --- a/bizui/src/bizcomponents/transporttruck/TransportTruck.base.js +++ b/bizui/src/bizcomponents/transporttruck/TransportTruck.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -64,14 +65,16 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({transportTruck,targetComponent})=>{ +const renderItemOfList=(transportTruck,targetComponent)=>{ - const {TransportTruckService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {transportTruck.id} {transportTruck.name} {transportTruck.plateNumber} @@ -82,14 +85,12 @@ const renderItemOfList=({transportTruck,targetComponent})=>{ {transportTruck.mileage} {transportTruck.bodyColor} {transportTruck.owner==null?appLocaleName(userContext,"NotAssigned"):`${transportTruck.owner.displayName}(${transportTruck.owner.id})`} - - showTransferModel(targetComponent,"业主","transportFleet",TransportTruckService.requestCandidateOwner, - TransportTruckService.transferToAnotherOwner,"anotherOwnerId",transportTruck.owner?transportTruck.owner.id:"")} - style={{fontSize: 20,color:"red"}} /> - {buildTransferModal(transportTruck,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/transporttruck/TransportTruck.createform.js b/bizui/src/bizcomponents/transporttruck/TransportTruck.createform.js index 71a964701..67608debd 100644 --- a/bizui/src/bizcomponents/transporttruck/TransportTruck.createform.js +++ b/bizui/src/bizcomponents/transporttruck/TransportTruck.createform.js @@ -22,10 +22,10 @@ const testValues = { contactNumber: '02887654321', vehicleLicenseNumber: 'VL9198', engineNumber: 'EN00102', - makeDate: '2017-08-11', + makeDate: '2018-06-25', mileage: '100万公里', bodyColor: '红色', - ownerId: 'TF000001', + ownerId: 'TF00000001', } */ diff --git a/bizui/src/bizcomponents/transporttruck/TransportTruck.dashboard.js b/bizui/src/bizcomponents/transporttruck/TransportTruck.dashboard.js index 17f6d9bed..e0d5999ed 100644 --- a/bizui/src/bizcomponents/transporttruck/TransportTruck.dashboard.js +++ b/bizui/src/bizcomponents/transporttruck/TransportTruck.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(transportTruck)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (transportTruck) =>defaultSettingListOf(transportTruck, optionList) const internalLargeTextOf = (transportTruck) =>{ @@ -136,7 +136,7 @@ class TransportTruckDashboard extends Component { const cardsData = {cardsName:"运输车",cardsFor: "transportTruck", cardsSource: this.props.transportTruck,returnURL,displayName, subItems: [ -{name: 'transportTaskList', displayName:'运输任务',type:'transportTask',count:transportTaskCount,addFunction: true, role: 'transportTask', metaInfo: transportTaskListMetaInfo}, +{name: 'transportTaskList', displayName:'运输任务',type:'transportTask',count:transportTaskCount,addFunction: true, role: 'transportTask', metaInfo: transportTaskListMetaInfo, renderItem: GlobalComponents.TransportTaskBase.renderItemOfList}, ], }; @@ -151,6 +151,8 @@ class TransportTruckDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/transporttruck/TransportTruck.permission.js b/bizui/src/bizcomponents/transporttruck/TransportTruck.permission.js index 71a16c22d..f9b44e4a5 100644 --- a/bizui/src/bizcomponents/transporttruck/TransportTruck.permission.js +++ b/bizui/src/bizcomponents/transporttruck/TransportTruck.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './TransportTruck.preference.less' +import styles from './TransportTruck.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/transporttruck/TransportTruck.preference.js b/bizui/src/bizcomponents/transporttruck/TransportTruck.preference.js deleted file mode 100644 index 6a09da5e3..000000000 --- a/bizui/src/bizcomponents/transporttruck/TransportTruck.preference.js +++ /dev/null @@ -1,362 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './TransportTruck.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (transportTruck) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (transportTruck) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (transportTruck) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {TransportTruckService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = TransportTruckService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (transportTruck,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=transportTruck.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_transportTruck/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (transportTruck,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(transportTruck,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (transportTruck) =>{ - return null -} -const internalRenderExtraFooter = (transportTruck) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (transportTruck,targetComponent) =>{ - const userContext = null - return ( - -{transportTruck.id} -{transportTruck.name} -{transportTruck.plateNumber} -{transportTruck.contactNumber} -{transportTruck.vehicleLicenseNumber} -{transportTruck.engineNumber} -{ moment(transportTruck.makeDate).format('YYYY-MM-DD')} -{transportTruck.mileage} -{transportTruck.bodyColor} -{transportTruck.owner==null?appLocaleName(userContext,"NotAssigned"):transportTruck.owner.displayName} - - showTransferModel(targetComponent,"业主","transportFleet","requestCandidateOwner", - "transferToAnotherOwner","anotherOwnerId",transportTruck.owner?transportTruck.owner.id:"")} - style={{fontSize: 20,color:"red"}} /> - - - {buildTransferModal(transportTruck,targetComponent)} - - ) - -} - - -const renderPermissionSetting = transportTruck => { - const {TransportTruckBase} = GlobalComponents - return - - -} - - -class TransportTruckPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const transportTruck = this.props.transportTruck; - const { id,displayName, transportTaskCount } = transportTruck - - - - const cardsData = {cardsName:"运输车",cardsFor: "transportTruck",cardsSource: transportTruck, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - transportTruck: state._transportTruck, -}))(Form.create()(TransportTruckPreference)) - diff --git a/bizui/src/bizcomponents/transporttruck/TransportTruck.preference.less b/bizui/src/bizcomponents/transporttruck/TransportTruck.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/transporttruck/TransportTruck.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/transporttruck/TransportTruck.profile.js b/bizui/src/bizcomponents/transporttruck/TransportTruck.profile.js index 0505c43ec..114188b0c 100644 --- a/bizui/src/bizcomponents/transporttruck/TransportTruck.profile.js +++ b/bizui/src/bizcomponents/transporttruck/TransportTruck.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './TransportTruck.preference.less' +import styles from './TransportTruck.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,23 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (transportTruck,targetComponent) =>{ - const userContext = null - return ( - -{transportTruck.id} -{transportTruck.name} -{transportTruck.plateNumber} -{transportTruck.contactNumber} -{transportTruck.vehicleLicenseNumber} -{transportTruck.engineNumber} -{ moment(transportTruck.makeDate).format('YYYY-MM-DD')} -{transportTruck.mileage} -{transportTruck.bodyColor} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.TransportTruckBase.renderItemOfList(item, targetComponents) + } @@ -70,13 +58,14 @@ class TransportTruckProfile extends Component { const cardsData = {cardsName:"运输车",cardsFor: "transportTruck",cardsSource: transportTruck, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -86,7 +75,7 @@ class TransportTruckProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/truckdriver/TruckDriver.associateform.js b/bizui/src/bizcomponents/truckdriver/TruckDriver.associateform.js index a10ee7944..1deb76c30 100644 --- a/bizui/src/bizcomponents/truckdriver/TruckDriver.associateform.js +++ b/bizui/src/bizcomponents/truckdriver/TruckDriver.associateform.js @@ -21,7 +21,7 @@ const testValues = { name: '运货卡车司机', driverLicenseNumber: '51099887733', contactNumber: '18777778888', - belongsToId: 'TF000001', + belongsToId: 'TF00000001', } */ diff --git a/bizui/src/bizcomponents/truckdriver/TruckDriver.base.js b/bizui/src/bizcomponents/truckdriver/TruckDriver.base.js index 38931c41a..10ee35779 100644 --- a/bizui/src/bizcomponents/truckdriver/TruckDriver.base.js +++ b/bizui/src/bizcomponents/truckdriver/TruckDriver.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -54,27 +55,27 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({truckDriver,targetComponent})=>{ +const renderItemOfList=(truckDriver,targetComponent)=>{ - const {TruckDriverService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {truckDriver.id} {truckDriver.name} {truckDriver.driverLicenseNumber} {truckDriver.contactNumber} {truckDriver.belongsTo==null?appLocaleName(userContext,"NotAssigned"):`${truckDriver.belongsTo.displayName}(${truckDriver.belongsTo.id})`} - - showTransferModel(targetComponent,"属于","transportFleet",TruckDriverService.requestCandidateBelongsTo, - TruckDriverService.transferToAnotherBelongsTo,"anotherBelongsToId",truckDriver.belongsTo?truckDriver.belongsTo.id:"")} - style={{fontSize: 20,color:"red"}} /> - {buildTransferModal(truckDriver,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/truckdriver/TruckDriver.createform.js b/bizui/src/bizcomponents/truckdriver/TruckDriver.createform.js index 6b0abc874..56e2636cf 100644 --- a/bizui/src/bizcomponents/truckdriver/TruckDriver.createform.js +++ b/bizui/src/bizcomponents/truckdriver/TruckDriver.createform.js @@ -20,7 +20,7 @@ const testValues = { name: '运货卡车司机', driverLicenseNumber: '51099887733', contactNumber: '18777778888', - belongsToId: 'TF000001', + belongsToId: 'TF00000001', } */ diff --git a/bizui/src/bizcomponents/truckdriver/TruckDriver.dashboard.js b/bizui/src/bizcomponents/truckdriver/TruckDriver.dashboard.js index 3c71143d1..1e7e4a34f 100644 --- a/bizui/src/bizcomponents/truckdriver/TruckDriver.dashboard.js +++ b/bizui/src/bizcomponents/truckdriver/TruckDriver.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(truckDriver)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (truckDriver) =>defaultSettingListOf(truckDriver, optionList) const internalLargeTextOf = (truckDriver) =>{ @@ -131,7 +131,7 @@ class TruckDriverDashboard extends Component { const cardsData = {cardsName:"卡车司机",cardsFor: "truckDriver", cardsSource: this.props.truckDriver,returnURL,displayName, subItems: [ -{name: 'transportTaskList', displayName:'运输任务',type:'transportTask',count:transportTaskCount,addFunction: true, role: 'transportTask', metaInfo: transportTaskListMetaInfo}, +{name: 'transportTaskList', displayName:'运输任务',type:'transportTask',count:transportTaskCount,addFunction: true, role: 'transportTask', metaInfo: transportTaskListMetaInfo, renderItem: GlobalComponents.TransportTaskBase.renderItemOfList}, ], }; @@ -146,6 +146,8 @@ class TruckDriverDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/truckdriver/TruckDriver.permission.js b/bizui/src/bizcomponents/truckdriver/TruckDriver.permission.js index f2c046018..6b31fd3d8 100644 --- a/bizui/src/bizcomponents/truckdriver/TruckDriver.permission.js +++ b/bizui/src/bizcomponents/truckdriver/TruckDriver.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './TruckDriver.preference.less' +import styles from './TruckDriver.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/truckdriver/TruckDriver.preference.js b/bizui/src/bizcomponents/truckdriver/TruckDriver.preference.js deleted file mode 100644 index 79a5f5566..000000000 --- a/bizui/src/bizcomponents/truckdriver/TruckDriver.preference.js +++ /dev/null @@ -1,357 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './TruckDriver.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (truckDriver) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (truckDriver) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (truckDriver) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {TruckDriverService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = TruckDriverService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (truckDriver,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=truckDriver.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_truckDriver/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (truckDriver,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(truckDriver,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (truckDriver) =>{ - return null -} -const internalRenderExtraFooter = (truckDriver) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (truckDriver,targetComponent) =>{ - const userContext = null - return ( - -{truckDriver.id} -{truckDriver.name} -{truckDriver.driverLicenseNumber} -{truckDriver.contactNumber} -{truckDriver.belongsTo==null?appLocaleName(userContext,"NotAssigned"):truckDriver.belongsTo.displayName} - - showTransferModel(targetComponent,"属于","transportFleet","requestCandidateBelongsTo", - "transferToAnotherBelongsTo","anotherBelongsToId",truckDriver.belongsTo?truckDriver.belongsTo.id:"")} - style={{fontSize: 20,color:"red"}} /> - - - {buildTransferModal(truckDriver,targetComponent)} - - ) - -} - - -const renderPermissionSetting = truckDriver => { - const {TruckDriverBase} = GlobalComponents - return - - -} - - -class TruckDriverPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const truckDriver = this.props.truckDriver; - const { id,displayName, transportTaskCount } = truckDriver - - - - const cardsData = {cardsName:"卡车司机",cardsFor: "truckDriver",cardsSource: truckDriver, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - truckDriver: state._truckDriver, -}))(Form.create()(TruckDriverPreference)) - diff --git a/bizui/src/bizcomponents/truckdriver/TruckDriver.preference.less b/bizui/src/bizcomponents/truckdriver/TruckDriver.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/truckdriver/TruckDriver.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/truckdriver/TruckDriver.profile.js b/bizui/src/bizcomponents/truckdriver/TruckDriver.profile.js index 33f2febe3..beb9af41b 100644 --- a/bizui/src/bizcomponents/truckdriver/TruckDriver.profile.js +++ b/bizui/src/bizcomponents/truckdriver/TruckDriver.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './TruckDriver.preference.less' +import styles from './TruckDriver.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,18 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (truckDriver,targetComponent) =>{ - const userContext = null - return ( - -{truckDriver.id} -{truckDriver.name} -{truckDriver.driverLicenseNumber} -{truckDriver.contactNumber} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.TruckDriverBase.renderItemOfList(item, targetComponents) + } @@ -65,13 +58,14 @@ class TruckDriverProfile extends Component { const cardsData = {cardsName:"卡车司机",cardsFor: "truckDriver",cardsSource: truckDriver, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -81,7 +75,7 @@ class TruckDriverProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/userapp/UserApp.associateform.js b/bizui/src/bizcomponents/userapp/UserApp.associateform.js index 2b27fc60c..b7e39e136 100644 --- a/bizui/src/bizcomponents/userapp/UserApp.associateform.js +++ b/bizui/src/bizcomponents/userapp/UserApp.associateform.js @@ -24,7 +24,7 @@ const testValues = { objectType: 'CarInspectionPlatform', objectId: 'CIP000001', location: '/link/to/app', - secUserId: 'SU000001', + secUserId: 'SU00000001', } */ diff --git a/bizui/src/bizcomponents/userapp/UserApp.base.js b/bizui/src/bizcomponents/userapp/UserApp.base.js index 3aa4101f6..12bd6dd9d 100644 --- a/bizui/src/bizcomponents/userapp/UserApp.base.js +++ b/bizui/src/bizcomponents/userapp/UserApp.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -63,21 +64,19 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({userApp,targetComponent})=>{ +const renderItemOfList=(userApp,targetComponent)=>{ - const {UserAppService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {userApp.id} {userApp.title} {userApp.secUser==null?appLocaleName(userContext,"NotAssigned"):`${userApp.secUser.displayName}(${userApp.secUser.id})`} - - showTransferModel(targetComponent,"SEC的用户","secUser",UserAppService.requestCandidateSecUser, - UserAppService.transferToAnotherSecUser,"anotherSecUserId",userApp.secUser?userApp.secUser.id:"")} - style={{fontSize: 20,color:"red"}} /> {userApp.appIcon} {userApp.permission} @@ -85,8 +84,10 @@ const renderItemOfList=({userApp,targetComponent})=>{ {userApp.objectId} {userApp.location} - {buildTransferModal(userApp,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/userapp/UserApp.createform.js b/bizui/src/bizcomponents/userapp/UserApp.createform.js index 158785e79..b2c4f1e48 100644 --- a/bizui/src/bizcomponents/userapp/UserApp.createform.js +++ b/bizui/src/bizcomponents/userapp/UserApp.createform.js @@ -23,7 +23,7 @@ const testValues = { objectType: 'CarInspectionPlatform', objectId: 'CIP000001', location: '/link/to/app', - secUserId: 'SU000001', + secUserId: 'SU00000001', } */ diff --git a/bizui/src/bizcomponents/userapp/UserApp.dashboard.js b/bizui/src/bizcomponents/userapp/UserApp.dashboard.js index 67adb5dd4..22212ff01 100644 --- a/bizui/src/bizcomponents/userapp/UserApp.dashboard.js +++ b/bizui/src/bizcomponents/userapp/UserApp.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -51,6 +50,7 @@ const optionList =(userApp)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (userApp) =>defaultSettingListOf(userApp, optionList) const internalLargeTextOf = (userApp) =>{ @@ -135,8 +135,8 @@ class UserAppDashboard extends Component { const cardsData = {cardsName:"用户应用程序",cardsFor: "userApp", cardsSource: this.props.userApp,returnURL,displayName, subItems: [ -{name: 'listAccessList', displayName:'访问列表',type:'listAccess',count:listAccessCount,addFunction: true, role: 'listAccess', metaInfo: listAccessListMetaInfo}, -{name: 'objectAccessList', displayName:'对象访问',type:'objectAccess',count:objectAccessCount,addFunction: true, role: 'objectAccess', metaInfo: objectAccessListMetaInfo}, +{name: 'listAccessList', displayName:'访问列表',type:'listAccess',count:listAccessCount,addFunction: true, role: 'listAccess', metaInfo: listAccessListMetaInfo, renderItem: GlobalComponents.ListAccessBase.renderItemOfList}, +{name: 'objectAccessList', displayName:'对象访问',type:'objectAccess',count:objectAccessCount,addFunction: true, role: 'objectAccess', metaInfo: objectAccessListMetaInfo, renderItem: GlobalComponents.ObjectAccessBase.renderItemOfList}, ], }; @@ -151,6 +151,8 @@ class UserAppDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/userapp/UserApp.permission.js b/bizui/src/bizcomponents/userapp/UserApp.permission.js index 7feadedd2..1bc08c48a 100644 --- a/bizui/src/bizcomponents/userapp/UserApp.permission.js +++ b/bizui/src/bizcomponents/userapp/UserApp.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './UserApp.preference.less' +import styles from './UserApp.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/userapp/UserApp.preference.js b/bizui/src/bizcomponents/userapp/UserApp.preference.js deleted file mode 100644 index 0dd5ac3e4..000000000 --- a/bizui/src/bizcomponents/userapp/UserApp.preference.js +++ /dev/null @@ -1,361 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './UserApp.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (userApp) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (userApp) =>{ - const userContext = null - const optionList = [ - {"title":'完全访问',"value":userApp.fullAccess,"parameterName":"fullAccess"}, -] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (userApp) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {UserAppService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = UserAppService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (userApp,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=userApp.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_userApp/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (userApp,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(userApp,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (userApp) =>{ - return null -} -const internalRenderExtraFooter = (userApp) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (userApp,targetComponent) =>{ - const userContext = null - return ( - -{userApp.id} -{userApp.title} -{userApp.secUser==null?appLocaleName(userContext,"NotAssigned"):userApp.secUser.displayName} - - showTransferModel(targetComponent,"SEC的用户","secUser","requestCandidateSecUser", - "transferToAnotherSecUser","anotherSecUserId",userApp.secUser?userApp.secUser.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{userApp.appIcon} -{userApp.permission} -{userApp.objectType} -{userApp.objectId} -{userApp.location} - - {buildTransferModal(userApp,targetComponent)} - - ) - -} - - -const renderPermissionSetting = userApp => { - const {UserAppBase} = GlobalComponents - return - - -} - - -class UserAppPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const userApp = this.props.userApp; - const { id,displayName, listAccessCount, objectAccessCount } = userApp - - - - const cardsData = {cardsName:"用户应用程序",cardsFor: "userApp",cardsSource: userApp, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - userApp: state._userApp, -}))(Form.create()(UserAppPreference)) - diff --git a/bizui/src/bizcomponents/userapp/UserApp.preference.less b/bizui/src/bizcomponents/userapp/UserApp.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/userapp/UserApp.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/userapp/UserApp.profile.js b/bizui/src/bizcomponents/userapp/UserApp.profile.js index 873273244..96c878b6a 100644 --- a/bizui/src/bizcomponents/userapp/UserApp.profile.js +++ b/bizui/src/bizcomponents/userapp/UserApp.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './UserApp.preference.less' +import styles from './UserApp.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,21 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (userApp,targetComponent) =>{ - const userContext = null - return ( - -{userApp.id} -{userApp.title} -{userApp.appIcon} -{userApp.permission} -{userApp.objectType} -{userApp.objectId} -{userApp.location} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.UserAppBase.renderItemOfList(item, targetComponents) + } @@ -68,13 +58,14 @@ class UserAppProfile extends Component { const cardsData = {cardsName:"用户应用程序",cardsFor: "userApp",cardsSource: userApp, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -84,7 +75,7 @@ class UserAppProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/userdomain/UserDomain.base.js b/bizui/src/bizcomponents/userdomain/UserDomain.base.js index db8a28605..836df430d 100644 --- a/bizui/src/bizcomponents/userdomain/UserDomain.base.js +++ b/bizui/src/bizcomponents/userdomain/UserDomain.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -48,19 +49,23 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({userDomain,targetComponent})=>{ +const renderItemOfList=(userDomain,targetComponent)=>{ - const {UserDomainService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {userDomain.id} {userDomain.name} - {buildTransferModal(userDomain,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/userdomain/UserDomain.dashboard.js b/bizui/src/bizcomponents/userdomain/UserDomain.dashboard.js index e9565dd41..052395cb8 100644 --- a/bizui/src/bizcomponents/userdomain/UserDomain.dashboard.js +++ b/bizui/src/bizcomponents/userdomain/UserDomain.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(userDomain)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (userDomain) =>defaultSettingListOf(userDomain, optionList) const internalLargeTextOf = (userDomain) =>{ @@ -123,7 +123,7 @@ class UserDomainDashboard extends Component { const cardsData = {cardsName:"用户域",cardsFor: "userDomain", cardsSource: this.props.userDomain,returnURL,displayName, subItems: [ -{name: 'secUserList', displayName:'SEC的用户',type:'secUser',count:secUserCount,addFunction: true, role: 'secUser', metaInfo: secUserListMetaInfo}, +{name: 'secUserList', displayName:'SEC的用户',type:'secUser',count:secUserCount,addFunction: true, role: 'secUser', metaInfo: secUserListMetaInfo, renderItem: GlobalComponents.SecUserBase.renderItemOfList}, ], }; @@ -138,6 +138,8 @@ class UserDomainDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/userdomain/UserDomain.permission.js b/bizui/src/bizcomponents/userdomain/UserDomain.permission.js index e95e17159..1c7799037 100644 --- a/bizui/src/bizcomponents/userdomain/UserDomain.permission.js +++ b/bizui/src/bizcomponents/userdomain/UserDomain.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './UserDomain.preference.less' +import styles from './UserDomain.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/userdomain/UserDomain.preference.js b/bizui/src/bizcomponents/userdomain/UserDomain.preference.js deleted file mode 100644 index f55efce2f..000000000 --- a/bizui/src/bizcomponents/userdomain/UserDomain.preference.js +++ /dev/null @@ -1,350 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './UserDomain.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (userDomain) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (userDomain) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (userDomain) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {UserDomainService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = UserDomainService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (userDomain,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=userDomain.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_userDomain/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (userDomain,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(userDomain,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (userDomain) =>{ - return null -} -const internalRenderExtraFooter = (userDomain) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (userDomain,targetComponent) =>{ - const userContext = null - return ( - -{userDomain.id} -{userDomain.name} - - {buildTransferModal(userDomain,targetComponent)} - - ) - -} - - -const renderPermissionSetting = userDomain => { - const {UserDomainBase} = GlobalComponents - return - - -} - - -class UserDomainPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const userDomain = this.props.userDomain; - const { id,displayName, userWhiteListCount, secUserCount } = userDomain - - - - const cardsData = {cardsName:"用户域",cardsFor: "userDomain",cardsSource: userDomain, - subItems: [ -{name: 'userWhiteListList', displayName:'用户白名单',type:'userWhiteList',count:userWhiteListCount,addFunction: true, role: 'userWhiteList', data: userDomain.userWhiteListList}, - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - userDomain: state._userDomain, -}))(Form.create()(UserDomainPreference)) - diff --git a/bizui/src/bizcomponents/userdomain/UserDomain.preference.less b/bizui/src/bizcomponents/userdomain/UserDomain.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/userdomain/UserDomain.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/userdomain/UserDomain.profile.js b/bizui/src/bizcomponents/userdomain/UserDomain.profile.js index 3671b36f3..c0cfeb0cc 100644 --- a/bizui/src/bizcomponents/userdomain/UserDomain.profile.js +++ b/bizui/src/bizcomponents/userdomain/UserDomain.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './UserDomain.preference.less' +import styles from './UserDomain.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,16 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (userDomain,targetComponent) =>{ - const userContext = null - return ( - -{userDomain.id} -{userDomain.name} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.UserDomainBase.renderItemOfList(item, targetComponents) + } @@ -63,14 +58,15 @@ class UserDomainProfile extends Component { const cardsData = {cardsName:"用户域",cardsFor: "userDomain",cardsSource: userDomain, subItems: [ -{name: 'userWhiteListList', displayName:'用户白名单',type:'userWhiteList',count:userWhiteListCount,addFunction: true, role: 'userWhiteList', data: userDomain.userWhiteListList}, - +{name: 'userWhiteListList', displayName:'用户白名单',type:'userWhiteList',count:userWhiteListCount,addFunction: true, role: 'userWhiteList', renderItem: GlobalComponents.UserWhiteListBase.renderItemOfList}, + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -80,7 +76,7 @@ class UserDomainProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/userdomain/UserDomain.service.js b/bizui/src/bizcomponents/userdomain/UserDomain.service.js index d4004240a..35c559326 100644 --- a/bizui/src/bizcomponents/userdomain/UserDomain.service.js +++ b/bizui/src/bizcomponents/userdomain/UserDomain.service.js @@ -45,14 +45,14 @@ const removeUserWhiteListList = (targetObjectId, parameters) => { const addSecUser = (targetObjectId, parameters) => { - const url = `${PREFIX}userDomainManager/addSecUser/userDomainId/login/mobile/email/pwd/verificationCode/verificationCodeExpire/lastLoginTime/tokensExpr/` + const url = `${PREFIX}userDomainManager/addSecUser/userDomainId/login/mobile/email/pwd/weixinOpenid/weixinAppid/accessToken/verificationCode/verificationCodeExpire/lastLoginTime/tokensExpr/` const userDomainId = targetObjectId const requestParameters = { ...parameters, userDomainId, tokensExpr: 'none' } return postForm({ url,requestParameters}) } const updateSecUser = (targetObjectId, parameters) => { - const url = `${PREFIX}userDomainManager/updateSecUserProperties/userDomainId/id/login/mobile/email/pwd/verificationCode/verificationCodeExpire/lastLoginTime/tokensExpr/` + const url = `${PREFIX}userDomainManager/updateSecUserProperties/userDomainId/id/login/mobile/email/pwd/weixinOpenid/weixinAppid/accessToken/verificationCode/verificationCodeExpire/lastLoginTime/tokensExpr/` const userDomainId = targetObjectId const requestParameters = { ...parameters, userDomainId, tokensExpr: 'none' } return postForm({ url,requestParameters}) diff --git a/bizui/src/bizcomponents/userwhitelist/UserWhiteList.associateform.js b/bizui/src/bizcomponents/userwhitelist/UserWhiteList.associateform.js index 1d1af235c..00db6c57a 100644 --- a/bizui/src/bizcomponents/userwhitelist/UserWhiteList.associateform.js +++ b/bizui/src/bizcomponents/userwhitelist/UserWhiteList.associateform.js @@ -20,7 +20,7 @@ const testValues = {}; const testValues = { userIdentity: 'clariones', userSpecialFunctions: 'tester;ios-spokesperson', - domainId: 'UD000001', + domainId: 'UD00000001', } */ diff --git a/bizui/src/bizcomponents/userwhitelist/UserWhiteList.base.js b/bizui/src/bizcomponents/userwhitelist/UserWhiteList.base.js index a0bf9265b..d657bc3c4 100644 --- a/bizui/src/bizcomponents/userwhitelist/UserWhiteList.base.js +++ b/bizui/src/bizcomponents/userwhitelist/UserWhiteList.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -51,20 +52,24 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({userWhiteList,targetComponent})=>{ +const renderItemOfList=(userWhiteList,targetComponent)=>{ - const {UserWhiteListService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {userWhiteList.id} {userWhiteList.userIdentity} {userWhiteList.userSpecialFunctions} - {buildTransferModal(userWhiteList,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/userwhitelist/UserWhiteList.createform.js b/bizui/src/bizcomponents/userwhitelist/UserWhiteList.createform.js index 92d951972..61d320a0b 100644 --- a/bizui/src/bizcomponents/userwhitelist/UserWhiteList.createform.js +++ b/bizui/src/bizcomponents/userwhitelist/UserWhiteList.createform.js @@ -19,7 +19,7 @@ const testValues = {}; const testValues = { userIdentity: 'clariones', userSpecialFunctions: 'tester;ios-spokesperson', - domainId: 'UD000001', + domainId: 'UD00000001', } */ diff --git a/bizui/src/bizcomponents/userwhitelist/UserWhiteList.dashboard.js b/bizui/src/bizcomponents/userwhitelist/UserWhiteList.dashboard.js index 6798c3e29..ff7e199ef 100644 --- a/bizui/src/bizcomponents/userwhitelist/UserWhiteList.dashboard.js +++ b/bizui/src/bizcomponents/userwhitelist/UserWhiteList.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(userWhiteList)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (userWhiteList) =>defaultSettingListOf(userWhiteList, optionList) const internalLargeTextOf = (userWhiteList) =>{ @@ -138,6 +138,8 @@ class UserWhiteListDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/userwhitelist/UserWhiteList.permission.js b/bizui/src/bizcomponents/userwhitelist/UserWhiteList.permission.js index c53c09db0..d90f6e6f2 100644 --- a/bizui/src/bizcomponents/userwhitelist/UserWhiteList.permission.js +++ b/bizui/src/bizcomponents/userwhitelist/UserWhiteList.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './UserWhiteList.preference.less' +import styles from './UserWhiteList.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/userwhitelist/UserWhiteList.preference.js b/bizui/src/bizcomponents/userwhitelist/UserWhiteList.preference.js deleted file mode 100644 index 34a06ca5c..000000000 --- a/bizui/src/bizcomponents/userwhitelist/UserWhiteList.preference.js +++ /dev/null @@ -1,350 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './UserWhiteList.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (userWhiteList) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (userWhiteList) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (userWhiteList) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {UserWhiteListService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = UserWhiteListService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (userWhiteList,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=userWhiteList.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_userWhiteList/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (userWhiteList,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(userWhiteList,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (userWhiteList) =>{ - return null -} -const internalRenderExtraFooter = (userWhiteList) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (userWhiteList,targetComponent) =>{ - const userContext = null - return ( - -{userWhiteList.id} -{userWhiteList.userIdentity} -{userWhiteList.userSpecialFunctions} - - {buildTransferModal(userWhiteList,targetComponent)} - - ) - -} - - -const renderPermissionSetting = userWhiteList => { - const {UserWhiteListBase} = GlobalComponents - return - - -} - - -class UserWhiteListPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const userWhiteList = this.props.userWhiteList; - const { id,displayName, } = userWhiteList - - - - const cardsData = {cardsName:"用户白名单",cardsFor: "userWhiteList",cardsSource: userWhiteList, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - userWhiteList: state._userWhiteList, -}))(Form.create()(UserWhiteListPreference)) - diff --git a/bizui/src/bizcomponents/userwhitelist/UserWhiteList.preference.less b/bizui/src/bizcomponents/userwhitelist/UserWhiteList.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/userwhitelist/UserWhiteList.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/userwhitelist/UserWhiteList.profile.js b/bizui/src/bizcomponents/userwhitelist/UserWhiteList.profile.js index cb48d15d5..be342aa23 100644 --- a/bizui/src/bizcomponents/userwhitelist/UserWhiteList.profile.js +++ b/bizui/src/bizcomponents/userwhitelist/UserWhiteList.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './UserWhiteList.preference.less' +import styles from './UserWhiteList.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,17 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (userWhiteList,targetComponent) =>{ - const userContext = null - return ( - -{userWhiteList.id} -{userWhiteList.userIdentity} -{userWhiteList.userSpecialFunctions} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.UserWhiteListBase.renderItemOfList(item, targetComponents) + } @@ -64,13 +58,14 @@ class UserWhiteListProfile extends Component { const cardsData = {cardsName:"用户白名单",cardsFor: "userWhiteList",cardsSource: userWhiteList, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -80,7 +75,7 @@ class UserWhiteListProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/view/View.associateform.js b/bizui/src/bizcomponents/view/View.associateform.js index 530ca6fbe..21e39d7c7 100644 --- a/bizui/src/bizcomponents/view/View.associateform.js +++ b/bizui/src/bizcomponents/view/View.associateform.js @@ -20,7 +20,7 @@ const testValues = {}; const testValues = { who: '面试官', assessment: '小伙子不错,值得培养', - interviewTime: '2018-12-20', + interviewTime: '2017-01-24', } */ diff --git a/bizui/src/bizcomponents/view/View.base.js b/bizui/src/bizcomponents/view/View.base.js index 3480c22fa..d2fb0479c 100644 --- a/bizui/src/bizcomponents/view/View.base.js +++ b/bizui/src/bizcomponents/view/View.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -51,21 +52,25 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({view,targetComponent})=>{ +const renderItemOfList=(view,targetComponent)=>{ - const {ViewService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {view.id} {view.who} {view.assessment} { moment(view.interviewTime).format('YYYY-MM-DD')} - {buildTransferModal(view,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/view/View.createform.js b/bizui/src/bizcomponents/view/View.createform.js index dd3c6901b..64392c48a 100644 --- a/bizui/src/bizcomponents/view/View.createform.js +++ b/bizui/src/bizcomponents/view/View.createform.js @@ -19,7 +19,7 @@ const testValues = {}; const testValues = { who: '面试官', assessment: '小伙子不错,值得培养', - interviewTime: '2018-12-24', + interviewTime: '2017-10-31', } */ diff --git a/bizui/src/bizcomponents/view/View.dashboard.js b/bizui/src/bizcomponents/view/View.dashboard.js index ba0a98536..ac9b0b13f 100644 --- a/bizui/src/bizcomponents/view/View.dashboard.js +++ b/bizui/src/bizcomponents/view/View.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(view)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (view) =>defaultSettingListOf(view, optionList) const internalLargeTextOf = (view) =>{ @@ -139,6 +139,8 @@ class ViewDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/view/View.permission.js b/bizui/src/bizcomponents/view/View.permission.js index 8c8243a55..61107899f 100644 --- a/bizui/src/bizcomponents/view/View.permission.js +++ b/bizui/src/bizcomponents/view/View.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './View.preference.less' +import styles from './View.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/view/View.preference.js b/bizui/src/bizcomponents/view/View.preference.js deleted file mode 100644 index 32177fa0a..000000000 --- a/bizui/src/bizcomponents/view/View.preference.js +++ /dev/null @@ -1,351 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './View.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (view) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (view) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (view) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {ViewService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = ViewService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (view,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=view.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_view/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (view,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(view,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (view) =>{ - return null -} -const internalRenderExtraFooter = (view) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (view,targetComponent) =>{ - const userContext = null - return ( - -{view.id} -{view.who} -{view.assessment} -{ moment(view.interviewTime).format('YYYY-MM-DD')} - - {buildTransferModal(view,targetComponent)} - - ) - -} - - -const renderPermissionSetting = view => { - const {ViewBase} = GlobalComponents - return - - -} - - -class ViewPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const view = this.props.view; - const { id,displayName, } = view - - - - const cardsData = {cardsName:"观",cardsFor: "view",cardsSource: view, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - view: state._view, -}))(Form.create()(ViewPreference)) - diff --git a/bizui/src/bizcomponents/view/View.preference.less b/bizui/src/bizcomponents/view/View.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/view/View.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/view/View.profile.js b/bizui/src/bizcomponents/view/View.profile.js index 99a55564a..f2238a1d7 100644 --- a/bizui/src/bizcomponents/view/View.profile.js +++ b/bizui/src/bizcomponents/view/View.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './View.preference.less' +import styles from './View.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,18 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (view,targetComponent) =>{ - const userContext = null - return ( - -{view.id} -{view.who} -{view.assessment} -{ moment(view.interviewTime).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.ViewBase.renderItemOfList(item, targetComponents) + } @@ -65,13 +58,14 @@ class ViewProfile extends Component { const cardsData = {cardsName:"观",cardsFor: "view",cardsSource: view, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -81,7 +75,7 @@ class ViewProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/warehouse/Warehouse.associateform.js b/bizui/src/bizcomponents/warehouse/Warehouse.associateform.js index 0ef58c9a0..31152f030 100644 --- a/bizui/src/bizcomponents/warehouse/Warehouse.associateform.js +++ b/bizui/src/bizcomponents/warehouse/Warehouse.associateform.js @@ -21,9 +21,9 @@ const testValues = { location: '成都龙泉驿飞鹤路20号', contactNumber: '02887654321', totalArea: '187672平方米', - latitude: '40.20817202569889', - longitude: '131.45832692684533', - ownerId: 'RSCC000001', + latitude: '42.73504065694411', + longitude: '131.33070878523782', + ownerId: 'RSCC00000001', } */ diff --git a/bizui/src/bizcomponents/warehouse/Warehouse.base.js b/bizui/src/bizcomponents/warehouse/Warehouse.base.js index b943c6f97..9a6f504cd 100644 --- a/bizui/src/bizcomponents/warehouse/Warehouse.base.js +++ b/bizui/src/bizcomponents/warehouse/Warehouse.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -66,14 +67,16 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({warehouse,targetComponent})=>{ +const renderItemOfList=(warehouse,targetComponent)=>{ - const {WarehouseService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {warehouse.id} {warehouse.location} {warehouse.contactNumber} @@ -82,8 +85,10 @@ const renderItemOfList=({warehouse,targetComponent})=>{ {warehouse.longitude} { moment(warehouse.lastUpdateTime).format('YYYY-MM-DD')} - {buildTransferModal(warehouse,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/warehouse/Warehouse.createform.js b/bizui/src/bizcomponents/warehouse/Warehouse.createform.js index 0ccceba6a..825cf8551 100644 --- a/bizui/src/bizcomponents/warehouse/Warehouse.createform.js +++ b/bizui/src/bizcomponents/warehouse/Warehouse.createform.js @@ -20,9 +20,9 @@ const testValues = { location: '成都龙泉驿飞鹤路20号', contactNumber: '02887654321', totalArea: '187672平方米', - latitude: '41.17036458881215', - longitude: '129.49449691498248', - ownerId: 'RSCC000001', + latitude: '42.75703018288043', + longitude: '131.77925166968112', + ownerId: 'RSCC00000001', } */ diff --git a/bizui/src/bizcomponents/warehouse/Warehouse.dashboard.js b/bizui/src/bizcomponents/warehouse/Warehouse.dashboard.js index 414b61af1..4bd63e991 100644 --- a/bizui/src/bizcomponents/warehouse/Warehouse.dashboard.js +++ b/bizui/src/bizcomponents/warehouse/Warehouse.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(warehouse)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (warehouse) =>defaultSettingListOf(warehouse, optionList) const internalLargeTextOf = (warehouse) =>{ @@ -128,13 +128,13 @@ class WarehouseDashboard extends Component { const cardsData = {cardsName:"仓库",cardsFor: "warehouse", cardsSource: this.props.warehouse,returnURL,displayName, subItems: [ -{name: 'storageSpaceList', displayName:'存货区',type:'storageSpace',count:storageSpaceCount,addFunction: true, role: 'storageSpace', metaInfo: storageSpaceListMetaInfo}, -{name: 'smartPalletList', displayName:'智能托盘',type:'smartPallet',count:smartPalletCount,addFunction: true, role: 'smartPallet', metaInfo: smartPalletListMetaInfo}, -{name: 'supplierSpaceList', displayName:'供应商的空间',type:'supplierSpace',count:supplierSpaceCount,addFunction: true, role: 'supplierSpace', metaInfo: supplierSpaceListMetaInfo}, -{name: 'receivingSpaceList', displayName:'收货区',type:'receivingSpace',count:receivingSpaceCount,addFunction: true, role: 'receivingSpace', metaInfo: receivingSpaceListMetaInfo}, -{name: 'shippingSpaceList', displayName:'发货区',type:'shippingSpace',count:shippingSpaceCount,addFunction: true, role: 'shippingSpace', metaInfo: shippingSpaceListMetaInfo}, -{name: 'damageSpaceList', displayName:'残次货物存放区',type:'damageSpace',count:damageSpaceCount,addFunction: true, role: 'damageSpace', metaInfo: damageSpaceListMetaInfo}, -{name: 'warehouseAssetList', displayName:'仓库资产',type:'warehouseAsset',count:warehouseAssetCount,addFunction: true, role: 'warehouseAsset', metaInfo: warehouseAssetListMetaInfo}, +{name: 'storageSpaceList', displayName:'存货区',type:'storageSpace',count:storageSpaceCount,addFunction: true, role: 'storageSpace', metaInfo: storageSpaceListMetaInfo, renderItem: GlobalComponents.StorageSpaceBase.renderItemOfList}, +{name: 'smartPalletList', displayName:'智能托盘',type:'smartPallet',count:smartPalletCount,addFunction: true, role: 'smartPallet', metaInfo: smartPalletListMetaInfo, renderItem: GlobalComponents.SmartPalletBase.renderItemOfList}, +{name: 'supplierSpaceList', displayName:'供应商的空间',type:'supplierSpace',count:supplierSpaceCount,addFunction: true, role: 'supplierSpace', metaInfo: supplierSpaceListMetaInfo, renderItem: GlobalComponents.SupplierSpaceBase.renderItemOfList}, +{name: 'receivingSpaceList', displayName:'收货区',type:'receivingSpace',count:receivingSpaceCount,addFunction: true, role: 'receivingSpace', metaInfo: receivingSpaceListMetaInfo, renderItem: GlobalComponents.ReceivingSpaceBase.renderItemOfList}, +{name: 'shippingSpaceList', displayName:'发货区',type:'shippingSpace',count:shippingSpaceCount,addFunction: true, role: 'shippingSpace', metaInfo: shippingSpaceListMetaInfo, renderItem: GlobalComponents.ShippingSpaceBase.renderItemOfList}, +{name: 'damageSpaceList', displayName:'残次货物存放区',type:'damageSpace',count:damageSpaceCount,addFunction: true, role: 'damageSpace', metaInfo: damageSpaceListMetaInfo, renderItem: GlobalComponents.DamageSpaceBase.renderItemOfList}, +{name: 'warehouseAssetList', displayName:'仓库资产',type:'warehouseAsset',count:warehouseAssetCount,addFunction: true, role: 'warehouseAsset', metaInfo: warehouseAssetListMetaInfo, renderItem: GlobalComponents.WarehouseAssetBase.renderItemOfList}, ], }; @@ -149,6 +149,8 @@ class WarehouseDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/warehouse/Warehouse.permission.js b/bizui/src/bizcomponents/warehouse/Warehouse.permission.js index 8c4cbaf70..e1566e024 100644 --- a/bizui/src/bizcomponents/warehouse/Warehouse.permission.js +++ b/bizui/src/bizcomponents/warehouse/Warehouse.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './Warehouse.preference.less' +import styles from './Warehouse.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/warehouse/Warehouse.preference.js b/bizui/src/bizcomponents/warehouse/Warehouse.preference.js deleted file mode 100644 index be56d097e..000000000 --- a/bizui/src/bizcomponents/warehouse/Warehouse.preference.js +++ /dev/null @@ -1,354 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './Warehouse.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (warehouse) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (warehouse) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (warehouse) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {WarehouseService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = WarehouseService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (warehouse,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=warehouse.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_warehouse/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (warehouse,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(warehouse,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (warehouse) =>{ - return null -} -const internalRenderExtraFooter = (warehouse) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (warehouse,targetComponent) =>{ - const userContext = null - return ( - -{warehouse.id} -{warehouse.location} -{warehouse.contactNumber} -{warehouse.totalArea} -{warehouse.latitude} -{warehouse.longitude} -{ moment(warehouse.lastUpdateTime).format('YYYY-MM-DD')} - - {buildTransferModal(warehouse,targetComponent)} - - ) - -} - - -const renderPermissionSetting = warehouse => { - const {WarehouseBase} = GlobalComponents - return - - -} - - -class WarehousePreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const warehouse = this.props.warehouse; - const { id,displayName, storageSpaceCount, smartPalletCount, supplierSpaceCount, receivingSpaceCount, shippingSpaceCount, damageSpaceCount, warehouseAssetCount } = warehouse - - - - const cardsData = {cardsName:"仓库",cardsFor: "warehouse",cardsSource: warehouse, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - warehouse: state._warehouse, -}))(Form.create()(WarehousePreference)) - diff --git a/bizui/src/bizcomponents/warehouse/Warehouse.preference.less b/bizui/src/bizcomponents/warehouse/Warehouse.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/warehouse/Warehouse.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/warehouse/Warehouse.profile.js b/bizui/src/bizcomponents/warehouse/Warehouse.profile.js index 84705f616..2d21a738b 100644 --- a/bizui/src/bizcomponents/warehouse/Warehouse.profile.js +++ b/bizui/src/bizcomponents/warehouse/Warehouse.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './Warehouse.preference.less' +import styles from './Warehouse.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,21 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (warehouse,targetComponent) =>{ - const userContext = null - return ( - -{warehouse.id} -{warehouse.location} -{warehouse.contactNumber} -{warehouse.totalArea} -{warehouse.latitude} -{warehouse.longitude} -{ moment(warehouse.lastUpdateTime).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.WarehouseBase.renderItemOfList(item, targetComponents) + } @@ -68,13 +58,14 @@ class WarehouseProfile extends Component { const cardsData = {cardsName:"仓库",cardsFor: "warehouse",cardsSource: warehouse, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -84,7 +75,7 @@ class WarehouseProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.associateform.js b/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.associateform.js index ffd181b43..886e20301 100644 --- a/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.associateform.js +++ b/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.associateform.js @@ -20,7 +20,7 @@ const testValues = {}; const testValues = { name: '叉车', position: '备用件存放区设备库房', - ownerId: 'W000001', + ownerId: 'W00000001', } */ diff --git a/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.base.js b/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.base.js index 14e77e33e..97487fb81 100644 --- a/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.base.js +++ b/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.base.js @@ -1,5 +1,6 @@ import React from 'react' -import { Icon } from 'antd' +import { Icon,Divider } from 'antd' + import { Link } from 'dva/router' import moment from 'moment' import ImagePreview from '../../components/ImagePreview' @@ -7,7 +8,7 @@ import appLocaleName from '../../common/Locale.tool' import BaseTool from '../../common/Base.tool' import GlobalComponents from '../../custcomponents' import DescriptionList from '../../components/DescriptionList' - +const { Description } = DescriptionList const { defaultRenderReferenceCell, defaultRenderBooleanCell, @@ -53,27 +54,27 @@ const displayColumns = [ ] // refernce to https://ant.design/components/list-cn/ -const renderItemOfList=({warehouseAsset,targetComponent})=>{ +const renderItemOfList=(warehouseAsset,targetComponent)=>{ - const {WarehouseAssetService} = GlobalComponents - // const userContext = null + + const userContext = null return ( - +
+ + {warehouseAsset.id} {warehouseAsset.name} {warehouseAsset.position} {warehouseAsset.owner==null?appLocaleName(userContext,"NotAssigned"):`${warehouseAsset.owner.displayName}(${warehouseAsset.owner.id})`} - - showTransferModel(targetComponent,"业主","warehouse",WarehouseAssetService.requestCandidateOwner, - WarehouseAssetService.transferToAnotherOwner,"anotherOwnerId",warehouseAsset.owner?warehouseAsset.owner.id:"")} - style={{fontSize: 20,color:"red"}} /> { moment(warehouseAsset.lastUpdateTime).format('YYYY-MM-DD')} - {buildTransferModal(warehouseAsset,targetComponent)} + + +
) } diff --git a/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.createform.js b/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.createform.js index 7b6c07fd8..4acbc1c25 100644 --- a/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.createform.js +++ b/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.createform.js @@ -19,7 +19,7 @@ const testValues = {}; const testValues = { name: '叉车', position: '备用件存放区设备库房', - ownerId: 'W000001', + ownerId: 'W00000001', } */ diff --git a/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.dashboard.js b/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.dashboard.js index 442f42720..caea972be 100644 --- a/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.dashboard.js +++ b/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.dashboard.js @@ -27,13 +27,12 @@ const {aggregateDataset,calcKey, defaultHideCloseTrans, defaultExecuteTrans,defaultHandleTransferSearch,defaultShowTransferModel, defaultRenderExtraHeader, defaultSubListsOf,defaultRenderAnalytics, - defaultRenderExtraFooter,renderForTimeLine,renderForNumbers,defaultQuickFunctions + defaultRenderExtraFooter,renderForTimeLine,renderForNumbers, + defaultQuickFunctions, defaultRenderSubjectList, }= DashboardTool - - const { Description } = DescriptionList; const { TabPane } = Tabs const { RangePicker } = DatePicker @@ -50,6 +49,7 @@ const optionList =(warehouseAsset)=>{return [ const buildTransferModal = defaultBuildTransferModal const showTransferModel = defaultShowTransferModel +const internalRenderSubjectList = defaultRenderSubjectList const internalSettingListOf = (warehouseAsset) =>defaultSettingListOf(warehouseAsset, optionList) const internalLargeTextOf = (warehouseAsset) =>{ @@ -145,6 +145,8 @@ class WarehouseAssetDashboard extends Component { const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter const renderAnalytics = this.props.renderAnalytics || defaultRenderAnalytics const quickFunctions = this.props.quickFunctions || internalQuickFunctions + const renderSubjectList = this.props.renderSubjectList || internalRenderSubjectList + return ( ) diff --git a/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.permission.js b/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.permission.js index f3de1d6c4..2f4f6b5fd 100644 --- a/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.permission.js +++ b/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.permission.js @@ -11,7 +11,7 @@ import numeral from 'numeral' import DashboardTool from '../../common/Dashboard.tool' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './WarehouseAsset.preference.less' +import styles from './WarehouseAsset.profile.less' import DescriptionList from '../../components/DescriptionList'; import GlobalComponents from '../../custcomponents'; diff --git a/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.preference.js b/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.preference.js deleted file mode 100644 index ed9cf5be8..000000000 --- a/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.preference.js +++ /dev/null @@ -1,357 +0,0 @@ - - -import React, { Component } from 'react' -import FontAwesome from 'react-fontawesome'; -import { connect } from 'dva' -import moment from 'moment' -import BooleanOption from 'components/BooleanOption'; -import { Row, Col, Icon, Card, Tabs, Table, Radio, DatePicker, Tooltip, Menu, Dropdown,Badge, Switch,Select,Form,AutoComplete,Modal } from 'antd' -import { Link, Route, Redirect} from 'dva/router' -import numeral from 'numeral' -import { - ChartCard, yuan, MiniArea, MiniBar, MiniProgress, Field, Bar, Pie, TimelineChart, -} from '../../components/Charts' -import Trend from '../../components/Trend' -import NumberInfo from '../../components/NumberInfo' -import { getTimeDistance } from '../../utils/utils' -import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './WarehouseAsset.preference.less' -import DescriptionList from '../../components/DescriptionList'; -import ImagePreview from '../../components/ImagePreview'; -import GlobalComponents from '../../custcomponents'; -import PermissionSetting from '../../permission/PermissionSetting' -import appLocaleName from '../../common/Locale.tool' -const { Description } = DescriptionList; -const { TabPane } = Tabs -const { RangePicker } = DatePicker -const { Option } = Select - -const topColResponsiveProps = { - xs: 8, - sm: 6, - md: 6, - lg: 4, - xl: 4, - style: { marginBottom: 24 }, -} - - -const internalImageListOf = (warehouseAsset) =>{ - const userContext = null - const imageList = [ - ] - const filteredList = imageList.filter((item)=>item.imageLocation!=null) - if(filteredList.length===0){ - return null - } - - return( - { - filteredList.map((item,index)=>({item.title})) - } ) - -} - -const internalSettingListOf = (warehouseAsset) =>{ - const userContext = null - const optionList = [ - ] - - if(optionList.length===0){ - return null - } - return( - - { - optionList.map((item)=> - - {item.title} - ) - } - - - ) - - - -} - -const internalLargeTextOf = (warehouseAsset) =>{ - - return null - - -} - -/////////////////////////////////////// BUILD FOR TRANSFERRING TO ANOTHER OBJECT//////////////////////////////////////////////// - -const handleTransferSearch =(targetComponent,filterKey,newRequest)=>{ - const {WarehouseAssetService} = GlobalComponents; - - const parameters = newRequest||targetComponent.state - - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - - } = parameters - - console.log("current state", parameters) - - const id = "";//not used for now - const pageNo = 1; - const candidateReferenceService = WarehouseAssetService[candidateServiceName] - if(!candidateReferenceService){ - console.log("current state", parameters) - return; - } - //get a function for fetching the candidate reference list - const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); - console.log(future); - future.then(candidateReferenceList=>{ - targetComponent.setState({ - ...parameters, - candidateReferenceList, - transferModalVisiable:true,transferModalTitle:appLocaleName(userContext,"Reassign")+targetLocalName+">" - - }) - - }) - -} -// onClick={()=>showTransferModel(targetComponent,{appLocaleName(userContext,"City")},"city","requestCandidateDistrict","transferToAnotherDistrict")} - -const showTransferModel = (targetComponent,targetLocalName, - candidateObjectType,candidateServiceName, transferServiceName, transferTargetParameterName,currentValue) => { - - const filterKey = "" - - const newRequest = {targetLocalName,candidateObjectType,candidateServiceName,transferServiceName,transferTargetParameterName,currentValue} - console.log("showTransferModel new state", newRequest) - //targetComponent.setState(newState); - handleTransferSearch(targetComponent,filterKey,newRequest) -} - -const hideCloseTrans = (targetComponent) =>{ - targetComponent.setState({transferModalVisiable:false}) - -} - -const executeTrans = (warehouseAsset,targetComponent) =>{ - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - const { - - candidateServiceName, - candidateObjectType, - targetLocalName, - transferServiceName - } = targetComponent.state - - const {dispatch} = targetComponent.props - - validateFieldsAndScroll((error, values) => { - console.log("error", values) - - const parameters = {...values} - const id=warehouseAsset.id; - const serviceNameToCall = transferServiceName; - - const payload = {parameters,id,serviceNameToCall} - - //targetComponent.setState({transferModalVisiable:false}) - dispatch({type:"_warehouseAsset/doJob",payload: payload}) - - targetComponent.setState({transferModalVisiable:false}) - - }) - - -} - - -const buildTransferModal = (warehouseAsset,targetComponent) => { - - - const {transferModalVisiable,targetLocalName,transferModalTitle, - candidateReferenceList,transferTargetParameterName,currentValue} = targetComponent.state - const { getFieldDecorator, validateFieldsAndScroll, getFieldsError } = targetComponent.props.form - - - if(!candidateReferenceList||!candidateReferenceList.candidates){ - return null; - } - - - const formItemLayout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - } - - return( - -executeTrans(warehouseAsset,targetComponent)} - onCancel={()=>hideCloseTrans(targetComponent)} - - > - -
- - - - - {getFieldDecorator(transferTargetParameterName, { - rules: [{ required: true, message: appLocaleName(userContext,"PleaseSearch") }], - initialValue: currentValue - })( - handleTransferSearch(targetComponent,value)} - > - {candidateReferenceList.candidates.map(item=>{ - return (); - })} - - - )} - - -
- - -
) - - -} - - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - -const internalRenderExtraHeader = (warehouseAsset) =>{ - return null -} -const internalRenderExtraFooter = (warehouseAsset) =>{ - return null -} -const internalSubListsOf = (cardsData) =>{ - const {id} = cardsData.cardsSource; - const userContext = null - return ( - - {cardsData.subItems.sort((x,y)=>x.displayName.localeCompare(y.displayName, 'zh-CN')).map((item)=>( - -

 {appLocaleName(userContext,"Manage")} - - {item.addFunction&&( {appLocaleName(userContext,"Add")})} - -

-
- ))} -
) -} - -const internalSummaryOf = (warehouseAsset,targetComponent) =>{ - const userContext = null - return ( - -{warehouseAsset.id} -{warehouseAsset.name} -{warehouseAsset.position} -{warehouseAsset.owner==null?appLocaleName(userContext,"NotAssigned"):warehouseAsset.owner.displayName} - - showTransferModel(targetComponent,"业主","warehouse","requestCandidateOwner", - "transferToAnotherOwner","anotherOwnerId",warehouseAsset.owner?warehouseAsset.owner.id:"")} - style={{fontSize: 20,color:"red"}} /> - -{ moment(warehouseAsset.lastUpdateTime).format('YYYY-MM-DD')} - - {buildTransferModal(warehouseAsset,targetComponent)} - - ) - -} - - -const renderPermissionSetting = warehouseAsset => { - const {WarehouseAssetBase} = GlobalComponents - return - - -} - - -class WarehouseAssetPreference extends Component { - - state = { - transferModalVisiable: false, - candidateReferenceList: {}, - candidateServiceName:"", - candidateObjectType:"", - targetLocalName:"", - transferServiceName:"", - currentValue:"", - transferTargetParameterName:"" - - - } - componentDidMount() { - - } - - - render() { - // eslint-disable-next-line max-len - const warehouseAsset = this.props.warehouseAsset; - const { id,displayName, } = warehouseAsset - - - - const cardsData = {cardsName:"仓库资产",cardsFor: "warehouseAsset",cardsSource: warehouseAsset, - subItems: [ - - ], - }; - //{appLocaleName(userContext,"EveryPartCanBeCustomed")}_features="custom"{appLocaleName(userContext,"Getacustomsample")} - - const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const settingListOf = this.props.settingListOf || internalSettingListOf - const imageListOf = this.props.imageListOf || internalImageListOf - const subListsOf = this.props.subListsOf || internalSubListsOf - const largeTextOf = this.props.largeTextOf ||internalLargeTextOf - const summaryOf = this.props.summaryOf || internalSummaryOf - const renderExtraFooter = this.props.renderExtraFooter || internalRenderExtraFooter - /* - {settingListOf(cardsData.cardsSource)} - {imageListOf(cardsData.cardsSource)} - {subListsOf(cardsData)} - {largeTextOf(cardsData.cardsSource)} - */ - return ( - - - {renderPermissionSetting(cardsData.cardsSource)} - {renderExtraHeader(cardsData.cardsSource)} -
- - {subListsOf(cardsData)} - -
-
- ) - } -} - -export default connect(state => ({ - warehouseAsset: state._warehouseAsset, -}))(Form.create()(WarehouseAssetPreference)) - diff --git a/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.preference.less b/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.preference.less deleted file mode 100644 index ae2c9b596..000000000 --- a/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.preference.less +++ /dev/null @@ -1,3 +0,0 @@ -@import "../../common/Preference.tool.less"; - - diff --git a/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.profile.js b/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.profile.js index 9327e8341..1d9ac9e1d 100644 --- a/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.profile.js +++ b/bizui/src/bizcomponents/warehouseasset/WarehouseAsset.profile.js @@ -4,12 +4,12 @@ import React, { Component } from 'react' import FontAwesome from 'react-fontawesome'; import { connect } from 'dva' import moment from 'moment' - +import GlobalComponents from '../../custcomponents'; import {Form } from 'antd' import { Link } from 'dva/router' import PageHeaderLayout from '../../layouts/PageHeaderLayout' -import styles from './WarehouseAsset.preference.less' +import styles from './WarehouseAsset.profile.less' import DescriptionList from '../../components/DescriptionList'; import DashboardTool from '../../common/Dashboard.tool' @@ -17,7 +17,7 @@ import appLocaleName from '../../common/Locale.tool' const { defaultRenderExtraHeader, - defaultSubListsOf, + defaultSubListsOf, defaultRenderSettingList, }= DashboardTool @@ -27,6 +27,7 @@ const internalRenderExtraHeader = defaultRenderExtraHeader const internalSubListsOf = defaultSubListsOf +const internalRenderSettingList = defaultRenderSettingList const internalRenderTitle = (cardsData,targetComponent) =>{ const linkComp=cardsData.returnURL? :null @@ -34,18 +35,10 @@ const internalRenderTitle = (cardsData,targetComponent) =>{ } - -const internalSummaryOf = (warehouseAsset,targetComponent) =>{ - const userContext = null - return ( - -{warehouseAsset.id} -{warehouseAsset.name} -{warehouseAsset.position} -{ moment(warehouseAsset.lastUpdateTime).format('YYYY-MM-DD')} +const internalSummaryOf = (item, targetComponents)=>{ - - ) + return GlobalComponents.WarehouseAssetBase.renderItemOfList(item, targetComponents) + } @@ -65,13 +58,14 @@ class WarehouseAssetProfile extends Component { const cardsData = {cardsName:"仓库资产",cardsFor: "warehouseAsset",cardsSource: warehouseAsset, subItems: [ - + ], }; const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader - const subListsOf = this.props.subListsOf || internalSubListsOf + const summaryOf = this.props.summaryOf || internalSummaryOf + const renderSettingList = this.props.renderSettingList || internalRenderSettingList return ( @@ -81,7 +75,7 @@ class WarehouseAssetProfile extends Component { wrapperClassName={styles.advancedForm} > {renderExtraHeader(cardsData.cardsSource)} - {subListsOf(cardsData)} + {renderSettingList(cardsData)}
) } diff --git a/bizui/src/common/Dashboard.tool.js b/bizui/src/common/Dashboard.tool.js index bb94c9eb7..f288a07f7 100644 --- a/bizui/src/common/Dashboard.tool.js +++ b/bizui/src/common/Dashboard.tool.js @@ -7,19 +7,12 @@ import { Col, Icon, Card, - Tabs, - Table, - Radio, - DatePicker, Tooltip, - Menu, - Dropdown, - Badge, Switch, Select, Form, AutoComplete, - Modal + Modal,Divider,Collapse } from 'antd'; import styles from './Dashboard.tool.less'; import ImagePreview from '../components/ImagePreview'; @@ -31,22 +24,17 @@ import moment from 'moment'; import appLocaleName from './Locale.tool'; import { ChartCard, - yuan, MiniArea, MiniBar, - MiniProgress, - Field, - Bar, - Pie, - TimelineChart, + } from 'components/Charts'; import { PREFIX } from '../axios/tools' import echarts from 'echarts'; import Themes from './Dashboard.echartstheme'; -import { isWeekend } from 'date-fns'; +const {Panel} = Collapse; //get more style from https://echarts.baidu.com/theme-builder/ echarts.registerTheme('bizTheme2', Themes.bizTheme); //please do not use defaultTheme, this is a big trap for developers @@ -63,6 +51,16 @@ const topColResponsiveProps = { style: { marginBottom: 24, marginTop: 24 }, }; +const wholeLineColProps = { + xs: 24, + sm: 24, + md: 24, + lg: 24, + xl: 24, + style: { marginBottom: 24, marginTop: 24}, +}; + + const renderForNumbers = aggregatedData => { if (!aggregatedData) { return null; @@ -189,7 +187,7 @@ const renderForTimeLine = aggregatedData => { if (!data.dataArray) { return null; } - if (data.dataArray.length == 0) { + if (data.dataArray.length === 0) { return null; } const option = { @@ -405,7 +403,7 @@ const defaultLargeTextOf = mainObject => { //TODO: repalce with service const defaultHandleTransferSearch = (targetComponent, filterKey, newRequest) => { const parameters = newRequest || targetComponent.state; - console.log('current state', newRequest); + const { candidateServiceFunc, candidateObjectType, @@ -413,7 +411,7 @@ const defaultHandleTransferSearch = (targetComponent, filterKey, newRequest) => transferServiceFunc, } = parameters; - console.log('current state', parameters); + const id = ''; //not used for now const pageNo = 1; @@ -422,7 +420,7 @@ const defaultHandleTransferSearch = (targetComponent, filterKey, newRequest) => console.log('candidateReferenceService current state, not working', parameters); return; } - //get a function for fetching the candidate reference list + // get a function for fetching the candidate reference list const future = candidateReferenceService(candidateObjectType, id, filterKey, pageNo); future.then(candidateReferenceList => { @@ -564,6 +562,55 @@ const defaultRenderAnalytics= mainObject => { ); }; +const legalListForDisplay=(targetObject, listItem)=>{ + + if(!targetObject){ + return false + } + if(!listItem){ + return false + } + if(!listItem.name){ + return false + } + if(!targetObject[listItem.name]){ + return false + } + + return true + +} + +const defaultRenderSubjectList = cardsData => { + + // listItem.renderItem(item) + const targetObject = cardsData.cardsSource + return ( + + + {cardsData.subItems + + .filter(listItem=>legalListForDisplay(targetObject,listItem)) + .map(listItem => ( + + + + + + { + + targetObject[listItem.name].map(item=>(listItem.renderItem(item))) + } + + + + + ))} + + + ); +}; + const defaultRenderExtraFooter = mainObject => { return null; }; @@ -665,6 +712,52 @@ const defaultHideCloseTrans = targetComponent => { targetComponent.setState({ transferModalVisiable: false }); }; +const renderTitle=(listItem,cardsData)=>{ + const {id} = cardsData.cardsSource + return
{listItem.displayName}({listItem.count}) + + + +
+ +} + +const renderListContent=(targetObject, listItem)=>{ + + const listContent = targetObject[listItem.name]; + if(!listContent){ + return (
稍等...
) + } + return listContent.map(item=>(listItem.renderItem(item))) + +} +const defaultRenderSettingList = cardsData => { + + // listItem.renderItem(item) + const targetObject = cardsData.cardsSource + + return ( + + + {cardsData.subItems + + + .map((listItem) => ( + + + { + renderListContent(targetObject,listItem,cardsData) + } + + + ))} + + + ); +}; + + + const DashboardTool = { aggregateDataset, calcKey, @@ -680,7 +773,9 @@ const DashboardTool = { defaultSubListsOf, defaultRenderExtraFooter, renderForTimeLine, - renderForNumbers,defaultQuickFunctions + renderForNumbers,defaultQuickFunctions,defaultRenderSubjectList,defaultRenderSettingList, }; export default DashboardTool; + + diff --git a/bizui/src/common/Locale.tool.js b/bizui/src/common/Locale.tool.js index ebcc0b56d..9e290ea22 100644 --- a/bizui/src/common/Locale.tool.js +++ b/bizui/src/common/Locale.tool.js @@ -157,14 +157,14 @@ const determinLocale = userContext => { const userLang = navigator.language || navigator.userLanguage; const trimedLocale = userLang.replace('-', ''); if (isLegalLocale(trimedLocale)) { - return trimedLocale; + return defaultLocale; } return defaultLocale; } - + const userLocale = userContext.userLocale; if (isLegalLocale(userLocale)) { - return userLocale; + return defaultLocale; } return defaultLocale; diff --git a/bizui/src/index.ejs b/bizui/src/index.ejs index d59f16077..59491257e 100644 --- a/bizui/src/index.ejs +++ b/bizui/src/index.ejs @@ -5,7 +5,7 @@ - 双链小超全流程供应链系统@V190403T1129 + 双链小超全流程供应链系统@V190613T1817 diff --git a/bizui/src/utils/modeltool.js b/bizui/src/utils/modeltool.js index 2c6636e96..8e920d806 100644 --- a/bizui/src/utils/modeltool.js +++ b/bizui/src/utils/modeltool.js @@ -59,12 +59,21 @@ const setupModel = ({ dispatch, history, location, modelName }) => { dispatch({ type: 'view', payload: { id, pathname } }) return } + + + const profilematch = pathToRegexp(`/${modelName}/:id/profile`).exec(pathname) + if (profilematch) { + const id = profilematch[1] + dispatch({ type: 'view', payload: { id, pathname } }) + return + } const editDetailMatch = pathToRegexp(`/${modelName}/:id/editDetail`).exec(pathname) if (editDetailMatch) { const id = editDetailMatch[1] dispatch({ type: 'view', payload: { id, pathname } }) return } + const viewDetailMatch = pathToRegexp(`/${modelName}/:id/viewDetail`).exec(pathname) if (viewDetailMatch) { const id = viewDetailMatch[1] @@ -83,7 +92,7 @@ const setupModel = ({ dispatch, history, location, modelName }) => { if (othermatch) { const id = othermatch[1] dispatch({ type: 'view', payload: { id, pathname } }) - return + } } diff --git a/cleangit.sh b/cleangit.sh index 136c57a1a..0344ef80e 100644 --- a/cleangit.sh +++ b/cleangit.sh @@ -5,8 +5,6 @@ git commit -m"commit for removing extra files" git pull git push git filter-branch --force --index-filter 'git rm -r —cached --ignore-unmatch bizcore/WEB-INF/classes' --prune-empty --tag-name-filter cat -- --all -git filter-branch --force --index-filter 'git rm -r —cached --ignore-unmatch bizcore/WEB-INF/classes/META-INF/retailscm_mysql.sql' --prune-empty --tag-name-filter cat -- --all -git filter-branch --force --index-filter 'git rm -r —cached --ignore-unmatch bizcore/WEB-INF/retailscm_core_src/META-INF/retailscm_mysql.sql' --prune-empty --tag-name-filter cat -- --all git filter-branch --force --index-filter 'git rm -r —cached --ignore-unmatch bizcore/.gradle' --prune-empty --tag-name-filter cat -- --all git filter-branch --force --index-filter 'git rm -r —cached --ignore-unmatch bizcore/WEB-INF/caf_custom_src/META-INF/infra.properties' --prune-empty --tag-name-filter cat -- --all git filter-branch --force --index-filter 'git rm -r —cached --ignore-unmatch bizcore/WEB-INF/lib' --prune-empty --tag-name-filter cat -- --all diff --git a/frontend-sync.sh b/frontend-sync.sh index 62147a72b..870a47b26 100644 --- a/frontend-sync.sh +++ b/frontend-sync.sh @@ -1,8 +1,7 @@ MODELNAME=retailscm +DEST_HOST=philip@demo.doublechaintech.com java -jar ~/githome/splitter.jar ${MODELNAME} cd ~/githome/${MODELNAME}-biz-suite/bizui&& yarn install && yarn build && cd ../../ -cd ~/githome/${MODELNAME}-biz-suite/bizui && rsync -avz dist/* philip@demo2.doublechaintech.com:~/resin-3.1.12/webapps/ROOT/admin/${MODELNAME}/ - - +cd ~/githome/${MODELNAME}-biz-suite/bizui && rsync -avz dist/* ${DEST_HOST}:~/resin-3.1.12/webapps/ROOT/admin/${MODELNAME}/ diff --git a/java-sync.sh b/java-sync.sh index 238bae51b..e3a4118cd 100644 --- a/java-sync.sh +++ b/java-sync.sh @@ -1,8 +1,10 @@ MODELNAME=retailscm +DEST_HOST=philip@demo.doublechaintech.com +cd ~/githome/${MODELNAME}-biz-suite/ && rm -rf bizcore/WEB-INF/${MODELNAME}_core_src java -jar ~/githome/splitter.jar ${MODELNAME} # cd ~/githome/${MODELNAME}-biz-suite/&& git pull --allow-unrelated-histories && cd ../ cd ~/githome/${MODELNAME}-biz-suite/bizcore&& gradle classes && cd ../../ -cd ~/githome/${MODELNAME}-biz-suite/ && rsync -avz bizcore/* philip@demo2.doublechaintech.com:~/resin-3.1.12/webapps/${MODELNAME}/ +cd ~/githome/${MODELNAME}-biz-suite/ && rsync -avz bizcore/* ${DEST_HOST}:~/resin-3.1.12/webapps/${MODELNAME}/ diff --git a/retailscm-debug.txt b/retailscm-debug.txt index 8d1a2ce78..033eba8e1 100644 --- a/retailscm-debug.txt +++ b/retailscm-debug.txt @@ -138,17 +138,17 @@ Telephone|电话 Owner|业主 Retail Store Country Center|双链小超全国运营中心 City Service Center|城市服务中心 -Creation|创建 Create|创建 -Investment Invitation|招商 -Invite Investment|邀请投资 -Franchising|加盟 +Create|创建 +Invite Investment|Invite Investment +Invite Investment|Invite Investment +Franchise|特许经营 Franchise|特许经营 -Decoration|装修 Decorate|装修 -Opening|开业 +Decorate|装修 +Open|开放 Open|开放 -Closing|关闭 +Close|关闭 Close|关闭 Founded|成立 Latitude|纬度 @@ -191,15 +191,15 @@ Consumer Order|消费者订单 Id|序号 Title|头衔 Consumer|消费者 -Confirmation|确认 Confirm|确认 -Approval|验收 +Confirm|确认 +Approve|批准 Approve|批准 -Processing|处理 Process|过程 -Shipment|装运 +Process|过程 +Ship|船 Ship|船 -Delivery|送货 +Deliver|交付 Deliver|交付 Store|商场 Last Update Time|最后更新时间 @@ -339,17 +339,17 @@ Buyer|买方 Seller|卖方 Title|头衔 Total Amount|总金额 -Confirmation|确认 Confirm|确认 -Approval|验收 +Confirm|确认 +Approve|批准 Approve|批准 -Processing|处理 Process|过程 -Picking|捡货 +Process|过程 Pick|选择 -Shipment|装运 +Pick|选择 +Ship|船 Ship|船 -Delivery|送货 +Deliver|交付 Deliver|交付 Last Update Time|最后更新时间 Current Status|当前状态 @@ -411,17 +411,17 @@ Buyer|买方 Seller|卖方 Title|头衔 Total Amount|总金额 -Confirmation|确认 Confirm|确认 -Approval|验收 +Confirm|确认 +Approve|批准 Approve|批准 -Processing|处理 Process|过程 -Picking|捡货 +Process|过程 Pick|选择 -Shipment|装运 +Pick|选择 +Ship|船 Ship|船 -Delivery|送货 +Deliver|交付 Deliver|交付 Last Update Time|最后更新时间 Current Status|当前状态 @@ -552,7 +552,7 @@ Transport Task|运输任务 Retail Store|双链小超 Biz Order|订单 Retail Store Order|生超的订单 -Packaging|包装 +Pack|包 Pack|包 Current Status|当前状态 Version|版本 @@ -711,13 +711,13 @@ Name|名称 Accounting Document Date|会计凭证日期 Accounting Period|会计期间 Document Type|文档类型 -Creation|创建 Create|创建 -Confirmation|确认 +Create|创建 +Confirm|确认 Confirm|确认 -Auditing|审计 Audit|审计 -Posting|过账 +Audit|审计 +Post|帖子 Post|帖子 Current Status|当前状态 Version|版本 @@ -753,11 +753,11 @@ Received By|受 Voucher Type|凭证类型 Voucher Image|凭证图像 Belongs To|属于 -Creation|创建 Create|创建 -Confirmation|确认 +Create|创建 Confirm|确认 -Auditing|审计 +Confirm|确认 +Audit|审计 Audit|审计 Current Status|当前状态 Version|版本 @@ -905,19 +905,19 @@ Occupation|职业 Responsible For|负责 Current Salary Grade|目前工资等级 Salary Account|工资账户 -Job Application|工作申请 Apply Job|申请的工作 -Profession Interview|专业面试 +Apply Job|申请的工作 +Interview With Profession|采访的职业 Interview With Profession|采访的职业 -Hr Interview|人力资源部面试 Interview By Hr|面试由人力资源 -Offer Approval|审批工作要约 +Interview By Hr|面试由人力资源 +Approve Offer|通过提供 Approve Offer|通过提供 -Offer Acceptance|接受工作要约 Accept Offer|接受报价 -Employee Boarding|员工入职 +Accept Offer|接受报价 +Board Employee|董事会员工 Board Employee|董事会员工 -Termination|雇佣终止 +Terminate|终止 Terminate|终止 Last Update Time|最后更新时间 Current Status|当前状态 @@ -989,7 +989,7 @@ Employee Company Training|员工参与的公司培训 Id|序号 Employee|员工 Training|训练 -Scoring|评分 +Score|分数 Score|分数 Current Status|当前状态 Version|版本 @@ -1066,7 +1066,7 @@ Personal Tax|个人所得税 Social Security|社会保险 Housing Found|住房公积金 Job Insurance|失业保险 -Paying Off|工资支付 +PayOff|回报 PayOff|回报 Current Status|当前状态 Version|版本 @@ -1093,11 +1093,14 @@ Login|登录 Mobile|手机 Email|电子邮件 Pwd|PWD +Weixin Openid|Weixin Openid +Weixin Appid|Weixin Appid +Access Token|访问令牌 Verification Code|验证码 Verification Code Expire|验证码过期 Last Login Time|最后登录时间 Domain|域 -Blocking|屏蔽 +Block|屏蔽 Block|屏蔽 Current Status|当前状态 Version|版本 diff --git a/ui-and-backend-sync.sh b/ui-and-backend-sync.sh index d4c7d285b..7fa02ad1b 100644 --- a/ui-and-backend-sync.sh +++ b/ui-and-backend-sync.sh @@ -1,10 +1,12 @@ MODELNAME=retailscm +DEST_HOST=philip@demo.doublechaintech.com +cd ~/githome/${MODELNAME}-biz-suite/ && rm -rf bizcore/WEB-INF/${MODELNAME}_core_src java -jar ~/githome/splitter.jar ${MODELNAME} # cd ~/githome/${MODELNAME}-biz-suite/&& git pull --allow-unrelated-histories && cd ../ cd ~/githome/${MODELNAME}-biz-suite/bizcore&& ~/.sdkman/candidates/gradle/5.2.1/bin/gradle classes && cd ../../ -cd ~/githome/${MODELNAME}-biz-suite/ && rsync -avz bizcore/* philip@demo2.doublechaintech.com:~/resin-3.1.12/webapps/${MODELNAME}/ -ssh philip@demo2.doublechaintech.com "mysql -uroot -p0254891276 -h 127.0.0.1 < resin-3.1.12/webapps/${MODELNAME}/WEB-INF/${MODELNAME}_core_src/META-INF/${MODELNAME}_mysql.sql" +cd ~/githome/${MODELNAME}-biz-suite/ && rsync -avz bizcore/* ${DEST_HOST}:~/resin-3.1.12/webapps/${MODELNAME}/ +ssh ${DEST_HOST} "mysql -uroot -p0254891276 -h 127.0.0.1 < resin-3.1.12/webapps/${MODELNAME}/WEB-INF/${MODELNAME}_core_src/META-INF/${MODELNAME}_mysql.sql" cd ~/githome/${MODELNAME}-biz-suite/bizui&& yarn install && yarn build && cd ../../ -cd ~/githome/${MODELNAME}-biz-suite/bizui && rsync -avz dist/* philip@demo2.doublechaintech.com:~/resin-3.1.12/webapps/ROOT/admin/${MODELNAME}/ +cd ~/githome/${MODELNAME}-biz-suite/bizui && rsync -avz dist/* ${DEST_HOST}:~/resin-3.1.12/webapps/ROOT/admin/${MODELNAME}/ diff --git a/upgrade-ui-framework.sh b/upgrade-ui-framework.sh index 65173151e..3d49bb39e 100644 --- a/upgrade-ui-framework.sh +++ b/upgrade-ui-framework.sh @@ -1,4 +1,15 @@ PROJ_DIR=`pwd` -cd ~/githome/skynet-react-framework/src/ && cp -Ra common launcher permission components ${PROJ_DIR}/bizui/src/ +cd ~/githome/skynet-react-framework/ && git pull --allow-unrelated-histories +cd ~/githome/skynet-react-framework/src/ && cp -Ra common launcher permission components utils ${PROJ_DIR}/bizui/src/ cd ${PROJ_DIR} + + + + + + + + + +